Поиск по сайту:

Преобразование пакетов Arch Linux в формат AppImage

Arch2appimage — скрипт Python для преобразования любого пакета Arch Linux в AppImage.

Мы уже обсуждали, как конвертировать пакеты DEB в пакеты Arch Linux с помощью утилиты Debtap и как использовать Alien для преобразования пакетов Linux в различные форматы. Сегодня мы обсудим еще один инструмент конвертера пакетов Linux под названием Arch2appimage. В этом руководстве мы кратко представим Arch2appimage, объясним, как его установить в Linux, и покажем, как конвертировать пакеты Arch Linux в формат AppImage с помощью Arch2appimage.

Что такое Arch2appimage?

Arch2appimage — это скрипт Python для преобразования любого пакета Arch Linux (официального/AUR) в формат AppImage. Arch2appimage загружает исходный код AUR, компилирует его и, наконец, преобразует пакет в исполняемый файл AppImage.

Arch2appimage упаковывает данный пакет в формат AppImage, включая все необходимые зависимости. Он включает в себя не только зависимости, но и зависимости от зависимостей для лучшей совместимости.

Зачем мне конвертировать пакет Arch Linux в формат appimage? Вы можете свернуть. AUR (Arch User Repository) — это неофициальный, управляемый сообществом и крупнейший репозиторий программного обеспечения, в котором размещаются созданные пользователями пакеты Arch Linux. В AUR есть все виды пакетов. Вы можете найти интересный пакет, доступный только в AUR, и захотеть использовать его на другой платформе Linux, например Fedora. Здесь на помощь приходит утилита Arch2Appimage.

Используя скрипт Arch2Appimage, вы можете легко преобразовать файл пакета Arch Linux в формат AppImage без особых хлопот. Весьма полезно упаковать один пакет и запустить его в другом дистрибутиве, например Fedora, Debian, openSUSE или любом дистрибутиве Linux, поддерживающем формат AppImage.

Как вы, возможно, уже знаете, AppImage — один из популярных универсальных форматов пакетов. В отличие от форматов пакетов, специфичных для конкретной платформы, таких как .pkg, .deb, .rpm и т. д., файл AppImage полностью переносим, и AppImages можно запускать практически в любой системе Linux.

Обратите внимание, что для Arch2appimage требуется Arch Linux и его варианты, такие как EndeavourOS или Manjaro Linux. Потому что для загрузки пакетов он использует Yay. Однако разработчик говорит, что вы можете изменить сценарий для использования вашего компилятора, если соблюдаются зависимости.

Arch2appimage написан на Python, а исходный код доступен бесплатно на GitHub.

Установите Arch2appimage в Arch Linux

Чтобы иметь возможность запускать Arch2appimage в вашей системе Arch Linux, убедитесь, что у вас установлен Python 3 и менеджер пакетов Pip для установки зависимостей.

Git клонирует репозиторий Arch2appimage:

git clone https://github.com/redicculus/arch2appimage.git

Содержимое репозитория Arch2appimage будет помещено в локальную папку с именем arch2appimage. Перейдите в каталогarch2appimage:

cd arch2appimage

А затем установите Arch2appimage с помощью команды:

pip3 install -r requirements.txt

Этого должно быть достаточно для запуска Arch2appimage в вашей системе. Пришло время упаковать ваши любимые пакеты Arch Linux в формат AppImage.

Преобразование пакетов Arch Linux в формат AppImage с помощью Arch2appimage

Запустите скрипт Arch2appimage с помощью команды:

python3 arch2appimage.py

Вам будет задан ряд вопросов. Внимательно прочитайте вопросы и ответьте на них соответствующим образом.

Преобразование пакетов Arch Linux в формат AppImage

Сначала введите имя пакета, который вы хотите преобразовать в формат AppImage. В демонстрационных целях я собираюсь упаковать приложение Gedit. Исходный код пакета «Gedit» будет загружен из AUR.

Convert any Arch linux package (official/AUR) to AppImage!!
Loading Chaotic AUR package list...

Enter the name of the package (leave empty to quit)
[?] >>: gedit
Downloading gedit...
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1/2.1 MB • 1.4 MB/s • 0:00:00   

Выберите значок, который будет использоваться для вашего приложения (например, gedit). Arch2appimage предложит два или более вариантов. Вы можете выбрать подходящую иконку из списка.

Please select the icon file to be used
[?] >>: AppDir/usr/share/icons/hicolor/scalable/apps/org.gnome.gedit.svg
 > AppDir/usr/share/icons/hicolor/scalable/apps/org.gnome.gedit.svg
   AppDir/usr/share/icons/hicolor/symbolic/apps/org.gnome.gedit-symbolic.svg

Утилита Arch2appimage покажет вам список пакетов для загрузки. Если вы хотите добавить дополнительные пакеты, просто введите его имя, иначе нажмите ENTER, чтобы продолжить.

These packages (and their dependencies) will be downloaded:
1. gtksourceview4
2. gsettings-desktop-schemas
3. libpeas
4. gspell
5. python-gobject

If you would like to add additional packages please enter them below (space seperated). Leave empty to start downloading
[?] >>: 
Downloading gtksourceview4...
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.0/1.0 MB • 841.4 kB/s • 0:00:00   
Downloading gsettings-desktop-schemas...
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 684.8/684.8 kB • 762.1 kB/s • 0:00:00   
Downloading libpeas...
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 144.0/144.0 kB • 366.0 kB/s • 0:00:00   
Downloading gspell...
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 125.9/125.9 kB • 325.7 kB/s • 0:00:00   
Downloading python-gobject...
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 260.1/260.1 kB • 420.5 kB/s • 0:00:00   

Вам будет предложено загрузить последнюю версию пакета libunionpreload.so. Вы можете выбрать либо «да», либо «нет». Если вы выберете «Да», будет загружена последняя версия вышеуказанного пакета или будет использована существующая старая версия.

Would you like to download the latest libunionpreload.so? If you select No the existing one will be used.
[?] >>: Yes
 > Yes
   No

Downloading libunionpreload.so...
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 22.6/22.6 kB • ? • 0:00:00   

Теперь пакет готов к преобразованию в формат AppImage. Исходный код пакета и его зависимости будут загружены и сохранены в каталоге arch2appimage/AppDir.

Вы можете выбрать вариант «Построить AppImage», чтобы преобразовать данный пакет в AppImage, или выбрать вариант «Добавить больше пакетов», чтобы добавить другие пакеты. Я выбираю вариант "Создать изображение приложения".

AppDir is ready. Please take a look into the directory to ensure everything is OK.
Exec the AppRun (command './AppRun') to test if everything works.

What would you like to do next?
[?] >>: Build the AppImage
 > Build the AppImage
   Add more packages

Затем выберите «Да», чтобы загрузить последнюю версию AppImageTool (Appimagetool — это инструмент, который позволяет создавать файлы AppImage.) или «Нет», чтобы использовать существующую. Я выбираю Да.

Поздравляем! Пакет Gedit преобразуется в формат AppImage и сохраняется в каталоге arch2appimage/out.

Would you like to download the latest AppImageTool? If you select No the existing one will be used.
[?] >>: Yes
 > Yes
   No

Downloading AppImageTool...
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 8.2/8.2 MB • 3.7 MB/s • 0:00:00   
Running AppImageTool...

appimagetool, continuous build (commit 4bcfe23), build <local dev build> built on 2022-08-17 01:03:50 UTC
Using architecture x86_64
/home/ostechnix/arch2appimage/AppDir should be packaged as out/gedit-x86_64.AppImage
Deleting pre-existing .DirIcon
Creating .DirIcon symlink based on information from desktop file
Generating squashfs...
Parallel mksquashfs: Using 2 processors
Creating 4.0 filesystem on out/gedit-x86_64.AppImage, block size 131072.
[====================================================================================================================/] 2371/2371 100%

Exportable Squashfs 4.0 filesystem, gzip compressed, data block size 131072
	compressed data, compressed metadata, compressed fragments,
	compressed xattrs, compressed ids
	duplicates are removed
Filesystem size 7284.77 Kbytes (7.11 Mbytes)
	24.68% of uncompressed filesystem size (29513.93 Kbytes)
Inode table size 26215 bytes (25.60 Kbytes)
	27.56% of uncompressed inode table size (95103 bytes)
Directory table size 22102 bytes (21.58 Kbytes)
	27.04% of uncompressed directory table size (81735 bytes)
Number of duplicate files found 49
Number of inodes 2848
Number of files 2338
Number of fragments 228
Number of symbolic links  105
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 405
Number of ids (unique uids + gids) 1
Number of uids 1
	root (0)
Number of gids 1
	root (0)
Embedding ELF...
Marking the AppImage as executable...
Embedding MD5 digest
Success

Please consider submitting your AppImage to AppImageHub, the crowd-sourced
central directory of available AppImages, by opening a pull request
at https://github.com/AppImage/appimage.github.io

Далее вас спросят, хотите ли вы пересобрать пакет еще раз. Выбор «Да» для повторной сборки приложения gedit и выбор «Нет» завершает процесс. Я не хочу возобновлять процесс сборки, поэтому выбираю Нет.

Would you like to re-build it?
[?] >>: No
   Yes
 > No

Наконец выберите «Да», чтобы удалить AppDir и закрыть утилиту Archappimage.

Would you like to remove AppDir/
[?] >>: Yes
 > Yes
   No

Exiting...

Вот и все. Пакет gedit преобразуется в формат AppImage, а полученный файл сохраняется в каталоге arch2appimage/out.

[ostechnix@manjaro arch2appimage]$ ls out/
gedit-x86_64.AppImage

Теперь вы можете запустить файл AppImage с помощью команды:

[ostechnix@manjaro arch2appimage]$ ./out/gedit-x86_64.AppImage 

Вы также можете дважды щелкнуть файл AppImage, чтобы запустить его из приложения графического файлового менеджера.

Запустите приложение Gedit AppImage

Файл AppImage упакован со всеми необходимыми зависимостями. Таким образом, вы можете запустить его в любом дистрибутиве Linux, не устанавливая его или какое-либо другое дополнительное приложение.

Если вы хотите интегрировать файлы Appimage в средство запуска приложений, перейдите по следующей ссылке.

  • Интеграция изображений приложений в меню приложения с помощью AppImageLauncher

Заключение

Arch2appimage — очень новый проект. Так что стоит ожидать ошибок. Я тестировал Arch2appimage лишь в течение короткого времени на своем рабочем столе Manjaro Linux. Он отлично работает с приложением Gedit. Я протестировал несколько других приложений, таких как pacman и yt-dlp. Но они не сработали. Arch2appimage продолжал просить меня ввести путь к файлу .desktop. Я не знаю, где это. Думаю, в стабильной версии все проблемы будут решены.

Ресурс:

  • Репозиторий Arch2appimage на GitHub

Связанное чтение:

  • Как собрать пакеты Debian из исходного кода
  • Как собрать пакеты из исходного кода с помощью CheckInstall
  • Как легко создавать пакеты Linux с использованием Fpm для нескольких платформ
  • Воссоздать двоичные пакеты Debian, которые уже установлены в системе

Статьи по данной тематике