Гид по технологиям

Что нужно знать о пакетах Snap в Ubuntu 20.04

11 min read Linux Обновлено 26 Dec 2025
Пакеты Snap в Ubuntu 20.04 — обзор и руководство
Пакеты Snap в Ubuntu 20.04 — обзор и руководство

Пакеты Snap в Ubuntu 20.04 — обзор и подсказки

Snap — это формат упаковки приложений для Linux, который объединяет приложение и его зависимости в одном файле и запускает его в изолированном окружении. Snap упрощает установку и обновления, снижая конфликты библиотек, но увеличивает объём дискового пространства и требует службы snapd. В статье — как установить snapd на популярных дистрибутивах, управлять каналами обновлений, удалять пакеты, сценарии использования, рекомендации по безопасности, отладка и чек-листы для пользователей и администраторов.

Быстрые ссылки

  • Что такое пакеты Snap
  • Установка snapd
  • Установка snap пакетов
  • Каналы обновлений snap
  • Удаление snap пакета
  • Справочник по snap

Что такое пакеты Snap?

Кратко: Snap — это контейнеризированный формат приложений для Linux. Он упаковывает приложение и все необходимые зависимости в единый сжатый файл, который монтируется как виртуальная файловая система и запускается в изолированной песочнице (sandbox).

Почему это появилось

Раньше установка приложений на Linux могла привести к «адской зависимости»: одна программа требует одну версию библиотеки, другая — другую, обновления ломали работу. Пакетные менеджеры вроде apt, dnf и pacman снизили часть проблем, но конфликт версий библиотек по-прежнему встречается.

Snap (часто называют Snappy) — один из ответов на эту проблему. Он унаследовал идеи от Click (Ubuntu Touch) и существует наряду с другими форматами упаковки приложений: Flatpak и AppImage.

Как это работает технически

  • Snap — это единый сжатый файл. При установке он распаковывается и монтируется как SquashFS.
  • Для монтирования используется loop-устройство (/dev/loopN), и содержимое проявляется как файловая система в каталоге /snap/<название>/.
  • Приложение запускается в изолированном окружении с собственными библиотеками. Внешние ресурсы и привилегии контролируются через интерфейсы snap (например, доступ к камере, сети, файловой системе).

Плюсы

  • Простая установка и удаление.
  • Меньше конфликтов версий библиотек между приложениями.
  • Автоматические обновления по каналам (stable, candidate, beta, edge).
  • Универсальность: один и тот же snap может работать на разных дистрибутивах.

Минусы

  • Больше занимаемого дискового пространства, так как пакеты содержат зависимости.
  • Дублирование общих сервисов (если несколько snap-ов содержат одни и те же большие библиотеки).
  • Потенциальные ограничения по интеграции с системой (темы, окружение рабочего стола), хотя для этого есть интерфейсы и «темы» в виде snap-ов.

Когда стоит использовать

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

Когда не стоит использовать

  • На серверах с ограничённым дисковым пространством и строгими требованиями к общему управлению библиотеками.
  • Когда приложению требуется глубокая интеграция с системной библиотекой и низкоуровневыми модулями.

Важно: Snap — это инструмент. Он решает конкретные проблемы, но не универсально лучше всех альтернатив.

Установка snapd

Snapd — это демон, который управляет snap-пакетами. На Ubuntu 16.04 и выше snapd уже включён по умолчанию. Для других дистрибутивов его может потребоваться установить.

Установка на Fedora

sudo dnf install snapd

Установка на Manjaro / Arch

sudo pacman -Sy snapd

Активировать сокет snapd сразу:

sudo systemctl enable --now snapd.socket

После установки проверьте версию клиента и демона:

snap version

Вы увидите версию snap-клиента, snapd, серию (series) и информацию о дистрибутиве и ядре.

Дополнительные заметки по установке

  • На некоторых дистрибутивах (например, на строгих релизах RHEL/CentOS/Alma) потребуются дополнительные шаги для включения EPEL/репозиториев.
  • Если вы используете контейнеры или минимальные образы, snapd может не работать без systemd.

Установка snap пакетов

Поиск и установка пакета очень просты:

Поиск:

snap find gimp

Установка (взять значение из столбца Name):

sudo snap install gimp

Во время установки snap скачивает архив, распаковывает и монтирует его как SquashFS. В результате появится точка монтирования, например /snap/gimp/252 — где 252 — ревизия (rev).

Проверка точек монтирования с помощью df

Чтобы увидеть, как snap монтирует SquashFS-образы, используйте:

df | grep gimp

Или чтобы фильтровать только SquashFS:

df -t squashfs

/dev/loopN — это loop-устройство, которое делает файл доступным как блочное устройство. Каждый установленный snap-монтаж создаёт отдельное /dev/loopN.

Просмотр установленных snap пакетов:

snap list

Пример вывода (перевод и пояснения):

Name                Version                Rev   Tracking  Publisher     Notes
core                16-2.43.3              8689  stable    canonical*    core
core18              20200124               1668  stable    canonical*    base
gimp                2.10.18                252   stable    snapcrafters  -
gnome-3-26-1604     3.26.0.20191114        98    stable    canonical*    -
...

Колонки:

  • Name: имя snap-пакета.
  • Version: версия ПО внутри snap.
  • Rev: ревизия snap-пакета (уникальное число сборки).
  • Tracking: канал обновлений (stable, candidate, beta, edge).
  • Publisher: издатель snap. Если издатель верифицирован, рядом стоит знак подтверждения (в терминале может отображаться «*» или Unicode-значок).
  • Notes: служебные заметки (например, base или core).

Пример интерпретации: хотя в списке показано 10 установленных snap-пакетов, система может иметь больше /dev/loop устройств — потому что некоторые пакеты имеют отдельные ревизии или дополнительные базовые пакеты, которые также монтируются.

Каналы snap

Каналы определяют, откуда snap получает обновления. Есть четыре основных канала:

  • stable — самый стабильный, рекомендуется для продакшена.
  • candidate — кандидат на релиз, близок к стабильной версии.
  • beta — тестовая версия, может содержать ошибки.
  • edge — самые ранние сборки, для тестирования и разработки.

Просмотр информации о пакете:

snap info gtk-common-themes

Смена канала для конкретного пакета:

sudo snap refresh gtk-common-themes --channel=beta

Список доступных обновлений для всех пакетов:

sudo snap refresh --list

Принудительное обновление пакета:

sudo snap refresh gtk-common-themes

Рекомендация: в большинстве случаев оставайтесь на stable. Используйте beta/edge только для тестирования или если вам нужна конкретная новая функция.

Удаление snap пакета

Чтобы удалить пакет:

sudo snap remove gimp

Замечание: удаление snap освобождает ревизию, но иногда глобальные данные приложения находятся в ~/snap/ и их нужно удалить вручную, если хотите полностью очистить следы.

Справочник по snap — расширенная шпаргалка

Основные команды

  • Поиск пакета: snap find
  • Установка: sudo snap install
  • Список установленных: snap list
  • Информация о пакете: snap info
  • Смена канала: sudo snap refresh --channel=
  • Проверка доступных обновлений: sudo snap refresh --list
  • Ручное обновление: sudo snap refresh
  • Удаление: sudo snap remove

Дополнительные команды

  • Просмотр логов snap: journalctl -u snapd или snap logs (если поддерживается)
  • Управление ревизиями: snap revert
  • Отключение интерфейса: snap disconnect :
  • Просмотр интерфейсов: snap interfaces

Советы по использованию

  • Очистка пользовательских данных: удалите каталог ~/snap/ после удаления, если необходимо.
  • Если пакет занимает много места, проверьте ревизии: sudo snap list --all и удалите старые ревизии, которые не используются.

Диагностика и устранение проблем

Частые проблемы и шаги устранения:

  1. Snap не запускается

    • Проверьте логи: journalctl -u snapd и snap logs .
    • Убедитесь, что у вас хватает прав доступа (AppArmor/SELinux могут блокировать).
  2. Проблемы с темами и интеграцией рабочего стола

    • Установите соответствующие темы snap (например, gtk-common-themes).
    • Проверьте права доступа к X11/Wayland: некоторые snaps требуют дополнительных интерфейсов.
  3. Недостаток пространства на диске

    • Удалите старые ревизии: sudo snap remove --revision= или используйте snap list --all и затем sudo snap remove --revision .
    • Проверьте раздел, где хранятся loop-образы (/var/lib/snapd/snaps), и очистите ненужные файлы.
  4. snapd не запускается

    • Перезапустите сервис: sudo systemctl restart snapd.
    • Проверьте статус: systemctl status snapd.

Безопасность и приватность

Изоляция

Snap запускает приложения в песочнице и управляет доступом к ресурсам через интерфейсы. Это повышает безопасность по сравнению с «сырой» установкой, но не делает приложение полностью неизменяемым.

AppArmor и SELinux

  • На системах с AppArmor snap использует профиль безопасности. Убедитесь, что AppArmor включён и профили не сломаны.
  • На системах с SELinux могут потребоваться дополнительные настройки для корректной работы.

Права приложений

  • Snap предоставляет интерфейсы для управления доступом (network, removable-media, camera и т.д.).
  • Просмотрите и измените права: snap connections и snap disconnect / snap connect.

Приватность и GDPR

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

Сравнение: Snap, Flatpak, AppImage, классические пакеты

КритерийSnapFlatpakAppImage.deb/.rpm (классика)
ИзоляцияХорошая (sandbox)Хорошая (sandbox)Нет (просто исполняемый файл)Нет

| Универсальность между дистрибутивами | Да | Да | Да | Нет (зависит от дистрибутива) | Занимаемое место | Большое (включает зависимости) | Большое | Среднее | Малое (использует системные библиотеки) | Управление обновлениями | Авто, каналы | Авто, репозитории | Ручное | Через пакетный менеджер | Интеграция с системой | Средняя | Хорошая | Низкая | Полная |

Выбор зависит от задачи: для настольных приложений Snap и Flatpak дают удобный баланс между совместимостью и изоляцией. AppImage хорош для переносимых единовременных запусков. Классические пакеты лучше для системных компонентов и серверов.

Рольовые чек-листы

Чек-лист для конечного пользователя

  • Установлен snapd?
  • Использовать канал stable для рабочей машины.
  • Проверить сетевые и файловые разрешения для приложения.
  • После удаления пакета проверить ~/snap/ и удалить остаточные данные при необходимости.

Чек-лист для администратора

  • Развернуть snapd на целевых системах и убедиться, что systemd поддерживается.
  • Настроить мониторинг места на диске и количество loop-устройств.
  • Решить политику по обновлениям: разрешать автоматические обновления или контролировать через скрипты.
  • В корпоративной сети рассмотреть приватный snap-репозиторий или закреплённые версии.

Чек-лист для разработчика приложения

  • Проверить, какие интерфейсы требуются (network, audio, camera и т. п.).
  • Настроить confinement (strict, classic) и протестировать ограничения.
  • Предусмотреть перенос пользовательских данных в ~/snap/.
  • Тестировать приложение на разных каналах и дистрибутивах.

SOP: Быстрая инструкция для установки приложения через snap (для операторов)

  1. Проверьте наличие snapd: snap version.
  2. Если snapd не установлен, установите и запустите сервис (см. раздел «Установка snapd»).
  3. Поиск пакета: snap find .
  4. Установите: sudo snap install .
  5. Проверьте: snap list и df -t squashfs.
  6. При необходимости смените канал: sudo snap refresh --channel=.
  7. Для удаления: sudo snap remove и очистка ~/snap/.

Runbook для инцидентов и отката

Сценарий: После обновления snap приложение стало некорректно работать

  1. Проверить список обновлений: sudo snap refresh --list.
  2. Если новая ревизия установлена, вернуться к предыдущей ревизии: sudo snap revert .
  3. Если revert недоступен, удалить текущую ревизию: sudo snap remove и установить конкретную ревизию: sudo snap install --revision=.
  4. Проверить логи: journalctl -u snapd и snap logs .
  5. Сообщить издателю пакета через snap store или issue tracker.

Тест-кейсы и критерии приёмки

Критерии приёмки для установки snap-пакета на тестовой машине

  • Установка snapd прошла без ошибок.
  • snap version отображает клиент и демона.
  • sudo snap install устанавливает пакет и создает точку монтирования в /snap.
  • Приложение запускается и выполняет базовые функции.
  • При удалении sudo snap remove приложение удаляется, а данные в ~/snap/ можно удалить вручную.

Тест-кейсы

  • Установка из stable канала и запуск приложения.
  • Смена на beta/edge и проверка обновлений.
  • Откат ревизии с помощью snap revert.
  • Проверка поведения при ограниченном месте на диске.

Ментальные модели и рекомендации

  • Подумайте о snap как о «мини-контейнере» для одного приложения: он изолирован, но не настолько, как Docker.
  • Snap лучше для настольных приложений, классические пакеты — для системных сервисов.
  • Используйте каналы обновлений как уровни риска: stable — низкий, edge — высокий.

Совместимость и миграционные подсказки

  • Если вы переходите с традиционных .deb/.rpm-пакетов на snap, тестируйте поведение интеграции (темы, автозапуск, демоны).
  • На серверах рассмотрите использование системных пакетов для служб и snap для пользовательских GUI-утилит.
  • Для корпоративных решений настройте внутренний snap-репозиторий или используйте конкретные ревизии и блокировку каналов.

Глоссарий (одна строка на термин)

  • Snap: единый пакет приложения с зависимостями.
  • snapd: демон, управляющий snap-пакетами.
  • SquashFS: сжатая файловая система, используемая для монтирования snap-пакета.
  • /dev/loopN: loop-устройство для монтирования файлов как блочных устройств.
  • Канал: источник обновлений для snap (stable, candidate, beta, edge).

Полезные примеры и сценарии

  1. Простой пользователь хочет GIMP последние стабильные версии:

    • snap find gimp
    • sudo snap install gimp
    • Проверить: snap list | grep gimp
  2. Тестировщик хочет попробовать бета-версию темы:

    • sudo snap refresh gtk-common-themes --channel=beta
  3. Администратор освобождает место, удаляя старые ревизии:

    • snap list --all
    • Вручную удалить ненужные ревизии: sudo snap remove --revision=

Дополнительные ресурсы и ссылки

| | Linux Commands | | Files | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · convert · rclone · shred · srm · scp · gzip · chattr · cut · find · umask · wc · tr | | | Processes | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg · pidof · nohup · pmap | | | Networking | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld | |

RELATED: Best Linux Laptops for Developers and Enthusiasts

Краткое резюме

Snap — удобный инструмент для распространения и установки приложений на множестве дистрибутивов Linux. Он избавляет от конфликтов зависимости и обеспечивает простые обновления через каналы. Однако стоит учитывать увеличенный объём занимаемого диска, вопросы интеграции с системой и особенности безопасности. Для продакшена выбирайте stable, тестируйте beta/edge только в контролируемой среде. Администраторам полезны чек-листы и runbook для обновлений и отката.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Home Assistant на Raspberry Pi — локальный умный дом
Умный дом

Home Assistant на Raspberry Pi — локальный умный дом

Отключение фоновых приложений в Windows 11
Windows

Отключение фоновых приложений в Windows 11

Исправить Steam: Files failed to validate
Техподдержка

Исправить Steam: Files failed to validate

Автосканирование USB в Microsoft Defender
Безопасность

Автосканирование USB в Microsoft Defender

Увеличить задержку отмены отправки в Apple Mail
Руководство

Увеличить задержку отмены отправки в Apple Mail

Настроить VPN на VPS — полное руководство
Инструкции

Настроить VPN на VPS — полное руководство