ServerAID
Найти гайд, команду, тег… ⌘ K
Глоссарий  ·  термин

snap — что это и зачем

snap — система упаковки и установки приложений от Canonical, разработанная как альтернатива apt. Каждый snap — самодостаточный пакет со своими зависимостями, изолированный от системы через AppArmor. Используется на Ubuntu для Firefox, Chromium, microk8s и многих desktop-приложений.

snap

snap — система упаковки и установки приложений от Canonical, разработанная как альтернатива apt. Каждый snap — самодостаточный пакет со своими зависимостями, изолированный от системы через AppArmor. Используется на Ubuntu для Firefox, Chromium, microk8s и многих desktop-приложений.

Что это в одном абзаце

Идея snap простая: вместо того, чтобы программа полагалась на конкретные версии библиотек в системе (как .deb через apt), snap несёт все зависимости внутри себя. Это контейнер с приложением, который можно установить на любой Ubuntu, Debian, Fedora и Arch — везде получится одинаковая работающая программа. Платой становится больший размер пакетов и скорость запуска.

sudo snap install firefox             # поставить snap
sudo snap refresh                     # обновить все snap-ы
sudo snap list                        # список установленных
sudo snap remove firefox              # удалить
sudo snap info firefox                # подробности (каналы, ревизии)

snap-ы качаются из централизованного каталога Snap Store (snapcraft.io), управляемого Canonical.

Из чего состоит экосистема snap

  • snapd — фоновый демон, который скачивает, ставит и обновляет snap-ы. Идёт в Ubuntu по умолчанию.
  • snap — CLI-утилита для управления.
  • Snap Store — каталог пакетов на snapcraft.io. Любой может опубликовать snap.
  • Каналы (channels) — ветки разработки: stable / candidate / beta / edge. По умолчанию ставится stable.
  • Snapcraft — инструмент для разработчиков, упаковывающий приложение в snap (yaml-конфиг, рецепт сборки).

Установленные snap-ы лежат в /snap/<имя>/<ревизия>/ как смонтированные squashfs-образы. После каждого обновления старая ревизия некоторое время хранится — для отката (sudo snap revert <name>).

Чем snap отличается от apt

Свойство apt snap
Источник пакетов репозитории Debian/Ubuntu Snap Store (Canonical)
Изоляция нет AppArmor + cgroups
Зависимости общие системные свои внутри пакета
Размер пакета компактный крупный (десятки–сотни МБ)
Скорость запуска мгновенно заметная задержка
Автообновления через unattended-upgrades принудительные, по умолчанию
Привязка к релизу Ubuntu да нет
Подходит для серверов ⚠️ (не всегда)

Главные плюсы snap:

  • Универсальность — один пакет работает на 24.04, 22.04, 20.04 и даже Fedora.
  • Изоляция — snap не может беспрепятственно лезть в ~/Documents или сеть — нужны явные интерфейсы (home, network, removable-media).
  • Свежесть — Firefox в snap обновляется быстрее, чем в apt-репозиториях LTS.
  • Откат — старые ревизии хранятся, snap revert возвращает прошлую версию одной командой.

Минусы:

  • Размер диска — каждый snap несёт свои библиотеки, плюс хранит несколько ревизий.
  • Скорость холодного старта — squashfs-образ нужно смонтировать, AppArmor-профиль загрузить.
  • Принудительные обновления — это политика Canonical: snap-ы обновляются автоматически, без полноценного off-switch. Можно отложить через snap refresh --hold, но не насовсем.
  • Сообщество — часть Linux-комьюнити критикует snap за централизацию (один Snap Store, контролируемый Canonical) — отсюда популярность flatpak как децентрализованной альтернативы.

snap vs flatpak

flatpak — третья пакетная система на Ubuntu. Концептуально похожа на snap (изоляция, самодостаточные пакеты), но:

  • flatpak децентрализован — по умолчанию каталог Flathub, но можно подключать любые «remote»-репозитории.
  • flatpak ориентирован на desktop — для серверных демонов почти не используется.
  • flatpak не ставится в Ubuntu по умолчанию — нужен sudo apt install flatpak.
  • Изоляция — через bubblewrap, не AppArmor.

На Ubuntu всё чаще ставят оба: snap для системного (Firefox, Chromium) + flatpak для прочего desktop-софта (часто более «свежего» в Flathub).

Когда snap уместен на сервере

Большинство серверного админства использует snap избирательно:

  • microk8s — самый популярный snap для серверов: лёгкий Kubernetes одной командой sudo snap install microk8s --classic.
  • certbot — рекомендованный официально способ установки сертбота (apt-репозиторий устарел).
  • lxd — управление контейнерами LXC.
  • docker — есть snap-вариант, но в проде обычно ставят из официального apt-репозитория Docker.

Когда snap не ставят на сервер: для production-демонов с предсказуемым SLA. Принудительные обновления + неожиданные изменения профилей AppArmor — риск, который не оправдан, если есть apt-альтернатива.

Грабли snap

  • /home снаружи snap-ов — snap-приложения по умолчанию видят только ~/snap/<name>/. Чтобы открыть файл из другого места, нужно либо переместить его, либо разрешить интерфейс home (sudo snap connect <name>:home).
  • Запуск из контейнера/Docker — snap почти невозможно запустить внутри контейнера: snapd требует systemd-окружения с cgroups.
  • Принудительные обновления — даже если ваш скрипт деплоя ожидает фиксированную версию microk8s, snap может обновить её без спроса. Решение — sudo snap refresh --hold microk8s.
  • Loop-устройства — каждый smonted snap появляется как /dev/loopN и в df. Это нормально, но забивает вывод.

Частые вопросы

Что такое snap в Ubuntu

Это система упаковки приложений в самодостаточные пакеты, разработанная Canonical. snap-пакет несёт все зависимости внутри себя и работает изолированно через AppArmor. На Ubuntu используется по умолчанию для Firefox, Chromium, microk8s и многих других программ — параллельно с обычным apt.

Чем snap отличается от apt

apt ставит пакеты .deb в систему, разделяя зависимости с другими пакетами; snap ставит самодостаточный контейнер с собственными зависимостями. Snap изолирован, обновляется автоматически, работает на разных дистрибутивах, но занимает больше места и медленнее стартует. apt быстрее, компактнее и привязан к релизу Ubuntu.

Где snap-приложения хранят файлы

Установленные snap-ы лежат в /snap/<имя>/<ревизия>/ как смонтированные squashfs-образы. Пользовательские данные snap-приложений — в ~/snap/<имя>/<ревизия>/. Чтобы snap-программа увидела ваш ~/Documents, нужно подключить интерфейс home: sudo snap connect <name>:home.

Можно ли отключить автообновления snap

Полностью — нет, политика Canonical не позволяет. Можно отложить: sudo snap refresh --hold (на всё) или sudo snap refresh --hold <package> (на конкретный пакет, до 90 дней). Можно установить расписание: sudo snap set system refresh.timer=02:00-04:00,sat.

Как удалить snap полностью с Ubuntu

sudo apt purge snapd удалит сам демон и снимет все установленные snap-ы. Для чистоты — добавьте /etc/apt/preferences.d/nosnap.pref с Pin: package snapd / Pin-Priority: -1, чтобы snap не вернулся при следующих обновлениях. Учтите: на чистой Ubuntu Firefox без snap придётся ставить из стороннего репозитория Mozilla.

snap или flatpak — что лучше

Для системного ПО на Ubuntu — snap (он встроен, и Canonical следит за каталогом). Для desktop — часто flatpak: каталог Flathub шире, обновления свежее, изоляция на bubblewrap некоторым кажется проще. На практике на Ubuntu Desktop ставят оба и выбирают пакет по доступности в каталоге.

Что почитать

  • apt — традиционный пакетный менеджер Ubuntu, антипод snap. Для серверов почти всегда выбирают его.
  • демон в Linux — snapd работает как фоновой демон через systemd; знание systemd помогает в отладке проблем с обновлениями.
  • apt update и apt upgrade — практический гайд по управлению apt-пакетами; параллельно с ним работают и snap-ы.

Похожие материалы

grep — что это и зачем
Глоссарий

grep — что это и зачем

grep — стандартная команда Linux для поиска строк по шаблону внутри текстовых файлов и потоков. Берёт текст на вход, отдаёт строки, в которых нашлось совпадение. Базовый инструмент работы с логами, конфигами, выводом других команд через пайп.

Редакция
find — что это и зачем
Глоссарий

find — что это и зачем

find — стандартная команда Linux для поиска файлов и каталогов по имени, типу, правам, размеру, дате и десяткам других критериев. С помощью `-exec` поверх найденного можно сразу выполнять команды. Универсальный инструмент админа для массовой работы с файловой системой.

Редакция
LVM — что это и зачем
Глоссарий

LVM — что это и зачем

LVM — слой абстракции между физическими дисками и файловыми системами в Linux. Объединяет диски в пулы (Volume Groups), нарезает их на логические тома (Logical Volumes) и позволяет изменять размер на лету. Альтернатива классическому partitioning, которая делает работу с дисками гибкой.

Редакция
swap — что это и зачем
Глоссарий

swap — что это и зачем

swap — пространство на диске, которое Linux использует как «продолжение» оперативной памяти, когда физической RAM не хватает. Бывает в виде отдельного swap-раздела или файла. На современных серверах с большим количеством RAM swap всё равно нужен — но не для скорости, а для устойчивости.

Редакция