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

Как использовать AppImages в Linux


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

Установка программного обеспечения в Linux

Установка программного обеспечения должна быть простой и удобной. Насколько простым и удобным это окажется, во многом зависит от менеджера пакетов вашего дистрибутива. Менеджеры пакетов — это программные приложения, которые позволяют загружать другие программы Linux и устанавливать их.

Производные дистрибутивы Linux, как правило, используют менеджеры пакетов своего родительского дистрибутива. Например, многие варианты и производные Debian используют apt, дистрибутивы RedHat и Fedora используют dnf, а семейство дистрибутивов Arch использует pacman. Так что, к счастью, менеджеров пакетов не так много, как дистрибутивов.

Тем не менее, с точки зрения разработчика, поддержка всех различных форматов пакетов означает обертывание вашего приложения в файл DEB для семейства Debian, в RPM для семейства RedHat и так далее. Это много дополнительных накладных расходов.

Это также означает, что если ни разработчики, ни кто-либо еще не создали установочный пакет для вашего дистрибутива, вы не сможете установить это программное обеспечение. По крайней мере, не родным.

Возможно, вы сможете загрузить пакет из другого дистрибутива на свой компьютер, но это небезопасный метод, и он не гарантирует работу. Если вы знаете, что делаете, вы можете загрузить исходный код и собрать приложение на своем компьютере, но это далеко не просто и удобно.

Такие проекты, как Snap и Flatpak, были разработаны для решения проблемы упаковки приложений для каждого дистрибутива. Если вы можете упаковать пакет в один файл, чтобы он поставлялся в комплекте с соответствующими библиотеками и любыми другими зависимостями, которые у него есть, так что он (практически) не требует от операционной системы хоста, он должен быть в состоянии работать на любой распределение.

Проект AppImage — именно такая инициатива. AppImage — это имя проекта, а AppImages — это имя упакованных приложений.

Как работают изображения приложений

Файлы AppImage не устанавливаются в традиционном смысле. Файлы компонентов, из которых состоит пакет приложения, содержатся в одном файле. Они не распаковываются и хранятся в разных каталогах файловой системы.

Исполняемый файл приложения, установленного менеджером пакетов, будет скопирован в соответствующий каталог «/bin», его страницы man будут храниться в каталоге «/usr/share/man» и т. д. Этот шаг распаковки и копирования не происходит с AppImages.

Внутри AppImage есть файловая система, обычно файловая система squashFS. Файлы, необходимые для запуска приложения, хранятся внутри этой файловой системы, а не в основной файловой системе вашей установки Linux. Когда AppImage выполняется, он запускает одну из своих внутренних вспомогательных программ, которая монтирует файловую систему squashFS в «/tmp/mount», чтобы она была доступна из вашей основной файловой системы. Затем он запускает само приложение.

Вот почему запуск приложений из Snaps, Flatpaks и AppImages происходит немного медленнее, чем запуск обычного приложения. Чтобы все это работало, в файловой системе хоста должно быть установлено нечто, называемое «файловой системой в пользовательском пространстве». Это единственная зависимость, которую AppImages размещает на хосте. FUSE обычно предустановлен в современных дистрибутивах Linux.

Использование файла AppImage

Первое, что вам нужно сделать, это загрузить AppImage для нужного вам приложения. Их не будет в репозитории вашего дистрибутива. Обычно вы найдете их на веб-сайте самого приложения.

Мы загрузим и будем использовать FreeCAD, пакет для трехмерного автоматизированного проектирования с открытым исходным кодом. Перейдите на страницу загрузки FreeCAD и нажмите кнопку «64-битный AppImage».

Когда он будет загружен, найдите файл в окне терминала. Если вы не изменили настройки по умолчанию в своем веб-браузере, он, вероятно, будет в вашем каталоге «Загрузки». Нам нужно сделать исполняемый файл AppImage. Мы будем использовать команду chmod, чтобы добавить разрешение -x (исполняемый файл).

chmod +x FreeCAD-0.20.0-Linux-x86_64.AppImage

Мы скачали наш файл и сделали его исполняемым. Чтобы выполнить его, мы можем вызвать его по имени.

./FreeCAD-0.20.0-Linux-x86_64.AppImage

Это все, что нам нужно было сделать в Fedora и Manjaro. В Ubuntu 22.04 нам пришлось установить файл библиотеки. FUSE уже установлен в Ubuntu 22.04, но это более поздняя версия, чем та, что используется в большинстве AppImage. Установка файла библиотеки не влияет на установленную версию FUSE.

sudo apt install libfuse2

Это сразу же решило проблему, и мы могли без проблем запускать AppImages в Ubuntu Jammy Jellyfish 22.04.

Все это здорово. Но что, если вы хотите получить свой торт и съесть его? Представьте, если бы был способ использовать AppImages, который не требовал бы запуска их из окна терминала. Было бы гораздо удобнее иметь возможность запускать приложения AppImage точно так же, как обычные нативные приложения.

Здесь явное противоречие — вся суть AppImages в том, что они не устанавливаются сами в традиционном понимании, в том числе не интегрируются в ваш рабочий стол. Но тем не менее это возможно с AppImageLauncher.

AppImageLauncher

AppImageLauncher отслеживает назначенный каталог. Он сканирует каталог в поисках файлов AppImage. Для каждого найденного он извлекает значок приложения (если он есть) и интегрирует AppImage в рабочий стол, как обычное приложение.

Это повторяется для каждого нового AppImage, добавляемого в каталог. Когда он обнаруживает, что AppImage был удален, он удаляет интеграцию. Итак, просто перетащив загруженные файлы AppImage в отслеживаемый каталог, они интегрируются в среду вашего рабочего стола.

Если вы используете Ubuntu или Fedora, перейдите на страницу загрузки AppImageLauncher и нажмите ссылку «Активы» в разделе «Выпуск сборки (последняя)».

Щелкните ссылку «appimagelauncher-XXX.x86_64.rpm» для Fedora или файл «appimagelauncher_XXX.bionic_arm64.deb» для Ubuntu. «XXX» представляет собой номер версии программного обеспечения.

Обратите внимание, что есть ссылки для AppImageLauncherLite и для AppImageLauncher. Используйте ссылки AppImageLauncher.

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

На Manjaro вы можете установить AppImageLauncher с помощью этой команды:

sudo pacman -S appimagelauncher

Вы можете запустить AppImageLauncher, нажав клавишу «Super». На большинстве клавиатур он расположен между левыми клавишами «Ctrl» и «Alt». Введите «appim» в строку поиска.

Появится значок AppImageLauncher. Щелкните ее, чтобы запустить приложение.

Осталось немного настроить. Нам нужно сообщить AppImageLauncher, какой каталог мы хотим отслеживать. Щелкните значок «папка» и перейдите в каталог, в котором вы обычно храните свои AppImages. Мы выбрали наш каталог «Загрузки». Вы можете выбрать подкаталог, если хотите, например «/Downloads/apps».

Если вы хотите, чтобы AppImageLauncher предлагал переместить файлы AppImage, которые он нашел в других каталогах, в отслеживаемый каталог, убедитесь, что установлен флажок «Спросить, перемещать ли файлы AppImage в каталог приложений». Но если AppImageLauncher отслеживает только один каталог, как он найдет AppImage где-либо еще?

Ответ на этот вопрос лежит на вкладке «appimagelauncherd». Перейдите на вкладку «appimagelauncherd», и вы увидите, что AppImage может отслеживать более одного каталога.

Нажмите зеленый значок «Плюс», чтобы добавить больше каталогов. Убедитесь, что установлен флажок «Автозапуск демона автоматической интеграции». Нажмите кнопку «ОК», когда вы сделали свой выбор.

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

Как только вы наберете «бесплатно», вы должны увидеть значок FreeCAD. Нажав на нее, вы запустите приложение. Если файл AppImage не содержит значка, используется общий значок зубчатого колеса, как в случае с FreeCAD.

Для дальнейшего тестирования мы загрузили файл AppImage для приложения Subsurface. Мы подождали около 30 секунд, чтобы убедиться, что оно обнаружено и интегрировано, затем нажали клавишу «Super», набрали «sub», и появился значок приложения. На этот раз была найдена и использована подлинная иконка приложения.

При нажатии на значок запускалось приложение. Нам даже не нужно было использовать chmod, чтобы сделать AppImage исполняемым.

Еще одним приятным моментом является то, что щелчок правой кнопкой мыши по значку позволяет удалить AppImage прямо из контекстного меню.

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

AppImages на подъеме

На наших тестовых машинах приложения, запущенные из AppImages, загружались немного быстрее, чем приложения Flatpak, и намного быстрее, чем приложения Snap. При использовании AppImages не требуется устанавливать базовую структуру, поэтому, не считая места, необходимого для самих приложений, объем жесткого диска при использовании AppImages равен нулю.

Необязательное приложение AppImageLauncher добавляет некоторые штрихи изящества, но вы можете с удовольствием использовать AppImages и без него.

Все больше и больше приложений предлагают AppImages. Если вы обнаружите, что пытаетесь установить что-то, чего нет в репозиториях вашего дистрибутива, посетите веб-сайт приложения. У них вполне может быть AppImage.