В одной из предыдущих заметок мы говорили о форматах установочных файлов в дистрибутивах Linux. Тогда же условились на том, что установка приложений в Linux ничем не отличается от того, что происходит в Windows и macOS. Но есть ли вариант приложений, который не зависит от пакетной базы дистрибутива и одинаково запускается на DEB или RPM-системах?
Устанавливаемые и портативные приложения
С устанавливаемыми приложениями мы встречаемся постоянно. Подразумевается, что мы скачали установочный файл, запустили его и программа «прописалась» в системе по определенным путям, хранится в конкретном каталоге. Если попробовать перенести папку с установленной программой на другой ПК, то существует вероятность того, что она не запустится.
Портативные приложения отличаются тем, что не зависят от системы и компьютера, на которых их запускают. Программа не создает связей с системными файлами и реестром. Такими приложениями часто пользуются те, кто постоянно в пути и возит с собой ноутбук или, например, системные администраторы, у которых под рукой всегда есть флэшка с набором portable-версий софта.
Формат портативных приложений для Windows или macOS не меняется, это все те же EXE и DMG. Давайте посмотрим, как обстоит дело в системах на базе ядра Linux.
AppImage
Формат разрабатывался в рамках проекта под названием Klik в 2004 году человеком по имени Симон Петер. Позже Klik переименовали в AppImage и это название он сохраняет до сих пор.
AppImage-файл является сжатой версией программы, внутри него программа запускается и выполняет все нужные процедуры. При этом она не размещает файлы по системным папкам и является полностью самодостаточной. Запустить AppImage-приложение очень просто: скачать, сделать исполняемым и запустить, дважды кликнув мышкой.
Интересным является тот факт, что проект AppImage повлиял на другого разработчика и тот начал делать формат, о котором пойдет речь дальше.
Flatpak
Алекс Ларсон вдохновился идеей Klik и в 2007 году представил миру собственный вариант формат исполняемых файлов в Linux под названием Glick. В последствие, его переименуют во Flatpak. Любой файл такого формата представляет собой замкнутый контейнер, внутри которого «живет» программа. Но при этом Flatpak нельзя в полной мере назвать портативным, так как не получится перенести его на флэшку и запустить на другом ПК. Преимуществом формата является универсальность в запуске на любом дистрибутиве без надобности заморачиваться с зависимостями.
Уже разработанные другими разработчиками приложения в формате Flatpak хранятся в хабе, откуда их можно скачать. Кроме того, установить Flatpak-приложения можно установить из терминала. Современные Linux-дистрибутивы (например, Fedora) имеют встроенную поддержку Flatpak.
Snappy
Разработкой этого формата занимается компания Canonical (разработчики Ubuntu). Потому ожидаемо Ubuntu стала испытательной площадкой для внедрения Snap-пакетов (с версии 22.04, например, браузер Firefox поставляется только в Snap-версии). Может не за горами тот момент, когда весь предустановленный в Ubuntu софт перейдет на Snappy.
Существующие версии программ в формате Snap доступны в Snap Store. Оттуда их можно скачать и установить, если в вашей системе имеется поддержка Snap.
Личный опыт
Для меня удобными в использовании формата остаются AppImage и Flatpak. Snap-пакеты я использую в случае крайней необходимости, так как мне не нравится агрессивный способ их продвижения компанией Canonical. Решение перевести Firefox полностью на Snap без возможности выбора для пользователя вызвало недовольство сообщество, кроме того, первое время после выхода версии 22.04 браузер запускался медленнее, чем его не Snap-вариант.
Чтобы определить удобный для себя формат портативных приложений в Linux нужно попробовать каждый из описанных выше. Если вы уже опытный пользователь, то напишите в комментариях используете ли портативные программы и в каком формате.
Ну и не забываем подписываться на канал, комментировать и ставить лайки! Обратная связь от аудитории важна для дальнейшего развития!