Как очистить версии Snap, чтобы освободить место на диске
Это краткое руководство со сценарием поможет очистить старые версии Snap и освободить место на диске в ваших системах Ubuntu.
Мне не хватало места на диске в моей тестовой системе с Ubuntu.
Поэтому я провел исследование с помощью анализатора использования дисков GNOME, чтобы выяснить, какой пакет занимает драгоценное пространство SSD. Помимо обычного кеша и домашнего каталога, к моему удивлению, я обнаружил, что Snap и Flatpak занимают значительный объем дискового пространства.
Размер привязки – до очистки
Хотя я всегда придерживаюсь правила — не использовать Snap или Flatpak без необходимости. В основном это связано с их размером установки и другими проблемами. Я предпочитаю ванильные пакеты deb и rpm. За прошедшие годы я установил и удалил определенное количество пакетов Snap в этой тестовой системе.
Проблема возникает после удаления; Snap хранит в системе некоторые остатки файлов, неизвестные обычным пользователям.
Итак, я открыл папку Snap /var/lib/snapd/snaps
и обнаружил, что Snap отслеживает старые версии ранее установленных/удаленных пакетов.
Например, на изображении ниже вы можете увидеть GNOME 3.28, 3.34 и Wine — все они давно удалены. Но они все еще здесь. Это происходит из-за конструкции Snap, которая сохраняет версии удаленных пакетов после правильного удаления.
Файлы в каталоге snaps
Альтернативно, вы можете получить то же самое в терминале, используя:
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. Многие говорят, что он сломан по дизайну, раздут и перегружен системами. Какая-то часть этого аргумента верна, я бы не стал этого отрицать. Вся концепция приложений-песочниц великолепна, если ее правильно реализовать и усовершенствовать. Я считаю, что Flatpak справляется со своей задачей лучше, чем Snap.
Тем не менее, я надеюсь, что это поможет вам очистить место на диске. Хотя он протестирован в Ubuntu, он должен работать во всех дистрибутивах Linux, поддерживающих Snap.
Также ознакомьтесь с нашим руководством по очистке Ubuntu с дополнительными шагами.
Наконец, если вы хотите очистить приложения Flatpak, обратитесь к этому руководству.