Як видалити стару версію встановлених знімків


65

Я newbiew зі швидким використанням, у мене на моїй системі встановлено кілька додатків, те, що я помічаю, коли запускаю команду, df -hя знайшов змонтовані різні версії одного і того ж оснащення

/dev/loop0       143M   143M     0 100% /var/lib/snapd/snap/gravit-designer/7
/dev/loop1        82M    82M     0 100% /var/lib/snapd/snap/core/4110
/dev/loop7       198M   198M     0 100% /var/lib/snapd/snap/polarr/3
/dev/loop2        82M    82M     0 100% /var/lib/snapd/snap/core/4206
/dev/loop3       143M   143M     0 100% /var/lib/snapd/snap/gravit-designer/6
/dev/loop10      137M   137M     0 100% /var/lib/snapd/snap/gravit-designer/5

моє запитання, чому вони тримаються там, єдиний спосіб, коли я знайшов видалити старе - це видалити та встановити знову оснащення, є щось на зразок pruneпідтримки моєї системи?


Відповіді:


84

Ось короткий сценарій, який видалить всі старі версії оснащень. Це збереже лише поточну активну версію, яка повинна відновити вам деякий диск на диску:

#!/bin/bash
# Removes old revisions of snaps
# CLOSE ALL SNAPS BEFORE RUNNING THIS
set -eu

LANG=C snap list --all | awk '/disabled/{print $1, $3}' |
    while read snapname revision; do
        snap remove "$snapname" --revision="$revision"
    done

Він успішно видалив усі старі версії, але на мій диск не додано місця!
mtoloo

Перевірте dir /var/lib/snapd/snaps/до та після запуску цього сценарію. Потрібно було звільнити трохи місця - якщо дійсно зняти кілька знімків. Він повинен показувати повідомлення , як snap-name removed, наприклад gtk-common-themes removed.
PeterM

Існує кілька твердих посилань, /var/lib/snapd/cacheтому їх потрібно видалити, щоб звільнити місце. Ви можете сміливо видалити кеш за допомогоюsudo rm /var/lib/snapd/cache/*
rubo77

42

Починаючи з оснащення 2.34 і пізніше, ви можете встановити максимальну кількість ревізій оснащення, що зберігаються системою, встановивши опцію refresh.retain .

$ sudo snap set system refresh.retain=2 

Значення refresh.retain може бути лише числом від 2 до 20 і має значення за замовчуванням 3.


1
після цього, переходячи від стандартного 3 до нового параметра 2, коли поточні версії очищені?
Тім Річардсон

Я думаю, що старі оснастки будуть очищені, коли буде встановлена ​​нова версія. Як ви вже знаєте, оснащення оновлених програм автоматично оновлюється автоматично залежно від опції refresh.timer, тому вам не доведеться робити оновлення вручну
Мустафа Хадід

Але як перевірити, скільки потрібно моєму комп'ютеру? Приклад: refresh.retain=3добре для оперативної пам'яті 4Gb або потрібно більше?
Пітер Краусс

1
@PeterKrauss Це залежить від ємності вашого пристрою зберігання даних. Це не має нічого спільного з вашою ємністю оперативної пам'яті.
Мустафа Хадід

30

Версія сценарію з іншої відповіді , як однолінійна, без awkзалежності:

# snap list --all | while read snapname ver rev trk pub notes; do if [[ $notes = *disabled* ]]; then snap remove "$snapname" --revision="$rev"; fi; done

Для цього, мабуть, потрібна bashабо сумісна оболонка з [[конструкцією.


6
Це слід запустити від користувача, який може додавати знімки. У Ubuntu Core працює користувач адміністратора, у звичайному Ubuntu sudo -iможе знадобитися сеанс або snap removeможливо запустити його sudo.
Герт ван ден Берг

@ rubo77 зазначав, що він передбачає англійську мову. Якщо запустити його в підколонці (щоб не возитися зі змінними env локальної змінної основної оболонки) після цього, export LC_ALL=en_US.UTF-8слід запевнитись у цьому. (Його також можна встановити перед командою оснащення, але я не впевнений, чи видалення пізніше може знадобитися перекласти також)
Герт ван ден Берг

Просто додайте LANG=c перед тим, як вся лінійка працює добре на німецьких консолях
rubo77

@ rubo77 Це, мабуть, насправді буде LANG=C(або LC_ALL=C) для локальної мови за замовчуванням. Малі регістри cможуть працювати через Cте, що за замовчуванням використовується недійсна локаль. ( LC_MESSAGESце, мабуть, мінімальна настройка) (я не хочу редагувати публікацію для налаштувань, які багатьом користувачам не потрібні ...) (Ви порівнюєте помилки LANG=c localeз LANG=C locale)
Герт ван ден Берг

17

Документи оснащені версіями стверджують, що застарілі редакції повинні бути автоматично видалені, щоб встановлено не більше двох останніх версій. Однак я також побачив більше двох версій своїх встановлених знімків.

Ви можете перелічити всі зміни, snap list --allщоб побачити щось на зразок:

Name     Version                  Rev   Tracking  Developer  Notes
core     16-2.31.2                4206  stable    canonical  core,disabled
core     16-2.32.3                4407  stable    canonical  core,disabled
core     16-2.32.5                4486  stable    canonical  core
spotify  1.0.70.399.g5ffabd56-26  5     stable    spotify    disabled
spotify  1.0.72.117.g6bd7cc73-35  6     stable    spotify    disabled
spotify  1.0.77.338.g758ebd78-41  13    stable    spotify    -

Ви можете видалити окремі версії за допомогою snap remove spotify --revision=5.

Це безпечно навіть для вимкнутих версій coreта інших залежностей, а snap removeз явним --revision=...навіть не дозволяє вам видалити disabledневідомі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.