Главная >> Обзоры >> Обзор Snap vs Flatpak vs AppImage

Обзор Snap vs Flatpak vs AppImage

За последние несколько лет Linux очень сильно продвинулся на пути к обычным пользователям. Изменялся и упрощался интерфейс, добавлялись графические утилиты, исправлялись ошибки и недоработки, дистрибутивы становились лучше. Но теперь изменения добрались до системы установки пакетов. Традиционный способ устанавливать программы - загрузка и установка с репозиториев вашего дистрибутива. Причем форматы пакетов, способы развертывания и даже версии библиотек между дистрибутивами очень отличаются. Это не позволяло скачать программу из интернета и запускать ее на любом linux дистрибутиве.

Но за последние пару лет был сделан шаг и в этом направлении. Были созданы портативные приложения, которые устанавливаются одним файлом, вместе со всеми своими зависимостями и поэтому могут работать абсолютно в любом дистрибутиве, независимо от установленных там программ и библиотек. Сначала энтузиастами был разработан формат AppImage, который представляет из себя ISO образ со всеми файлами программы, затем разработчики Gnome переименовали и взялись за развитие своей платформы контейнерного запуска приложений Flatpak, и примерно в то же время компания Canonical реализовала систему установки пакетов без зависимостей - Snap, которая, как и все предыдущие, может использоваться в любом дистрибутиве.

Чем отличается Snap vs Flatpak vs AppImage?

Как видите, в последнее время было создано очень много решений портативных программ Linux и пора разобраться что лучше и что все-таки использовать. В этой статье мы сравним snap vs flatpak vs appimage. Это самые популярные и известные технологии, хотя были и другие. Попытаемся выяснить у кого больше перспектив для развития, но сначала выясним, что представляет из себя каждая из этих технологий.

Что такое Snap?

 

О Snap пакетах мы слышали уже давно, сначала они использовались для встраиваемых устройств и в качестве механизма обновления Ubuntu для смартфонов. Как заявляют разработчики из Canonical эта технология была создана изначально для того, чтобы предоставить максимальную удобность обновления пользователям Ubuntu и поднять на новый уровень безопасность мобильных приложений. Основная задача - решить проблемы, неразрешимые для deb и rpm пакетов и обеспечить надежное обновление.

Все файлы программы и ее зависимостей упаковываются в один файл, включая исполняемые файлы, файлы конфигурации и нужные библиотеки. В этом плане snap vs flatpack мало чем отличаются. Пакет устанавливается в отдельном каталоге, в домашней папке пользователя и программа может иметь доступ только к этому каталогу. Поэтому программа не может создать проблем в вашей системе, заменив важные файлы других пакетов.

Программа, упакованная в snap, выполняется в изолированном окружении, ей недоступны никакие библиотеки из системы и даже конфигурационные файлы. Это реализуется с помощью профилей AppArmor. Она может работать только с тем, что установлено в пакете. Домашняя папка программы тоже в её директории. Для общения с X сервером, файловой системой, окружением рабочего стола и другими компонентами используются интерфейсы, предоставляемые главным пакетом - ubuntu-core. Если программе не разрешить доступ к этим интерфейсам она не сможет работать. Чтобы предоставить доступ программе к файлам пользователя тоже нужно использовать соответствующий интерфейс - home.

На данный момент Snap пакеты работают кроме Ubuntu, на Arch, Debian и Fedora. Также выполняется подготовка образов для Red Hat, CentOS, Elementary, LinuxMint, Gentoo, OpenSUSE. Более подробно про управление Snap пакетами читайте здесь.

Для создания snap пакетов используется специальный инструмент - snapcraft. Он позволяет относительно легко создать пакет для любой платформы. Для сборки программы нужно описать ее и необходимые зависимости в файле snapcraft.yaml и этот процесс немного сложный. Если сравнивать snap vs AppImage, то там все чуть проще, но и нет такого уровня безопасности. Но в целом это довольно интересная технология, благодаря возможностям безопасности.

Что такое AppImage?

 

Про Appimage мы услышали еще в 2011 году, но тогда программа не набрала популярности несмотря на все ее плюсы по сравнению с традиционными системами упаковки программ.

Здесь, также как и в snap программа упаковывается со всеми своими зависимостями в один файл. Никаких дополнительных файлов, одно приложение - один файл. Для запуска программы не нужно ничего устанавливать, просто скачайте программу из интернета, сделайте исполняемой и запустите. Все. Никакие файлы из корневой файловой системы не будут изменены.

Образ Appimage представляет из себя обычный ISO образ, в котором находятся все необходимые компоненты программы, при запуске он автоматически монтируется и выполняется программа. Поскольку для запуска не нужно никакого программного обеспечения в системе, эта технология может использоваться абсолютно в любом дистрибутиве. Хотя для запуска программы не требуются права root, тут уже нет такого уровня безопасности, программа может спокойно работать с файлами пользователя, как и другие обычные программы, а если каких-нибудь библиотек в образе недостает, программа загружает их из системы. Подробнее про AppImage читайте тут.

Для создания AppImage используется утилита appimagetool. Перед использованием инструмента вам необходимо скопировать все файлы и библиотеки, необходимые программе в специальную папку и сделать конфигурационный файл. Если делать сравнение Flatpak vs AppImage, то там все как-то более организовано и не нужно засорять свою систему.

Что такое Flatpak?

 

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

В отличие от Snap, Flatpak ориентирован больше на децентрализацию. Здесь нет одного центрального репозитория или контролирующего органа. Snap пакеты контролируются Canonical, и чтобы добавить свой пакет в репозиторий нужно подписать соглашение. Flatpak работает подобно тому, как PPA в Ubuntu. Вы находите репозиторий, подключаете в систему и можете устанавливать оттуда программы.

Flatpak можно использовать в большинстве дистрибутивов, так же как и Snap. Создавать Flatpack пакеты можно подобным образом, как и snap. Тоже нужно отредактировать файл конфигурации, правда тут все немного проще. Про установку и использование Flatpak читайте здесь.

Выводы

Мы рассмотрели Snap vs Flatpak vs AppImage. Уже сейчас можно, сказать, что AppImage отходит на задний план и гонка за лидерство происходит между Snap и Flatpak. Appimage предоставляет простоту запуска программ, но здесь нет таких важных возможностей, как безопасность, а без этого сейчас никуда. Flatpak разрабатывается командой Gnome, и у них интересная затея, но за Snap взялась компания Canonical, они будут использовать эту технологию не только для обычных компьютеров, но и для серверных решений. Что будет лучше и более удобно пользователям покажет время. А вы используете портативные приложения?

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Оцените статью

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (8 оценок, среднее: 4,75 из 5)
Загрузка...

18 комментариев к “Обзор Snap vs Flatpak vs AppImage”

  1. Appimage следов в системе оставляют ровно столько, сколько и установленная программа, так как файлы конфигурации и кэши кладутся в домашнюю папку.
    Snap's хороши для проприетарного софта, когда бибилиотеки могут быть нужны очень старых версий и конфликта в системе не избежать, для опенсорсного софта мне лично кажется это всё не выстрелит как и с Appimage. Хотя интеграция в систему делает своё дело.

    Ответить
    • Мне snap очень понравился. Вот пример: Manjaro + Kdenlive. Чертовски нестабильная хрень, вылетает постоянно! Поставил Kdenlive из snap - ВСЁ! Ни единого разрыва! Работает, как швейцарские часы!

      Ответить
  2. >Программа, упакованная в snap, выполняется в изолированном контейнере
    там нет контейнеров, там есть профиля AppArmor

    >предоставляемые главным пакетом - ubuntu-snappy.
    ubuntu-core

    > В отличие от deb и rpm для установки программ snap не нужны права суперпользователя, поскольку они не трогают корневую файловую систему.
    нужно sudo и права root
    программа ставится в /snap/name-programm (переменная $SNAP)
    для записи каталог ~/snap/name-programm (переменная $SNAP_USER_DATA)
    http://vasilisc.com/snap-vs-flatpak

    Ответить
  3. >> Snap пакеты контролируются Canonical, и чтобы добавить свой пакет в репозиторий нужно подписать соглашение.
    Dustin Kirkland, входящий в команду, определяющую стратегию развития в компании Canonical, в ответ на вопросы о распространении универсальных пакетов в формате snap в обход централизованного каталога-магазина компании Canonical, представил рабочий прототип решения для создания альтернативных каталогов. Разработка использует штатный API, также применяемый на сайте snapcraft.io, и позволяет на собственных серверах размещать свои коллекции пакетов snap для всех поддерживаемых дистрибутивов.

    Ответить
  4. А вот опасения насчёт шпионства через snap-пакеты, заявка про "безопасность" не совсем стыкуется с тем, что при установке на ту же Федору требуется отключать SELinux, а в пакете (как и, в понимании автора заметки, для других дистрибутивов) отключена изоляция, которая и подаётся как фича - т.е. получаем блоб с полным доступом ко всему, до чего дотянется?

    Ответить
  5. Было бы неплохо к обзору каждого формата добавить: где хранят свои настройки программы из этих новых форматов.
    Название прикладной программы уже не вспомню, но запомнилось это так, что теперь я программы из этих новых источников не ставлю. А было вот что: стояла у меня программа из стандартных репозиториев, хранила все свои конфиги в "стандартной" папке типа ~/.config/имяпроги. Затем поставил версию то ли из flatpak то ли из AppImage. Она файлы настроек от прежней версии не увидела, насоздавала своих в своих папках, все мои многочисленные профили из старой программы в новую автоматически не перенеслись... На ручной перенос нужно много времени.
    Ну и какой смысл? Т.е. какая выгода? В результате так и продолжаю пользоваться стандартными репозиториями и launchpad'ом.

    Ответить
  6. snap работает везде где есть магазин поддерживающий его. Я использую Manjaro XFCE с магазином snap, работает как надо.

    Ответить
  7. Действительно, в подобных обзорах повсеместно упускается из виду один важнейший аспект: Snap, в отличие от Flatpak, хранит файлы с настройками приложений изолированно в своем каталоге ~/snap и при деинсталляции удаляет их вместе с приложением на манер Android.
    Flatpak же в этом отношении мало отличается от deb/rpm, то есть оставляет в домашнем каталоге "хвосты", разве что выказывая предпочтение к менее традиционным местам размещения, вроде ~/.var/app вместо ~/.config , да и то не всегда.

    Кроме того, начиная с версии 22.04, Ubuntu предлагает детальную настройку прав доступа для Snap-пакетов прямо в меню системных настроек, тогда как как Flatpak все еще не может похвастать столь тесной интеграцией с оболочкой и для управления полномочиями приложений требует установки отдельного инструмента Flatseal.

    Зато Flatpak не вносит дополнительной задержки в первый после перезагрузки запуск программ, как это делает Snap.

    Ответить
  8. Все эти костыли в конечном смысле предназначены для засирания диска у пользователя и создания ему дополнительных проблем в виде охреневания от попыток подружить программы с системой и друг с другом. И это вместо того чтобы доработать или переделать версионирование системных библиотек, для более гибкого использования.
    Я честно не понимаю, что должно быть в голове, чтобы выдавать невозможность программ работать с окружением за преимущество. Единственные кому от всего этого радость - разрабы. Можно древнюю библиотеку годами не обновлять, а можно наоборот совать глючные альфа-беты. Да и о нормальной интеграции в систему, а заодно и подстраивание под графические стили думать не нужно. Ну и что что у тебя вечер и ты решил включить темную схему? А нам по...й - у нас все сияет белым., а не нравится так лезь отдельно для нашей офигеть-какой-замечательной программы каждый раз в настройки... если мы их вообще предусмотрели...
    В общем какая технология не используется Snap ли, Flatpak или AppImage - все кажущиеся удобства лишь позволяют разрабам не парится об удобстве пользователя.
    ИМ не нужно думать о том чтобы ВЫ могли просто набрать "sudo apt install"...

    "уже нет такого уровня безопасности, программа может спокойно работать с файлами пользователя, как и другие обычные программы"
    Оххх, какой ужас!!! Программа может работать с файлами пользователя!!! Кто же такой кошмар допустил!!!
    Немедленно расстрелять! А то какая-нибудь audacity сможет отредактировать аудио, А deadbeef это аудио потом проиграть... совершенно недопустимо!!!
    Лично мой совет по безопасности для автора - запри себя в бетонном бункере, а ключ уничтожь. Надежность и безопасность - гарантированы.

    Ответить
  9. Спасибо за статью. Snap то давно знаком, и всегда сразу полностью мною удаляется при установке бубунты. А вот Флатпак мною был только что обнаружен в чистом Минте последней версии. На Синамоне (2ой гном вроде же?) установлена "из коробки".
    Тут писали про хвосты от програм, который снап за собой удаляет, а флатпак нет. Так это же огромный плюс флатпака! Будем пробовать, спасибо за статью!

    Ответить
  10. Дополню. Чистый телеграм весит 49Мб. В менеджере приложений он только как флатпак присутствует. Угадайте, сколько весит?
    958Мб будет скачано и занято после распаковки 3,1Гб. Три гига Карл! Телеграм..
    Надеюсь, что это только первое приложение так весит, и что другие будут меньше (общие библиотеки же)

    Ответить

Оставьте комментарий

×

Сообщить об ошибке или улучшить статью

Здесь вы можете внести исправления:

Комментарий:

×