Недавно из официальных редакций дистрибутива Ubuntu убрали поддержку софта в формате Flatpak. Вернуть её достаточно просто, но ситуация неприятная. Вот только из других дистрибутивов на основе Ubuntu поддержку Snap-пакетов выпилили намного раньше. Так что я не вижу особой разницы между навязыванием снапов и повсеместным пропихиванием флетпака. Придётся разбираться.
Flatpak против Snap: в чём разница?
Популярность Flatpak и Snap растёт день ото дня. Судя по отзывам, они уже обходят некоторые нативные форматы пакетов, а про AppImage уже никто и не вспоминает (хотя сам формат то топовый!). Чем же вызван столь бурный рост популярности?
Во-первых, простотой: Flatpak и Snap легко устанавливаются и отлично интегрируются в систему. Вам не нужно самостоятельно добавлять ярлыки или обновлять софт через консольные команды. С точки зрения пользователя они вообще неотличимы от нативных пакетов. Во-вторых, вам больше не нужно париться о зависимостях: ничто не потеряется при установки и не затеряется после удаления. Ну и про безопасность не забывайте: Flatpak и Snap запускаются изолировано от других приложений, а значит, не могут им навредить.
Итак, с этим разобрались: и Flatpak, и Snap обладают рядом весомых преимуществ, оспаривать которые было бы глупо. Но в чём их отличия? Чем Flatpak отличается от Snap? Какой формат удобнее и надёжнее? И какой формат вам стоит использовать в вашей системе? Сегодня мы постараемся разобраться в основных отличиях Flatpak и Snap. Подобных публикаций уже немало, но гайдов, как известно, много не бывает!
1. Происхождение
Snap – разработка Canonical. Причём изначально планировалось, что снапы будут ориентироваться не на десктопы, а на интернет вещей (IoT). Идея в том, чтобы упростить обновление и обслуживание приложений, но не для пользователей, а для разработчиков. А уже потом появились и десктопные приложения, в том числе и с графическим интерфейсом. Если хотите поподробнее узнать историю Snap-пакетов, рекомендуем обратиться к блогу Алана Поупа.
Формат Flatpak был разработан Александром Ларссоном, главным инженером компании Red Hat. Формально это полностью независимый проект с открытым исходным кодом, в развитие которого участвуют многие известные разработчики из GNOME, Fedora и Red Hat. Цель Flatpak – создание надёжного механизма распространения настольных приложений вне зависимости от дистрибутива. До 2016-го проект именовался xdg-app. Подробнее об истории Flatpak можно узнать из блога Ларссона.
2. Область применения
У каждого формата пакетов есть как преимущества, так и недостатки. Всё зависит от того, зачем конкретно вам понадобился тот или иной софт. Никто не запрещает вам использовать Flatpak в связке со Snap-пакетами. Одно не исключает другого.
Но Flatpak подходит лишь для настольных ПК и ноутбуков (подробнее можно узнать вот тут), а Snap может использоваться ещё и на серверах. Например, Ubuntu Core (операционная система, ориентирующаяся на интернет вещей) полностью состоит из snap-пакетов, благодаря чему её проще обновлять и обслуживать. Flatpak, насколько мне известно, вообще не приспособлен к работе на удалённом сервере.
3. Время запуска
Snap-пакеты запускаются заметно медленнее, чем Flatpak, и это факт. Canonical уже давненько пытается решить проблему, но хоть сколько то заметных результатов пока нет.
Вот только на практике далеко не каждый пользователь вообще заметит хоть какую-то разницу. Не всё так страшно, но и оспаривать столь очевидный недостаток было бы глупо: Flatpak открывается быстрее. Я вот проверил время запуска Spotify, и, по-моему, Snap заметно отстаёт.
4. Производительность
Производительность – это не только про скорость отклика, но ещё и про стабильность. И тут у нас паритет: какие-то приложения лучше работают в формате Snap, какие-то – в формате Flatpak. Например, GNOME Boxes в формате Flatpak почему-то не поддерживает совместное использование устройств, хотя в Snap такой проблемы нет. А вот Spotify наоборот лучше работает в формате Flatpak (его я обычно и устанавливаю). Другими словами, вам стоит самостоятельно протестировать нужные вам приложения. Явного лидера в этой категории у нас пока нет.
5. Доступность и популярность
Формально и Snap, и Flatpak можно установить в любой дистрибутив, но у Flatpak тут всё-таки есть определённое преимущество. Дело в том, что многим разработчикам формат Snap-пакетов категорически не нравится, и они вырезают поддержку Snap из своих дистрибутивов. Например, так было с довольно популярным дистрибутивом Linux Mint: Snap-пакетов там по умолчанию нет, зато софт в формате Flatpak устанавливается всего в пару кликов. Формат Flatpak поддерживает и Pop!_OS, а вот дистрибутивы из семейства Ubuntu недавно отказались от использования Flatpak (возможно, под давлением со стороны Canonical). Другими словами, на свете полно дистрибутивов, в которых Flatpak-приложения доступны по умолчанию, а вот со Snap-пакетами могут быть проблемы.
Snap же обычно используется в Ubuntu и официальных редакциях Ubuntu. Там этот формат доступен сразу из коробки. Пользователям других дистрибутивов придётся всё настраивать вручную. Выходит, в десктопном сегменте Flatpak представлен гораздо лучше, чем Snap. Правда, это ещё не говорит о том, что у Flatpak больше пользователей, чем у снапа. И, хотя в магазине Flathub сейчас и можно найти подавляющее большинство популярных программ, приложений, доступных в формате Snap, всё-таки больше.
6. Открытый исходный код против проприетарного
Исходный код Flatpak открыт, а вот со снапом всё не так просто. Сам Snap – полностью открытый проект: всё, включая snapd (фоновая службы, отвечающая за установку и управление приложениями) открыто для исследования, но вся серверная часть разрабатывается непосредственно Canonical, без какого-либо участия сообщества.
Но среднестатистическому пользователю на такие мелочи обычно плевать: если приложение работает, пусть работает и дальше. В конце концов, многие и полностью проприетарным софтом пользуются. Но, если для вас важно использовать полностью открытый софт, ваш выбор – Flatpak.
7. Децентрализация против централизации
Большинство пользователей устанавливает Flatpak-приложения через Flathub. Но Flatpak не предполагает никаких ограничений для сторонних магазинов: если нужно, вы можете подключить другой источник и устанавливать приложения из него.
А вот Snap ограничен официальным магазином Canonical. И тут в дело вступает вкусовщина: кому-то нужны альтернативные магазины, а кому-то нравится, когда всё хранится в одном месте.
8. Обновление
Snap-пакеты по умолчанию обновляются в автоматическом режиме. Пользователь может настроить периодичность обновлений или приостановить и отложить обновление конкретных приложений.
У приложений в формате Flatpak автоматических обновлений нет. Однако, если в вашем дистрибутиве настроена интеграция Flatpak с центром приложений, вы будете получать уведомления о том, что какие-то из ваших приложений можно обновить вручную. Впрочем, эти уведомления можно проигнорировать, и никто вас заставлять не станет. Кстати, у нас уже есть подробный гайд по работе с софтом в формате Flatpak.
Другими словами, с Flatpak вы получаете больше контроля над установленным софтом. Однако игнорировать обновления всё-таки не стоит. А учитывая, сколько пользователей забывает или попросту не хочет тратить время на обновление системы, преимущество это, мягко говоря, спорное.
Итак, если вам нужны автоматические обновления, выбирайте Snap. Если же вы привыкли всё обновлять вручную, ваш выбор – Flatpak.
9. Функционирование
Flatpak не требует права администратора для установки приложений, чего нельзя сказать о Snap. Приложения в формате Flatpak по умолчанию запускаются в изолированной песочнице. Snap так тоже умеет, но использует для этого другие инструменты (в Flatpak всё работает через ядро Linux, а в Snap – через AppArmour).
10. Сопровождение пакетов
Чтобы максимально подробно разобраться в вопросе, я прошерстил кучу публикаций на Reddit и поговорил с несколькими мейнтейнерами. И вот к какому выводу мы пришли:
- snap-пакеты проще поддерживать и создавать
- с точки зрения безопасности Snap тоже немного впереди
- если в качестве магазина вы выбрали Flathub, можете рассчитывать на помощь в тестировании и оптимизации
Но, разумеется, если для вас это важно, стоит погрузиться в пучину технической документации по каждому из проектов.
Вы, кстати, какой формат предпочитаете? Flatpak или Snap? Поделитесь мыслями в комментариях. Новичкам наверняка пригодится ваш опыт.
Анкуш Дас,
It’s FOSS
25 января 2023