verwaiste snaps finden
Hinweis:
Dieses Howto wurde von noisefloor erstellt. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich gegebenenfalls zusätzlich an den/die Verfasser des Howtos.
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 24.04 Noble Numbat
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Problembeschreibung¶
snap[1] bietet leider keine Funktionalität, um snaps, welche als Abhängigkeit bei der Installation eines anderen snaps mitinstalliert wurden, aber jetzt nicht mehr benötigt werden, zu erkennen und automatisch zu entfernen. Es gibt also keine Funktionalität für snap, die einem apt autoremove
der Paketverwaltung entspricht. Wenn man öfters snaps installiert und wieder deinstalliert, kann es vorkommen, dass man ein oder mehrere verwaiste snaps auf dem System hat. Diese stören zwar nicht, belegen aber unnötig Platz auf dem Laufwerk. Verwaiste snaps können z.B. ältere Versionen der Core snaps 🇬🇧 sein oder snaps, die eines der GUI Toolkits 🇬🇧 bereit stellen.
In diesem Howto wird erklärt, wie man verwaiste snaps identifizieren und dann entfernen kann.
Anleitung¶
Jedes snap hat eine "Base", auf der es läuft, in Form eines Core-snaps. Des Weiteren benötigen alle snaps, die eine grafische Benutzeroberfläche haben, ein snap, welches die benötigten Komponenten für die grafische Benutzeroberfläche bereit stellt, wie z.B. ein GNOME-snap oder ein Qt-snap. Diese snaps heißen „default provider“. Auf diesen "Basissnaps" (dem Core und den default providern) können alle snap gleichermaßen zugreifen, d.h. sie sind nur einmal installiert und können von mehrere snaps genutzt werden.
Im folgenden Beispiel sind alle snaps, die in der Minimalinstallation der Desktop-Variante von Ubuntu enthalten sind, aufgelistet:
snap list --all
Name Version Revision Tracking Herausgeber Hinweise bare 1.0 5 latest/stable canonical✓ base canonical-livepatch 10.8.3 282 latest/stable canonical✓ - canonical-livepatch 10.8.2 278 latest/stable canonical✓ deaktiviert core22 20240408 1380 latest/stable canonical✓ base,deaktiviert core22 20240904 1621 latest/stable canonical✓ base firefox 126.0.1-1 4336 latest/stable/… mozilla✓ deaktiviert firefox 131.0-1 5014 latest/stable/… mozilla✓ - firmware-updater 0+git.5007558 127 latest/stable/… canonical✓ - gnome-42-2204 0+git.510a601 176 latest/stable/… canonical✓ - gtk-common-themes 0.1-81-g442e511 1535 latest/stable/… canonical✓ - snap-store 0+git.97116aa 1134 latest/stable/… canonical✓ deaktiviert snap-store 0+git.4fcd62b7 1218 latest/stable/… canonical✓ - snapd 2.63 21759 latest/stable canonical✓ snapd snapd 2.62 21465 latest/stable canonical✓ snapd,deaktiviert snapd-desktop-integration 0.9 157 latest/stable/… canonical✓ deaktiviert snapd-desktop-integration 0.9 178 latest/stable/… canonical✓ -
Mit Hilfe des Befehls:
grep "default-provider:\|base:" /snap/*/*/meta/snap.yaml | awk '{print $NF}' | sort -u
kann man sich anzeigen lassen, welche Basissnaps von diesen snaps benötigt werden:
bare core22 gnome-42-2204 gtk-common-themes
In diesem Beispiel sind also keine verwaisten snaps im System vorhanden, alle installierten snaps sind entweder Anwendungen oder Basis-snaps.
Möchte man sich pro snap die "Base" anzeigen lassen, führt man folgenden Befehl aus:
grep "base:" /snap/*/*/meta/snap.yaml
Möchte man sich pro snap den / die „default provider“ anzeigen lassen, führt man folgenden Befehl aus:
grep "default-provider:" /snap/*/*/meta/snap.yaml | uniq
Installiert man jetzt z.B. Kompare als snap, sieht die snap-Liste anschließend so aus:
Name Version Revision Tracking Herausgeber Hinweise bare 1.0 5 latest/stable canonical✓ base canonical-livepatch 10.8.3 282 latest/stable canonical✓ - canonical-livepatch 10.8.2 278 latest/stable canonical✓ deaktiviert core22 20240904 1621 latest/stable canonical✓ base core22 20240408 1380 latest/stable canonical✓ base,deaktiviert firefox 126.0.1-1 4336 latest/stable/… mozilla✓ deaktiviert firefox 131.0-1 5014 latest/stable/… mozilla✓ - firmware-updater 0+git.5007558 127 latest/stable/… canonical✓ - gnome-42-2204 0+git.510a601 176 latest/stable/… canonical✓ - gtk-common-themes 0.1-81-g442e511 1535 latest/stable/… canonical✓ - kf5-5-111-qt-5-15-11-core22 5.111 7 latest/stable kde✓ - kompare 23.08.3 98 latest/stable kde✓ - snap-store 0+git.97116aa 1134 latest/stable/… canonical✓ deaktiviert snap-store 0+git.4fcd62b7 1218 latest/stable/… canonical✓ - snapd 2.63 21759 latest/stable canonical✓ snapd snapd 2.62 21465 latest/stable canonical✓ snapd,deaktiviert snapd-desktop-integration 0.9 178 latest/stable/… canonical✓ - snapd-desktop-integration 0.9 157 latest/stable/… canonical✓ deaktiviert
und die Liste der Basis-snaps wie folgt:
bare core22 gnome-42-2204 gtk-common-themes kf5-5-111-qt-5-15-11-core22
Das snap kf5-5-111-qt-5-15-11-core22 ist also bei den Basis-snaps neu hinzugekommen. Deinstalliert man jetzt Kompare via sudo snap remove --purge kompare
wieder und ruft die Liste der installierten snaps und der Basis-snaps erneut auf, so sieht man, dass kf5-5-111-qt-5-15-11-core22 immer noch installiert ist, aber in der Liste der Basis-snaps nicht mehr auftaucht. Das snap ist also verwaist und kann manuell entfernt werden. Sollte man mehrere Revision eines verwaisten snaps auf dem System haben, muss man jede Revision einzeln entfernen.
verwaiste snaps automatisch per Skript entfernen¶
Wer verwaiste snaps nichts händisch identifizieren und entfernen möchte, kann mit Hilfe des Skripts orphand_snaps von Mylinde/orphand_snaps diesen Vorgang automatisch erledigen lassen. Dazu muss das Skript mit Root-Rechten[3] ausgeführt werden. Führt man das Skript ohne Root-Rechte aus, werden verwaiste snaps angezeigt, aber nicht deinstalliert.
Links¶
snap - Wikiartikel zu snaps