Как очистить Snap‑пакеты на Linux и освободить место
Что такое Snap — понятное определение
Snap — это формат пакетирования приложений, в котором сама программа и все её зависимости упакованы в один файл. Это упрощает совместимость между дистрибутивами, но увеличивает размер пакета.
Почему Snap‑пакеты громоздкие

Snap стремится к автономности: каждая сборка включает библиотеки и зависимости. Это решает проблему несовместимых версий, но приводит к большим объёмам на диске. Ещё одна причина — механизм отката: после обновления предыдущая версия сохраняется, чтобы при необходимости можно было быстро вернуться назад. В результате текущая и предыдущая версии сосуществуют и занимают место.
Важно: Snap хранит данные и некоторые файлы в каталоге пользователя ~/snap, а сами пакеты — в системных каталогах, зависящих от дистрибутива.
1. Удаление пакетов‑откатов (rollback)
Snap хранит старые ревизии пакетов. Они отмечены как disabled в выводе команды. Чтобы увидеть все установленные снапы и их ревизии, выполните:
snap list --allВ выводе вы увидите активные и отключённые (disabled) ревизии. Отключённые ревизии — это те самые старые версии, которые можно удалить без потери текущей функциональности. Пример удаления конкретной ревизии:
sudo snap remove canonical-livepatch --revision=229Совет: перед массовым удалением проверьте, что вам действительно не нужен откат для критичных приложений (например, для системных инструментов или средств безопасности).
Примечание: автоматизировать очистку откатов можно скриптом, который удаляет все disabled‑ревизии, кроме самой актуальной. Пример алгоритма описан в разделе «Шаблон команд».
2. Удаление неиспользуемых Snap‑пакетов
Регулярно проверяйте список установленных снапов и удаляйте те, которыми не пользуетесь.
sudo snap listЧтобы удалить пакет целиком:
sudo snap remove Где
du -h ~/snapЕсли места мало, локально храните только те снапы, которые действительно нужны.
3. Удаление неиспользуемых зависимостей через системный менеджер
Snap обычно включает зависимости, но в системе всё равно могут остаться лишние пакеты, установленные через системный пакетный менеджер. Удалите ненужные зависимости командой вашего дистрибутива:
На Debian/Ubuntu:
sudo apt autoremoveНа RHEL/Fedora:
sudo dnf autoremoveНа Arch:
sudo pacman -Rns $(pacman -Qdtq)Эти команды анализируют дерево зависимостей и удаляют пакеты, которые больше ни на что не ссылаются.
4. Использование другого пакетного менеджера, когда возможно
Если у вас жёсткие ограничения по диску, рассмотрите установку приложения через системный менеджер (APT, DNF, Pacman) вместо Snap. Процесс обычно такой:
- Удалите Snap‑версию:
sudo snap remove package_name. - Установите через системный пакетный менеджер:
На Debian/Ubuntu:
sudo apt install package_nameНа RHEL/Fedora:
sudo dnf install package_nameНа Arch:
sudo pacman -S package_nameВажно: некоторые приложения в дистрибутивах распространяются только в виде снапов (например, Firefox в Ubuntu в определённых выпусках). В таких случаях системный менеджер всё равно может задействовать Snap в фоновом режиме.
Когда не стоит удалять снапы и откаты
- Если вы управляете сервером или рабочей станцией с критичным ПО, сохранение откатов может ускорить восстановление после проблем.
- Если пакет получает частые обновления с регрессиями, хранение прошлой ревизии повышает безопасность отката.
Если же приоритет — свободное дисковое пространство, безопасно удалить старые ревизии для большинства десктопных приложений.
Альтернативные подходы и миграция
- Flatpak и AppImage — альтернативы Snap с другой моделью изоляции и распространения. Flatpak даёт тонкую настройку runtimes, а AppImage — один исполняемый файл без установки.
- Для серверов и автоматизации рассмотрите контейнеры (Docker, Podman) вместо настольных снапов: они дают контроль над образом и размерами через слоистые образы.
Переходной сценарий:
- Оцените, доступна ли нужная версия приложения в APT/DNF/Pacman/Flatpak.
- Удалите Snap‑версию и установите альтернативную.
- Проверьте конфигурационные файлы и данные пользователя (часто остаются в ~/snap/ и нужно перенести конфликтующие настройки).
Ментальные модели и эвристики (heuristics)
- Правило 80/20: удаляйте 20% пакетов, которые занимают 80% места.
- Принцип минимальной нужности: держите только те пакеты, которые вы используете регулярно.
- Приоритет отката: для критичных сервисов оставляйте одну старую ревизию, для всего остального — удаляйте.
Шпаргалка по командам (cheat sheet)
- Посмотреть все снапы с ревизиями:
snap list --all - Удалить конкретную ревизию:
sudo snap remove--revision= - Удалить снап полностью:
sudo snap remove - Показать размер в ~/snap:
du -h ~/snap - Удалить неиспользуемые пакеты APT:
sudo apt autoremove - Удалить неиспользуемые пакеты DNF:
sudo dnf autoremove - Удалить неиспользуемые пакеты Pacman:
sudo pacman -Rns $(pacman -Qdtq)
Ролевые чек‑листы
Администратор сервера:
- Перед удалением ревизий сделать резервную копию конфигураций.
- Проверить, что обновления не прервут зависимости сервисов.
- Удалить disabled‑ревизии для пользовательских приложений.
Пользователь десктопа:
- Записать список часто используемых приложений.
- [ ] Удалить лишние снапы через
snap remove. - [ ] Очистить
~/snapи проверить настройки приложений.
DevOps / SRE:
- Автоматизировать или запланировать очистку ревизий в нерабочее время.
- Тестировать установку/удаление на тестовой машине перед массовыми изменениями.
Мини‑методология: как безопасно освободить место (шаги)
- Оцените текущую картину:
snap list --allиdu -h ~/snap. - Сделайте резервные копии конфигураций критичных приложений.
- Удалите явно неиспользуемые пакеты:
sudo snap remove. - Удалите disabled‑ревизии по одной или скриптом.
- Очистите системные неиспользуемые пакеты через
apt/dnf/pacman. - Проверьте систему на предмет сломанных зависимостей.
- Настройте регулярную проверку (cron/ systemd timer).
Шаблон скрипта для массовой очистки disabled‑ревизий
#!/bin/bash
# Удаляет все disabled ревизии snap, кроме активной
snap list --all | awk '/disabled/{print $1, $3}' | while read snapname rev; do
echo "Удаляю $snapname ревизия $rev"
sudo snap remove "$snapname" --revision="$rev"
doneЗапустите после проверки вывода: сначала выполните snap list --all и убедитесь в корректности списка.
Решающее дерево для выбора стратегии
flowchart TD
A[Мало диска?] -->|Да| B{Приложение критично?}
A -->|Нет| Z[Ничего не делать]
B -->|Да| C[Оставить откат, удалить остальные]
B -->|Нет| D[Удалить snap или заменить]
D --> E{Есть версия в APT/DNF/Pacman/Flatpak?}
E -->|Да| F[Переустановить через системный менеджер]
E -->|Нет| G[Оставить snap, удалить старые ревизии]Критерии приёмки
- Освобождено достаточно места для нормальной работы (по вашим требованиям).
- Критичные сервисы работают корректно после удаления ревизий.
- Настроен план регулярной проверки и очистки.
Когда Snap — лучшее решение
- Если нужно быстро доставлять одно и то же приложение на разные дистрибутивы.
- Если важна сильная изоляция и встроенные обновления.
- Для приложений с большим количеством зависимостей, где конфликты версий критичны.
Итог и рекомендации
Snap удобен и повышает совместимость, но требует внимания к месту на диске. Регулярно проверяйте snap list --all, удаляйте disabled‑ревизии и неиспользуемые пакеты. Для машин с ограниченным диском рассматривайте установку приложений через системный пакетный менеджер или альтернативы (Flatpak, AppImage).
Важно: всегда делайте проверку и резервирование перед массовыми удалениями.
Краткое резюме:
- Snap упрощает зависимости, но увеличивает объём пакетов.
- Удаляйте disabled‑ревизии и неиспользуемые снапы.
- Используйте
apt/dnf/pacmanдля управления системными зависимостями. - Рассмотрите Flatpak/AppImage или контейнеры для альтернатив.