Snap — ключевая технология упаковки приложений в Ubuntu 24.04. Рассказываем, как устанавливать Snap-приложения (в том числе в классическом режиме без изоляции), удалять их, управлять каналами и обновлениями, а также как полностью удалить Snap из системы.
Snap, разработанный Canonical, дополняет привычные способы установки программ через .deb и APT, предлагая новый подход — изолированные, самодостаточные приложения, которые можно запускать на любых дистрибутивах Linux. Особенно удобно использовать Snap при настройке приложений на VPS — он упрощает развертывание и обеспечивает стабильность обновлений. В этой статье мы разберём, как устроен Snap и как устанавливать, обновлять, откатывать и удалять snap-приложения на Ubuntu 24.04.
В предыдущей статье мы начали рассказывать про Snap и Flatpak, но углубились в установку именно Flatpak. Теперь погрузимся в тему настроек Snap.
Как работает Snap
Snap — это формат пакетов, которые содержат в себе всё необходимое для работы: бинарные файлы приложения, библиотеки, ресурсы и даже настройки окружения. Такой подход позволяет запускать одни и те же пакеты на разных дистрибутивах Linux без модификаций.
За работу Snap отвечает служба snapd, которая управляет установкой, обновлением, запуском и удалением пакетов. Каждое приложение имеет вид файла с расширением .snap. Это squashfs-архив, который монтируется в систему как read-only. Запуск и работа пакета контролируются snapd, который также управляет правами доступа и обновлениями.
Сами пакеты и их данные размещаются в разных частях файловой системы. Загруженные исполняемые файлы и зависимости находятся в /var/lib/snapd/snaps/. Пользовательские данные и настройки хранятся в ~/snap/<имя_программы>/ — эта директория создаётся в домашней папке пользователя и содержит конфигурацию, временные файлы, профили, кеш и историю работы приложения. Такое разделение позволяет Snap сохранять и изоляцию, и данные пользователя во время обновлений и переустановок.
Snap-пакеты, особенно графические приложения, весят больше, чем их аналоги в .deb. Это связано с тем, что в пакет включаются все зависимости, даже если они уже есть в системе. Также в /var/lib/snapd/snaps/ сохраняется предыдущая версия для возможного отката.
Установка Snap в Ubuntu 24.04
В Ubuntu 24.04 служба Snap предустановлена по умолчанию. Однако на минимальных образах, в контейнерах или при ручной сборке системы она может отсутствовать.
Чтобы проверить, установлен ли Snap и работает ли служба snapd, выполните команду:
snap version
Если команда не найдена или вывод отсутствует — это значит, что Snap отсутствует в системе. В этом случае установите его с помощью APT:
sudo apt update
sudo apt install snapd
Пакет snapd устанавливает:
- фоновую службу snapd, которая управляет жизненным циклом Snap-пакетов;
- системный сокет snapd.socket для обмена между приложениями и демоном;
- клиентскую утилиту snap для установки, обновления и удаления приложений.
После установки можно вручную перезапустить или проверить состояние службы и сокета командами:
sudo systemctl start snapd
sudo systemctl enable snapd
systemctl status snapd
systemctl status snapd.socket
Если snapd.socket активен, значит система готова к установке и использованию Snap-пакетов.
Установка приложений через Snap
Для установки приложений через Snap используется команда:
sudo snap install <имя_пакета>
Перед установкой можно выполнить поиск нужного приложения по ключевому слову:
snap find <ключ>
Команда отобразит список доступных пакетов, краткое описание, издателя и канал.
Например, установка медиаплеера VLC из стабильного канала (по умолчанию):
sudo snap install vlc
Программа будет изолирована от системы, использовать собственные зависимости и обновляться автоматически.
Установка Visual Studio Code:
sudo snap install code --classic
Флаг --classic отключает полную изоляцию; он используется для установки приложений, которым нужен доступ к системным путям и инструментам вне окружения Snap. Это необходимо, например, для редакторов кода (VS Code, IntelliJ), терминальных утилит, приложений, которые запускают внешние процессы или работают с файлами в нестандартных местах. При использовании этого флага Snap-пакет будет иметь классический доступ, как у обычных .deb-пакетов, но при этом останется управляемым через Snap. Без --classic такие приложения не смогут функционировать корректно, потому что Snap по умолчанию изолирует среду исполнения от основной системы.
Управление установленными Snap-пакетами
После установки приложения через Snap вы можете управлять им так же, как и обычным пакетом: просматривать, обновлять, откатывать и удалять. Всё это выполняется через команду snap.
Чтобы посмотреть список установленных Snap-пакетов, используйте команду:
snap list
Вывод включает:
- имя пакета,
- версию,
- ревизию,
- канал обновлений (например, stable),
- издателя.
Пример:

Snap обновляет приложения автоматически в фоновом режиме. Если вы хотите убедиться, что установлены актуальные версии перед отключением Интернета, деплоем или после настройки системы, то можно обновиться вручную так:
sudo snap refresh
Автообновления происходят несколько раз в день. Это может быть неудобно при слабом канале связи (мобильный интернет, корпоративный VPN) и если нужна максимальная стабильность окружения. В таких случаях можно установить разрешённое время для обновлений:
sudo snap set system refresh.timer=mon,wed,fri,6:00-8:00
Или отложить обновление:
sudo snap refresh --hold=168h
Snap всё равно будет проверять наличие патчей, но установит их только в разрешённое время.
Snap хранит одну предыдущую версию приложения, поэтому, если после обновления программа работает некорректно, можно откатить её:
sudo snap revert <пакет>
Чтобы удалить Snap-пакет:
sudo snap remove <пакет>
Команда удаляет пакет и симлинки, но пользовательская конфигурация сохраняется. Для полной очистки удалите её вручную или используйте флаг --purge.
Управление Snap-сервисом
За работу Snap в системе отвечает служба snapd. Она должна быть активна для установки, обновления и запуска Snap-приложений.
Чтобы узнать, работает ли snapd, выполните:
systemctl status snapd
В выводе должно быть active (running). Если служба отключена или завершилась с ошибкой, Snap-пакеты не смогут функционировать.
Если Snap ведёт себя нестабильно (например, не запускаются приложения, не проходит установка), службу можно перезапустить:
sudo systemctl restart snapd
Это безопасно, поскольку активные приложения при этом продолжат работу.
snapd использует системный сокет snapd.socket для коммуникации между клиентом (snap) и фоновым процессом. Проверка его статуса:
systemctl status snapd.socket
Если сокет отключён, команда snap может зависать или завершаться с ошибкой. В таком случае включите его:
sudo systemctl enable --now snapd.socket
После этого Snap должен работать корректно.
Работа с каналами (channels)
У каждого Snap-пакета может быть несколько каналов (версий):
- stable — стабильная, протестированная версия (по умолчанию);
- candidate — кандидат в релиз, почти стабильная;
- beta — тестовая версия, может содержать баги;
- edge — самая свежая, часто собираемая из исходников, предназначена для разработчиков и тестирования.
Чтобы установить пакет из нужного канала, укажите его при установке:
sudo snap install <пакет> --channel=<канал>
Это полезно, если вам нужно протестировать новые возможности приложения, получить исправления до официального релиза или сравнить поведение разных версий.
После установки можно в любой момент переключиться на другой канал с помощью команды snap refresh:
sudo snap refresh chromium --channel=stable
Как отключить Snap
Snap — интегрированная часть Ubuntu 24.04, однако он не является обязательным компонентом и его можно отключить или полностью удалить. Обратите внимание, что удаление Snap может повлиять на работу приложений, которые распространяются только в этом формате. Например, в Ubuntu 24.04 браузер Chromium доступен исключительно как Snap.
Удаление установленного Snap-пакета:
sudo snap remove --purge <имя_пакета>
Если нужно полностью отключить Snap, повторите команду для каждого установленного приложения. Чтобы посмотреть их список:
snap list
Удаление самого Snap и связанных компонентов:
sudo apt purge snapd
sudo rm -rf ~/snap /snap /var/snap /var/lib/snapd
Это приведёт к полному удалению Snap-инфраструктуры из системы.
Конфликты между Snap и deb-версиями программ
В некоторых случаях одно и то же приложение может быть доступно как в формате .deb, так и в виде Snap-пакета. Это может привести к путанице или конфликтам при установке и запуске.
Основные возможные проблемы:
- Дублирование приложений — например, у вас может оказаться установлено одно приложение и из Snap, и из стороннего PPA как .deb. Оба будут отображаться одинаково в меню и командной строке, но работать по-разному.
- Разное поведение — Snap-приложения запускаются медленнее, работают в изоляции и могут не иметь доступа к системным путям, что иногда вызывает ошибки, особенно при работе с внешними инструментами или файлами.
- Приоритет в $PATH — если и .deb, и Snap версия имеют один и тот же бинарный файл (например, code), то приоритет будет зависеть от порядка путей в переменной окружения $PATH. Обычно Snap-путь /snap/bin идёт раньше, поэтому запускается Snap-версия.
Чтобы избежать конфликтов, явно указывайте путь к нужной версии, например:
/usr/bin/code # deb-версия
/snap/bin/code # snap-версия
Также удаляйте лишние версии, если они не используются, и контролируйте источники пакетов (PPA, Snap, Flatpak) при установке. Если вы работаете в стабильной среде — например, на сервере или в корпоративной системе — придерживайтесь одного формата для конкретного приложения.
Читайте в блоге:
- Fail2ban и UFW: настройка базовой защиты сервера Ubuntu 24.04 LTS
- Как настроить SSH-доступ в Ubuntu 24.04 LTS: пошаговое руководство
- Защита Mosquitto на Ubuntu 24.04: настройка аутентификации и шифрования