Snap — формат самодостаточных пакетов Linux, разработанный Canonical. Каждый snap-пакет содержит приложение и все его зависимости в едином сжатом образе (SquashFS). Изоляция обеспечивается через namespace-ы ядра и AppArmor. Обновления snap-пакетов происходят автоматически.
Особенности
- Самодостаточность — snap включает библиотеки и зависимости, не конфликтуя с системными пакетами.
- Кросс-дистрибутивность — один snap работает на Ubuntu, Fedora, Arch, Debian.
- Автообновление — snapd проверяет обновления 4 раза в сутки.
- Sandboxing — ограниченный доступ к системным ресурсам через интерфейсы (interfaces).
Критика
Snap подвергается критике: медленный запуск (монтирование SquashFS при первом запуске); принудительные автообновления без возможности отключить; Canonical контролирует Snap Store (в отличие от apt-репозиториев); большой размер пакетов из-за включённых зависимостей.
Snap vs Flatpak
Flatpak — аналогичная технология, ориентированная на настольные приложения, контролируемая community (не одной компанией). На серверах Snap более распространён из-за Ubuntu. На десктопах Flatpak становится предпочтительным.
История
Snap разработан Canonical в 2014 году для Ubuntu Touch. Snapd v2 вышел в 2016 году для Ubuntu 16.04 LTS. В Ubuntu 20.04 часть пакетов (в том числе Firefox с 2022 года) принудительно переведена на snap. Это вызвало споры: snap-версия Firefox запускается медленнее deb-версии.
Связь с хостингом
На серверах snap используется редко: большинство администраторов предпочитают apt для серверных пакетов. Исключение: snap install certbot --classic — официально рекомендуемый способ установки Certbot от EFF. LXD (управление контейнерами) также устанавливается через snap по рекомендации Ubuntu. На production-серверах snap-автообновления могут создавать нежелательные изменения — рекомендуется настраивать refresh.hold.
История Snap
Snap разработан Canonical для Ubuntu 16.04 в 2016 году. Формат .snap — squashfs-архив с приложением и всеми зависимостями. Snapcraft — инструмент сборки snap-пакетов. К 2023 году Snap Store содержит более 10 000 пакетов. Критика: медленный запуск из-за монтирования squashfs, высокое потребление места, принудительное использование в Ubuntu 22.04 для Firefox. openSUSE и Fedora также поддерживают Snap.
Snap vs Flatpak vs AppImage
| Параметр | Snap | Flatpak | AppImage |
|---|---|---|---|
| Изоляция | AppArmor | Bubblewrap | нет |
| Автообновление | да (фоново) | вручную | нет |
| Серверное ПО | да | редко | нет |
| Дистрибутив | Ubuntu-центричный | универсальный | универсальный |
Snap на сервере
На VPS Snap полезен для установки Certbot (snap install certbot --classic) — официально рекомендуемый способ для Let's Encrypt. Также через Snap устанавливают Docker, microk8s. Недостаток — snap-демон (snapd) потребляет постоянную память (~50 MB) даже на минимальных серверах.
Типичные ошибки
- Установка Snap на минимальный сервер (512 MB RAM) — snapd занимает значимую часть памяти.
- Смешивание snap и apt версий одного ПО: конфликты путей и конфигов.
- Игнорирование автообновлений: snap обновляется автоматически, что может сломать работающий сервис.
На Ubuntu Server 22.04 Firefox и Chromium поставляются только как snap-пакеты, что вызвало споры в сообществе. Для серверных приложений snap обеспечивает автоматические обновления безопасности без участия администратора. Удалить snapd полностью: systemctl disable --now snapd && apt purge snapd.