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

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

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

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-ы.

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

Сроки поддержки Ubuntu LTS — на сколько хватает релиза
Глоссарий

Сроки поддержки Ubuntu LTS — на сколько хватает релиза

Ubuntu LTS — это релиз с долгой поддержкой: 5 лет бесплатных security-обновлений и 10 лет с подпиской Ubuntu Pro. Промежуточные релизы (24.10, 25.04) живут всего 9 месяцев. Разбираем, какие версии сейчас актуальны, до какой даты безопасно сидеть на 22.04 и 24.04, и когда выходит 26.04 LTS.

Редакция
Debian или Ubuntu — что выбрать
Глоссарий

Debian или Ubuntu — что выбрать

Debian и Ubuntu — две родственные операционные системы: Ubuntu сделана на базе Debian и тянет оттуда пакеты, формат `.deb` и пакетный менеджер apt. Различия — в скорости релизов, наборе из коробки и философии. Кратко: Debian Stable консервативнее и аскетичнее, Ubuntu LTS — свежее и удобнее, особенно для рабочего стола и облаков. Под прод подходят оба, выбор сводится к тому, что вам важнее: предсказуемость или новизна.

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

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

bash (Bourne Again SHell) — это командная оболочка, которая обрабатывает то, что вы вводите в терминале Linux. Запускает программы, расширяет переменные, выполняет конструкции `if` / `for`, читает скрипты из файлов с шебангом `#!/bin/bash`. На Ubuntu — оболочка по умолчанию для интерактивных пользователей; для системных скриптов используют более строгий `/bin/sh` (`dash`).

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

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

Ubuntu — самый популярный дистрибутив Linux: бесплатная операционная система на базе Debian, удобная и для серверов, и для рабочего стола. Под капотом Linux-ядро, поверх — пакетный менеджер apt, рабочий стол GNOME (на Desktop) и стек systemd-сервисов. Релизы выходят каждые полгода, LTS-версии — раз в два года и поддерживаются 5 лет.

Редакция