Come rimuovere la vecchia versione degli snap installati


65

Sono newbiew con utilizzo dello snap, ho poche app installate sul mio sistema, qualcosa che noto quando eseguo il comando df -hho trovato montate versioni diverse dello stesso snap

/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

la mia domanda è: perché rimangono lì, l'unico modo in cui ho scoperto di rimuovere il vecchio è rimuovere e reinstallare lo snap, c'è qualcosa come prunemantenere il mio sistema?


Risposte:


84

Ecco uno script breve che rimuoverà tutte le vecchie versioni degli snap. Ciò manterrà solo la versione attiva corrente, che dovrebbe recuperare un po 'di spazio su disco:

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

Ha rimosso con successo tutte le vecchie versioni, ma nessuno spazio è stato aggiunto al mio disco!
mtoloo,

Controlla dir /var/lib/snapd/snaps/prima e dopo aver eseguito questo script. Dovrebbe aver liberato un po 'di spazio - se davvero rimosso alcuni snap. Dovrebbe mostrare messaggi come snap-name removed, ad es gtk-common-themes removed.
PeterM,

Ci sono alcuni collegamenti fissi, /var/lib/snapd/cachequindi è necessario eliminare anche quelli per liberare spazio. Puoi rimuovere in sicurezza la cache consudo rm /var/lib/snapd/cache/*
rubo77 il

42

A partire dallo snap 2.34 e successivi, è possibile impostare il numero massimo di revisioni di uno snap memorizzato dal sistema impostando l' opzione refresh.retain .

$ sudo snap set system refresh.retain=2 

Il valore refresh.retain può essere solo un numero compreso tra 2 e 20 e ha un valore predefinito di 3.


1
dopo aver fatto questo, passando dal 3 predefinito a una nuova impostazione di 2, quando vengono eliminate le versioni correnti?
Tim Richardson,

Penso che i vecchi snap verranno eliminati quando verrà installata la nuova versione. Come forse già saprai, snap aggiorna automaticamente le app installate in base all'opzione refresh.timer, quindi non è necessario eseguire l'aggiornamento manualmente
Mustapha Hadid

Ma come controllare di quanti computer ha bisogno? Esempio: refresh.retain=3è buono per 4 GB di RAM o ne hai bisogno?
Peter Krauss,

1
@PeterKrauss Dipende dalla capacità del dispositivo di archiviazione. Non ha nulla a che fare con la capacità della RAM.
Mustapha Hadid,

30

Una versione dello script da un'altra risposta , come una riga, senza la awkdipendenza:

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

Ciò probabilmente richiede basho una shell compatibile con il [[costrutto.


6
Questo dovrebbe essere eseguito da un utente che può aggiungere snap. Su Ubuntu Core, l'utente admin funziona, su Ubuntu normale, sudo -ipotrebbe essere necessaria una sessione o potrebbe essere necessario snap removeeseguirla sudo.
Gert van den Berg,

@ rubo77 ha sottolineato che assume una lingua inglese. Eseguirlo in una sotto-shell (per non scherzare con le variabili env locali della shell principale) dopo averlo fatto in export LC_ALL=en_US.UTF-8precedenza dovrebbe essere sicuro. (Può anche essere impostato prima del comando snap, ma non sono sicuro se anche le rimozioni successive potrebbero dover essere tradotte)
Gert van den Berg

Basta aggiungere LANG=c prima che l'intera linea
funzioni

@ rubo77 Probabilmente dovrebbe essere LANG=C(o LC_ALL=C) per la locale predefinita. Le lettere minuscole cpotrebbero funzionare a causa Cdell'impostazione predefinita per una locale non valida. ( LC_MESSAGESè probabilmente l'impostazione minima) (Non voglio modificare il post per un'impostazione di cui molti utenti non hanno bisogno ...) (Confronti gli errori di LANG=c localecon LANG=C locale)
Gert van den Berg

17

I documenti snapd sulle versioni indicano che le revisioni obsolete devono essere rimosse automaticamente in modo da non installare più delle ultime due revisioni. Tuttavia, ho anche visto più di due versioni dei miei scatti installati.

Puoi elencare tutte le revisioni con snap list --allper vedere qualcosa di simile:

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    -

È possibile rimuovere singole revisioni con snap remove spotify --revision=5.

Questo è sicuro anche per le revisioni disabilitate di coree altre dipendenze e snap removecon un esplicito --revision=...ti impedisce persino di rimuovere i non- disabledsnaps.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.