Упаковка

Сравнение Snap vs Flatpak vs AppImage

Сравнение Snap vs Flatpak vs AppImage
Новые форматы упаковки, такие как Snap, Flatpak и AppImage, предоставляют пакеты, не зависящие от дистрибутива, которые работают в большинстве дистрибутивов Linux. Это решает проблемы упаковки, с которыми сталкиваются разработчики приложений, которые хотят распространять свои приложения в нескольких дистрибутивах Linux. Теперь они могут сосредоточиться на одной сборке, которая работает везде, вместо того, чтобы соответствовать разным стандартам упаковки.

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

В таблице ниже приведены основные различия между форматами файлов Snap, Flatpak и AppImage. Большинство из них говорят сами за себя, другие пункты объяснены под сравнительной таблицей.

Щелчок Flatpak AppImage
Переключатели управления разрешениями, подобные Android (графический интерфейс и интерфейс командной строки) да да Нет
Поддержка песочницы да да да
Песочница Обязательно да да Нет
Поддержка собственных тем Да (с оговорками) Да (с оговорками) Да (с оговорками)
Поддержка объединенных библиотек да да да
Переносимость приложений Да (с оговорками) Да (с оговорками) да
Полностью автономная поддержка одного исполняемого файла (аналогично .exe файлы в windows) Нет Нет да
Интернет-магазин приложений да да да
Плагины для программного обеспечения Desktop App Store да да Нет
Поддержка мультиверсионных параллельных приложений да да да
Автоматические обновления да да Да (с оговорками)
Поддержка Chrome OS (через контейнеры Crostini) да да да
Размер приложения Варьируется, но выше, чем у AppImage Варьируется, но выше, чем у AppImage Самый низкий
Количество приложений, доступных в App Store Наибольший Самый низкий Где-то между

Контроль разрешений для пользователей

Snap предоставляет как графический интерфейс, так и интерфейс командной строки для пользовательских разрешений. Вы можете использовать предустановленное приложение «Ubuntu Software» для управления разрешениями приложения Snap.

Чтобы просмотреть разрешения приложения snap с помощью интерфейса командной строки, выполните следующую команду:

$ защелкивающиеся соединения хром

Замените «хром» названием своего приложения для снэпов.

Чтобы увидеть список всех установленных приложений snap, выполните следующую команду:

список $ snap

Чтобы предоставить камере разрешение на привязку хрома, используйте команду ниже:

$ snap connect хром: камера

Чтобы отозвать разрешение камеры, выполните следующую команду:

$ Snap отключить хром: камера

Соответствующие команды для управления разрешениями можно найти в столбце «Plug» (показано на скриншоте выше).

Flatpak также предоставляет интерфейс для предоставления и отзыва разрешений. Вы можете использовать приложение GNOME Software (требуется GNOME 3.32.x) для управления разрешениями с помощью графического метода. Чтобы увидеть разрешения приложения Flatpak, выполните следующую команду:

$ flatpak info --show-permissions org.kde.Платформа

Заменить "org".kde.Платформа »с названием вашего приложения Flatpak.

Чтобы просмотреть список всех приложений Flatpak, установленных в вашей системе, выполните следующую команду:

список $ flatpak

Чтобы изменить разрешения приложения Flatpak, вам необходимо изменить значения переменных, показанных на скриншоте выше. Например, приведенная ниже команда сделает всю файловую систему доступной для приложения flappak:

$ sudo flatpak переопределить org.kde.Платформа --filesystem = host

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

Песочница

Snap, Flatpak и AppImage из коробки поддерживают изолированные среды приложений. Песочница - это среда (или контейнер / файловая система / архив), которая полностью изолирована и отделена от хост-системы. Любое взаимодействие с хост-системой осуществляется с использованием ограниченного API и контроля разрешений. Некоторые из этих разрешений явно требуют согласия пользователей или могут быть полностью отключены конечными пользователями. Приложение в песочнице безопаснее, чем любое другое приложение, имеющее полный доступ к хост-системе. Все приложения для Android работают в песочнице, и эти три формата упаковки работают по схожей идее.

Поддержка собственных тем

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

Переносимость приложений

Приложение AppImage - это отдельный исполняемый файл (аналогично Windows ' .EXE файлы). Вы можете легко поделиться им между системами или загрузить в облако. Приложения Snap и Flatpak можно сделать переносимыми, включив само приложение, а также дочерние репозитории, от которых приложение зависит. Однако этот процесс не так прост, как AppImage, и требует использования нескольких команд для достижения тех же результатов.

Автоматические обновления

Приложения Snap и Flatpak устанавливаются из централизованных репозиториев приложений, и приложения могут обновляться автоматически без вмешательства пользователя. В AppImage отсутствует надежный механизм автоматического обновления. Пользователи должны вручную загрузить новый двоичный файл AppImage и заменить существующий для установки обновлений. Сопровождающие приложения AppImage иногда включают собственный механизм обновлений, который периодически проверяет наличие обновлений на своих серверах или требует вмешательства пользователя. Недавно разработчики AppImage предоставили инструмент для обновления существующих двоичных файлов, предоставляя дельта-обновления. Однако по-прежнему требуется загрузить инструмент обновления и вручную использовать его с существующим двоичным файлом AppImage. Для AppImage пока нет механизма обновления без помощи рук.

Размер приложения

AppImage имеет наименьший размер приложения, скорее всего, потому, что он обслуживает двоичные файлы в сжатом формате. Размеры приложений Snap и Flatpak сильно различаются от приложения к приложению, и трудно определить, какое из них обеспечивает меньший размер установки. Для справки: Inkscape AppImage на момент написания этой статьи был около 98 МБ, Snap - около 183 МБ, а Flatpak - около 109 МБ.

Заключение

Универсальные пакеты приложений - беспроигрышная ситуация как для разработчиков, так и для конечных пользователей. Эти форматы упаковки позволяют намного быстрее доставлять безопасные приложения. Они также открывают двери для разработчиков, которые избегают Linux из-за разных стандартов упаковки, используемых в разных дистрибутивах. Есть некоторые проблемы, которые необходимо решить в этих трех форматах упаковки. Однако все они находятся в активной разработке, и эти проблемы будут устранены в сверхурочное время. Будущее за универсальными кросс-дистрибутивными пакетами, и их распространение будет расти. Медленно, но неуклонно в будущем дистрибутивы могут перейти на сборки Snap, Flatpak или AppImage, за исключением основных библиотек и основных пакетов, необходимых для работы ОС.

Порты коммерческих игровых движков с открытым исходным кодом
Бесплатные игры с открытым исходным кодом и кроссплатформенные версии игрового движка можно использовать для игры как в старые, так и в некоторые из с...
Лучшие игры с командной строкой для Linux
Командная строка - не только ваш главный союзник при использовании Linux - она ​​также может быть источником развлечений, потому что вы можете использ...
Лучшие приложения для сопоставления геймпадов для Linux
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил...