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

Опубликовано: 2022-09-27
Ноутбук на синем фоне с командной строкой Linux.
Фатмавати Ачмад Заэнури/Shutterstock.com

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

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

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

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

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

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

Как преобразовать установочные пакеты Linux в другие форматы
СВЯЗАННЫЕ С : Как преобразовать установочные пакеты Linux в другие форматы

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

Такие проекты, как 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-bit AppImage».

Страница загрузки FreeCAD

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

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

создание исполняемого файла AppImage с помощью команды chmod

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

 ./FreeCAD-0.20.0-Linux-x86_64.AppImage 

Запуск файла AppImage

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

 sudo apt установить libfuse2 

Установка файла библиотеки libfuse2

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

Приложение freeCAD, работающее из AppImage

Все это здорово. Но что, если вы хотите получить свой торт и съесть его? Представьте, если бы был способ использовать 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» представляет собой номер версии программного обеспечения.

Ссылки для скачивания AppImageLauncher RPM и DEB

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

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

Файл AppImageLauncher DEB, открытый в программе Ubuntu Software

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

 sudo pacman -S appimagelauncher 

Установка AppImageLauncher на Manjaro

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

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

Главный экран AppImageLauncher

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

Приложение AppImageLauncher с /home/dave/Downloads, установленным в качестве отслеживаемого каталога.

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

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

Вкладка appimagelauncherd приложения AppImageLauncher

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

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

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

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

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

Приложение Subsurface, работающее из AppImage

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

Контекстное меню Subsurface

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

AppImages на подъеме

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

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

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

СВЯЗАННЫЕ: apt против apt-get: в чем разница в Linux?