Это краткое руководство со скриптом поможет почистить snap, удалить старые версии пакетов и освободить место на вашем диске.
У меня заканчивалось место на диске в моей тестовой системе с Ubuntu.
Итак, я исследовал с помощью Disk Usage Analyzer GNOME, чтобы выяснить, какой пакет потребляет драгоценное пространство SSD. Помимо обычного кэша и домашнего каталога, к моему удивлению, я обнаружил, что Snap и Flatpak потребляют значительный объем дискового пространства.
Размер до очистки
Хотя я всегда придерживаюсь правила – не использовать Snap или Flatpak без необходимости. Это в основном из-за их размера установки и других проблем. Я предпочитаю ванильные deb и rpm-пакеты. За эти годы я установил и удалил определенное количество пакетов Snap в этой тестовой системе.
Проблема возникает после удаления; Snap сохраняет в системе некоторые остаточные файлы, неизвестные обычным пользователям.
Итак, я открыл папку Snap и обнаружил, что Snap продолжает отслеживать старые версии ранее установленных/удалённых пакетов. /var/lib/snapd/snaps
Например, на изображении ниже вы можете видеть GNOME 3.28, 3.34 и Wine – все они давно удалены. Но они все еще там. Это происходит из-за дизайна Snap, который сохраняет версии удаленных пакетов после правильного удаления.
Файлы в директории snap
В качестве альтернативы вы можете получить то же самое в терминале, используя:
snap list --all
Значение по умолчанию — 3 для нескольких ревизий для сохранения. Это означает, что Snap сохраняет три старые версии каждого пакета, включая активную версию. Это нормально, если у вас нет ограничений на дисковое пространство.
Однако для серверов и других вариантов использования это может легко повлечь за собой финансовые проблемы, поскольку из-за этого потребляется дисковое пространство.
Однако вы можете легко изменить количество, используя следующую команду. Значение может быть от 2 до 20.
sudo snap set system refresh.retain=2
Очистить версии Snap
В посте в SuperUser Попи, бывший менеджер по инжинирингу в Canonical, представил простой скрипт , который может очистить старые версии Snaps и сохранить последнюю.
Вот скрипт, который мы будем использовать для очистки Snap.
#!/bin/bash #Removes old revisions of snaps #CLOSE ALL SNAPS BEFORE RUNNING THIS set -eu LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $3}' | while read snapname revision; do snap remove "$snapname" --revision="$revision" done
Сохраните указанный выше скрипт как .sh в каталоге (например , ), дайте ему права на исполнение и запустите. clean_snap.sh
chmod +x clean_snap.sh
Когда я запустил скрипт, он значительно уменьшил дисковое пространство. Скрипт также показывал имя удаляемого пакета.
Размер после очистки snap
Заключительные замечания
Всегда ведутся споры о том, насколько эффективен дизайн Snap. Многие говорят, что он сломан по дизайну, раздут и тяжел для систем. Часть этого аргумента верна, я бы не стал этого отрицать. Вся концепция изолированных приложений великолепна, если ее правильно реализовать и улучшить. Я считаю, что Flatpak справляется лучше, чем Snap.
Тем не менее, я надеюсь, что это поможет вам очистить немного места на диске. Хотя это протестировано в Ubuntu, это должно работать во всех дистрибутивах Linux, которые поддерживают Snap.