Поиск по сайту:

Как очистить версии 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, обратитесь к этому руководству.

Статьи по данной тематике