При установке или управлении приложениями в Linux пользователи сталкиваются с различными инструментами управления пакетами. Одними из самых известных являются APT и Snap. Эти два подхода значительно различаются по способам установки, структуре, политикам обновления и, в зависимости от характеристик и условий использования, могут быть более или менее подходящими.


1. Что такое APT?

APT — это сокращение от Advanced Package Tool, самого широко используемого инструмента управления пакетами в дистрибутивах на базе Debian (например, Ubuntu). Команда apt используется для установки или удаления .deb пакетов из системного репозитория.

Особенности APT

  • Отличное управление зависимостями: автоматически обрабатывает отношения между пакетами
  • Высокая интеграция с системой: устанавливает версии, соответствующие ОС
  • Легковесная установка: устанавливает только необходимые файлы, экономя место на диске
  • Нужны права суперпользователя: в основном устанавливается через sudo
  • Знакомо традиционным пользователям Linux
  • Высокая скорость выполнения: возможно мгновенное выполнение из локальной системы
  • Обновления всего системы и интеграция: возможно выполнение полного обновления через apt upgrade
sudo apt update
sudo apt install firefox

2. Что такое Snap?

Snap — это контейнерная система пакетов, разработанная Canonical (производителем Ubuntu). Snap представляет собой своего рода «самодостаточный» пакет, который включает все библиотеки, необходимые для выполнения данного приложения.

Особенности Snap

  • Выполняется в песочнице → повышенная безопасность
  • Нет проблем с зависимостями: включает все библиотеки самостоятельно
  • Поддержка автоматического обновления (периодически поддерживает последнюю версию в фоновом режиме)
  • Быстрая доставка: разработчик может напрямую регистрировать последнюю версию в Snap Store
  • Может быть медленным при запуске: задержка при загрузке/выполнении из-за особенностей контейнерного метода
  • Большое использование диска: увеличение объема из-за включения дублируемых библиотек
  • Место установки: используется структура монтирования /snap, ~/snap, loopback
  • Snap Store управляется компанией Canonical: некоторые приложения управляются непосредственно Canonical (например: Thunderbird)
sudo snap install firefox

📝 Примечание: по состоянию на Ubuntu 22.04 Firefox по умолчанию устанавливается в версии Snap.


3. Сравнение понятий APT и Snap

Элемент APT (Advanced Package Tool) Snap (Snapcraft)
Разработчик/оператор Проект Debian + Сообщество Ubuntu Canonical (производитель Ubuntu)
Структура установки Интеграция в системе (установка в /usr/bin, /etc) Независимая песочница, монтирование внутри /snap
Скорость выполнения Быстрая Относительно медленная (сжатое монтирование squashfs)
Использование диска Низкое Высокое (включает зависимости)
Способы обновления Интеграция с полным обновлением системы Автоматическое обновление отдельных приложений (трудно контролировать)
Безопасность Общий доступ к правам ОС Контроль прав на уровне приложений (песочница)
Интеграция с GUI магазина приложений Некоторые включены Snap имеет приоритетное отображение в Центре приложений Ubuntu (Gnome Software)
Репозиторий apt.ubuntu.com и т.д. snapcraft.io

4. Почему они разделились?

APT долгое время использовалась как стандартная система пакетов в Linux, что обеспечивает надежность и легковесность. Однако наличие сложных проблем с зависимостями, конфликтов между пакетами и проблем совместимости между различными дистрибутивами стало бременем для разработчиков.

С другой стороны, Snap обеспечивает независимость и стабильность для как дистрибьюторов, так и пользователей, помещая вместе все, что необходимо для выполнения приложения. Canonical стремится упростить распространение приложений для разработчиков без учета различий в средах дистрибутивов через Snap.


5. Какому пользователю рекомендуется?

Случай, когда APT подходит

  • Стабильность системы важна для администраторов серверов
  • Пользователи, желающие сэкономить дисковое пространство
  • Пользователи, предпочитающие традиционные подходы, существующие долгое время
  • Умелые пользователи, которые могут вручную регулировать конфликты зависимостей

Случай, когда Snap подходит

  • Столичные пользователи, желающие использовать последние версии приложений
  • Если необходимо быстро установить приложение, отсутствующее в дистрибутиве
  • Пользователи, стремящиеся поддерживать независимую среду для каждого приложения
  • Ситуации, требующие безопасной изоляции
  • Пользователи, предпочитающие автоматическое обновление

Заключение

APT и Snap могут сосуществовать, дополняя друг друга. В общем, APT рекомендуется для основных компонентов системы или администрирования серверов, а Snap может быть более подходящим для настольных приложений или GUI-приложений, требующих самых последних функций. Важно правильно выбрать инструмент, соответствующий пользовательской среде.


Tux на перекрестке APT против SNAP