156 votes

Comment supprimer l'ancienne version des snaps installés

Je suis nouveau dans l'utilisation de snap, j'ai quelques applications installées sur mon système, mais je remarque quelque chose lorsque je lance la commande df -h J'ai trouvé des versions montées différentes du même cliché

/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

ma question est de savoir pourquoi ils restent là, le seul moyen que j'ai trouvé pour enlever l'ancien est d'enlever et de réinstaller le snap, il y a quelque chose comme prune pour entretenir mon système ?

175voto

popey Points 1686

Voici un court script qui va supprimer tous les anciennes versions de snaps. Cela ne conservera que la version active actuelle, ce qui devrait vous faire gagner un peu d'espace disque :

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

89voto

Gert van den Berg Points 958

Une version de la script d'une autre réponse comme une phrase unique, sans le awk dépendance :

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

Cela nécessite probablement bash ou d'un Shell compatible avec l'option [[ construire.

88voto

Mustapha Hadid Points 781

À partir de snap v2.34 et des versions ultérieures, vous pouvez définir le nombre maximal de révisions snap stockées pour chaque paquet en définissant l'attribut refresh.retain option - il ne peut s'agir que d'un nombre entre 2 et 20 et dispose d'un valeur par défaut de 3 .

sudo snap set system refresh.retain=2

37voto

El docs snapd sur les versions indiquent que les révisions périmées doivent être automatiquement supprimées afin que seules les deux dernières révisions soient installées. Cependant, j'ai également vu plus de deux versions de mes snaps installées.

Vous pouvez lister toutes les révisions avec snap list --all pour voir quelque chose comme :

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    -

Vous pouvez supprimer des révisions individuelles avec snap remove spotify --revision=5 .

C'est sûr même pour les révisions handicapées de core et d'autres dépendances, et snap remove avec un --revision=... vous empêche même d'enlever le non- disabled snaps.

2voto

A. Sahin Points 1

Le code @popey a partagé dans sa réponse échoue parfois car certains paquets cassés n'ont pas d'informations sur la version. J'ai donc modifié le code pour surmonter ce problème.

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

snapsToRemove=$(LANG=en_US.UTF-8 snap list --all | awk '/disabled/{print $1, $2, $3}')

while read snapname version revision; do
    if [[ "$revision" == *[a-zA-z]* ]]; then
        # Version field is empty. Revision is in second field
        revision=$version
    fi
        snap remove "$snapname" --revision="$revision"
done <<< $snapsToRemove

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X