Авторские статьи

Snap vs Flatpak.


Заголовок горячий, как знойный день в Африке, но постараюсь с холодной головой выдать вам что известно на сегодняшний день про две конкурирующие технологии по предоставлению самодостаточных приложений.

Сначала должен искренне признаться что с Flatpak активно не работал, только читал официальные инструкции. Для понимания упаковки ПО в snap и заливки в Ubuntu Store, корпел над LanguageTool и сейчас занят упаковкой русского проекта, который никогда не был представлен в репозиториях, как и LT.

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

Общее

  • Обе технологии пытаются упаковать программу со всеми её зависимостями, чтобы в любом линукс дистрибутиве работать, не требуя ничего.
  • В операционной системе пакет snap и flatpak обновляется атомарно, с возможностью откатиться к старой версии при проблемах.
  • Внутри пакета частичное обновление компонентов невозможно, вы должны установить целиком новый пакет от его создателя.
  • Для организации песочницы для программы используется мощь мандатного доступа, но различные их представители. Об этом ниже в разделе Различия.
  • Не сильная зависимость, но она есть от системы инициализации systemd. Flatpak использует systemd --user для настройки cgroups песочницы. Snap юзает systemd для монтирования сжатого пакета snap.
  • Невозможность предоставить гарантированную безопасность и изоляцию ПО друг от друга при использовании в системе старого дисплейного сервера X11 (Xorg).

Flatpak

flatpak

Snap

snap

Различия

Snap Flatpak
Изоляция фильтры системных вызовов seccomp и система мандатного доступа AppArmor. фильтры системных вызовов seccomp и система мандатного доступа SELinux.
Разработка и поддержка Canonical Разработчик из RedHat Alexander Larsson и разработчики из проекта Gnome.
Реализация вывода графики упор на Mir упор на Wayland
Безопасность Упор сделан на песочницу для программы в виде профиля AppArmor, который создаётся из файла snap.yaml, описанного в декларативном стиле. Для соединений между пакетами или с пакетом-система используются plugs-slots. Возведена в абсолют. Очень сильная изоляция от системы с доступом к ограниченному числу библиотек. Общение со внешней средой через DBus.
Стратегия инкапсуляции В пакете должно быть всё нужное данной программе. Если в системе есть готовое для программы, то можно сделать коннект к нужному. Тяжёлые runtime будут оформлены в отдельные snap пакеты. Упор на понятия runtime (GNOME, KDE) и bundle, связанное с программой. Может быть несколько runtime (GNOME 3.18, GNOME 3.20) для удовлетворения требований программ.
Размеры пакетов Snap гипотетически должен быть крупнее flatpak из-за своей стратегии. Flatpak гипотетически должен быть меньше snap.
Использование на серверах Да, даже есть Snappy Ubuntu Core. Flatpak упор делает на десктоп. Теоретически никто не мешает создать пакет серверам.
Хранилище Уже точно есть Ubuntu Store и могут быть свои хранилища других дистрибутивов linux. Планов нет и нет единого хранилища. Пока рассматривается вариант с GitHub.

Выводы и мысли

Хотел бы с вами поделиться следующими наблюдениями:

  • Возможно это совпадение и мне просто многое мерещется, но ситуация Snap vs Flatpak напоминает мне ситуацию Mir vs Wayland. Есть некий вяло разрабатываемый проект, типа если в рамках его что-то получится, то потом можно начать его использовать. Но стоит Canonical заявить о чём-то конкурирующем, как резко все активизируются. У Canonical масса недоброжелателей в среде разработчиков и многие демонстративно (в пику) оказывают внимание конкуренту. Так было с Wayland и так происходит с Flatpak. Шучу, но мы должны быть благодарны Canonical за активизацию деятельности других проектов.
  • Мои бодания с упаковкой в snap пакеты программ LanguageTool и ещё-одна-gtk3-программа-пока-не-скажу с помощью инструмента snapcraft развеяли мои страхи по поводу жирности самодостаточных пакетов. Личный пример c LanguageTool показал разницу в жалкие пару мегабайт между версией с официального сайта и ею же упакованной с OpenJava 8. Возможно выручает Squashfs, сильно сжимающий snap. Есть парадоксы в лице Krita и LibreOffice 5.2 Beta, которые в snap меньше, чем в deb пакетах.
  • Если образно представить ваш пакет snap с вилками (plugs), то пока их можно воткнуть в гнезда (slot), представляемые самой системой через ubuntu-core. Разработчики обещают, но пока это не реализовано, другие snap пакеты тяжёлых runtime enviroment и можно будет не упаковывать к примеру gtk3 в пакет, а просто попросить соединить со слотом snap пакета gtk3. Не путайте только зависимости в мире deb и коннекты в мире snap.
  • Очень рад что flatpak и snap идут на десктопы, так как считаю что сопровождающие просто технически не успевают за ростом ПО и являются, по моему мнению, лишней сущностью между автором ПО и пользователем. Подробнее.
  • Разработчики snap проговорились в почтовой рассылке, когда запрашивал у них помощи по разным вопросам, что сейчас создаётся утилита, которая графически покажет текущие соединения и позволит удобно манипулировать ими - коннект/дисконнект. Напомню, что в момент создания пакета snap её автор запрашивает нужное через plugs: [network, network-bind, ...]. Но сам пользователь может разорвать конкретное соединение, если отдаёт себе отчёт. В данный момент такое возможно только в консоли. Ещё они сказали, что слот home, дающий доступ к домашней папке, настолько важен, что ведутся дебаты как быть с такой важной сущностью. Ведь есть софт, чей функционал не подразумевает доступа к домашней папке, но автор пакета его затребовал.

Главное помните, что snap и flatpak только в начале своего пути и им нужно дать, как минимум, время расцвести.

Дата последней правки: 2023-12-27 15:06:19

RSS vasilisc.com   


Разделы

Главная
Новости
Ворох бумаг
Видео Linux
Игры в Linux
Безопасность
Статьи об Astra Linux
Статьи о FreeBSD
Статьи об Ubuntu
Статьи о Snappy
Статьи об Ubuntu Phone
Статьи о Kubuntu
Статьи о Xubuntu
Статьи о Lubuntu
Статьи об Open Source
Карта сайта