Jak usunąć starą wersję zainstalowanych przystawek


65

Jestem newbiew z użyciem przystawki, mam kilka aplikacji zainstalowanych w moim systemie, co zauważam po uruchomieniu polecenia df -hznalazłem zamontowane różne wersje tej samej przystawki

/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

moje pytanie brzmi: dlaczego tam są, jedynym sposobem na usunięcie starego jest usunięcie i ponowne zainstalowanie przystawki, istnieje coś takiego jak pruneutrzymanie mojego systemu?


Odpowiedzi:


84

Oto krótki skrypt, który usunie wszystkie stare wersje snapów. Pozwoli to zachować tylko bieżącą aktywną wersję, która powinna przywrócić ci trochę miejsca na dysku:

#!/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

Udało się usunąć wszystkie stare wersje, ale na moim dysku nie dodano miejsca!
mtoloo,

Sprawdź katalog /var/lib/snapd/snaps/przed i po uruchomieniu tego skryptu. Powinny mieć wolne miejsce - jeśli naprawdę usunąłem jakieś zatrzaski. Powinien pokazywać wiadomości takie jak snap-name removednp gtk-common-themes removed.
PeterM

Istnieją pewne twarde linki, /var/lib/snapd/cachewięc musisz je usunąć, aby zwolnić miejsce. Możesz bezpiecznie usunąć pamięć podręczną za pomocąsudo rm /var/lib/snapd/cache/*
rubo77

42

Począwszy od snapu 2.34 i nowszych, możesz ustawić maksymalną liczbę rewizji snapów przechowywanych przez system, ustawiając opcję refresh.retain .

$ sudo snap set system refresh.retain=2 

Wartość refresh.retain może być liczbą od 2 do 20 i ma wartość domyślną 3.


1
po zrobieniu tego, przechodząc od domyślnego 3 do nowego ustawienia 2, kiedy bieżące wersje zostaną usunięte?
Tim Richardson

Myślę, że stare zatrzaski zostaną usunięte po zainstalowaniu nowej wersji. Jak już zapewne wiesz, automatycznie aktualizuj zainstalowane aplikacje w zależności od opcji refresh.timer, więc nie musisz ręcznie robić aktualizacji
Mustapha Hadid

Ale jak sprawdzić, ile potrzebuje mój komputer? Przykład: czy refresh.retain=3jest dobry na 4 GB pamięci RAM, czy potrzebujesz więcej?
Peter Krauss,

1
@PeterKrauss To zależy od pojemności twojego urządzenia pamięci masowej. Nie ma to żadnego związku z pojemnością pamięci RAM.
Mustapha Hadid

30

Wersja skryptu z innej odpowiedzi , jako jeden wiersz, bez awkzależności:

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

Prawdopodobnie wymaga bashto kompatybilnej powłoki z [[konstrukcją.


6
Powinno to być uruchamiane przez użytkownika, który może dodawać przyciągania. W systemie Ubuntu Core użytkownik admin działa, w normalnym systemie Ubuntu sudo -imoże być potrzebna sesja lub może być wymagana snap removejej uruchomienie sudo.
Gert van den Berg

@ rubo77 zwrócił uwagę, że zakłada on język angielski. Uruchomienie go w podpowłoce (aby nie zadzierać ze zmiennymi env locale głównej powłoki) po export LC_ALL=en_US.UTF-8wcześniejszym wykonaniu powinno to zapewnić. (Można go również ustawić przed poleceniem przyciągania, ale nie jestem pewien, czy późniejsze usunięcia również będą musiały zostać przetłumaczone)
Gert van den Berg

Wystarczy dodać, LANG=c zanim cała linia będzie
działać

@ rubo77 Prawdopodobnie powinno to być LANG=C(lub LC_ALL=C) domyślne ustawienie regionalne. Małe litery cmogą działać, ponieważ Csą domyślne dla nieprawidłowych ustawień regionalnych. ( LC_MESSAGESjest to prawdopodobnie ustawienie minimalne) (Nie chcę edytować postu dla ustawienia, którego wielu użytkowników nie potrzebuje jednak ...) (Porównujesz błędy LANG=c localez LANG=C locale)
Gert van den Berg

17

The snapd dotyczące wersji stwierdzają, że nieaktualne wersje powinny być automatycznie usuwane, aby nie instalować więcej niż dwóch ostatnich wersji. Jednak widziałem także zainstalowane więcej niż dwie wersje moich przystawek.

Możesz wyświetlić listę wszystkich wersji za pomocą snap list --all aby zobaczyć coś takiego:

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    -

Możesz usunąć poszczególne wersje za pomocą snap remove spotify --revision=5.

Jest to bezpieczne nawet dla wyłączonych wersji corei innych zależności, a snap removejawnie --revision=...nawet zapobiega usuwaniu non- disabledsnap.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.