Обзор snap vs flatpack vs appimage

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

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

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

Что такое Snap?

snappy-ubuntu

О 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 пакетов используется специальный инструмент - snapcraft. Он позволяет относительно легко создать пакет для любой платформы. Для сборки программы нужно описать ее и необходимые зависимости в файле snapcraft.yaml и этот процесс немного сложный. Если сравнивать snap vs appimage, то там все делается в пару кликов и без редактирования файлов. Но в целом это довольно интересная технология, благодаря возможностям безопасности.

Что такое Appimage?

1appimage

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

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

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

Для создания Appimage используется две утилиты AppimageDir и AppimageAssistant. Смысл в том, что мы создаем снимок состояния системы, устанавливаем программу любым способом, а потом собираем все что изменилось в наш образ. Просто и очень громоздко и неудобно. Консольных инструментов нет, только графические. Если делать сравнение flatpack vs appimage, то там все как-то более организовано и не нужно засорять свою систему.

Что такое Flatpack?

1flatpack

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

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

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

Выводы

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

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

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

6 комментариев

  1. Artem Июль 9, 2016 Ответить
  2. James Bay Июль 15, 2016 Ответить
  3. MIG Ноябрь 16, 2016 Ответить
  4. Путник Сентябрь 7, 2017 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: