snap ist eine Software von Canonical, die dazu dient, Pakete zu installieren. Die per snap installierten Pakete bringen ihre eigene Laufzeitumgebung mit und sind damit unabhängig vom Stand des restlichen Systems.
snap ist daher vergleichbar mit flatpak oder appImage.
Canonical hat sicherlich gute Gründe, ein solches Paket anzubieten. Generell gibt es gute Gründe, die Kontrolle und Verantwortung bei der Verteilung von Software mehr in Richtung der Entwickler zu verlagern.
Wo ist das Problem?
Die Art und Weise, wie Canonical ihr snappy in das "normale", apt basierte, Softwaremanagement integriert, ist undurchsichtig und verwirrend. Man weiß nie genau, ob man sich Software direkt aus dem Ubuntu Repository installiert, oder ob man ein snap Paket herunterlädt.
Auch ist in der Praxis der Umgang mit snap Paketen recht schwierig, vor allem, wenn man etwas mehr damit machen will, als sie einfach zu starten.
Wo welche Konfigurationsdateien für snap Programme abgelegt sind, muss man erforschen. Hat man sie gefunden, ist es aber noch nicht gesagt, dass man sie auch ändern kann, weil die Sandbox des Programms evtl. read-only ist.
Es kann auch passieren, dass symbolische Links nicht aufgelöst werden, so dass man plötzlich einen "Datei nicht gefunden" Fehler bekommt, obwohl man die Datei direkt vor der Nase hat.
Man kann mit snap Paketen also die eine oder andere Überraschungen erleben. Überraschungen, die man eigentlich nie - in dem Moment, in dem sie auftreten, aber überhaupt rein gar nicht - gebrauchen kann.
Wer eine Ubuntu Distribution nutzen, aber keine Überraschungen dieser Art erleben will, muss snap entfernen.
snap entfernen
Die einzelnen Schritte, um snap zu entfernen.
Die Durchführung besteht aus mehreren Schritten.
- Die schon installierten snap Pakete entfernen. Dazu braucht man snap.
- snap Dämon entfernt.
- Verhindern, das snap wiederkommt.
Pakete entfernen.
Als erstes muss man herausfinden, welche Pakete auf dem System per snap schon installiert sind.
Liste aller Snap-Programme anzeigen
snap listDie Liste ist natürlich je nach System unterschiedlich.
Beispiel einer Ausgabe von snap list auf einem Ubuntu 23.04 System nach der Installation.
Die Pakete "software-boutique" und "ubuntu-mate-welcome" gab es auf dem frischen Kubuntu 23.04 System nicht. Sie gibt es aber unter Ubuntu-MATE 20.04. Es gibt also unterschiedliche Pakete, je nach Distro und Version.
Jedes der Pakete muss einzeln entfernt werden. Sinnvoll ist es, dabei eine bestimmte Reihenfolge einzuhalten.
Die Pakete snapd, coreXX und bare gehören zu snap selber und sollten zum Schluss gelöscht werden.
Hält man die Reihenfolge nicht ein, ist es allerdings auch nicht wirklich schlimm. Man bekommt dann Fehlermeldungen, die einen wieder auf den richtigen Weg bringen.
Aber:
Zum Entfernen von snap Paketen wird snap benutzt. snapd selber muss daher das letzte Paket sein, das entfernt wird.
Und:
Zum Entfernen von snapd wird "apt" benutzt.
Hier ist die Kommandoabfolge für die oben angezeigten Pakete:
Pakete einzeln entfernen
sudo snap remove --firefox sudo snap remove --purge gnome-42-2204 sudo snap remove --purge gtk-common-themes sudo snap remove --purge snapd-desktop-integration sudo snap remove --purge software-boutique sudo snap remove --purge bare sudo snap remove --purge core22Hintergrundprozesse entfernen
snapd ist ein Paket, dass über den Paketmanager apt installiert wurde. Es muss auch über apt wieder deinstalliert werden.
snapd deinstallieren
sudo apt remove --purge snapdHintergrundprozess stoppen
snap hat - noch zu Lebzeiten - einen Hintergrundprozess mit Namen "snapd" und noch diverse andere Unterprozesse gestartet. An sich sollte das Kommando apt remove snapd auch die Hintergrundprozesse aufräumen, Sollten diese auch nach der De-Installation doch noch laufen, müssen sie gestoppt werden. Solange sie laufen, blockieren sie weitere Aufräumarbeiten.
Hintergrundprozess prüfen
sudo systemctl status snapdUnd zur Sicherheit:
sudo systemctl list-units | grep snapWenn da noch was ist, dann sind die folgenden Schritte notwendig.
Hintergrundprozess stoppen
sudo systemctl stop snapdHintergrundprozess abschalten
sudo systemctl disable snapdHintergrundprozess prüfen
sudo systemctl status snapdVerzeichnisse entfernen
Nachdem die Hintergrundprozesse beendet wurden, kann die Festplatte aufgeräumt werden.
snap legt überall und nirgends im System Verzeichnisse an.
Mir bekannt sind:
- /snap
- $HOME/snap
- /var/snap
- /var/lib/snapd
Diese Liste habe ich auf einem Kubuntu 23.04 System zusammengestellt. Auf geht's.
Privates snap Verzeichnis löschen
rm -rf snapGlobales snap Verzeichnis löschen
sudo rm -rf /snapVariables snap Verzeichnis löschen
sudo rm -rf /var/snapsnapd (Dämon) Verzeichnis löschen
sudo rm -rf /var/lib/snapdBitte bei den rm Befehlen prüfen, ob sie auch wirklich erfolgreich waren. Auf manchen Systemen hängt snap eigene Dateisysteme unterhalb der genannten Verzeichnisse ein. Dann können die Verzeichnisse nicht gelöscht werden.
Abschließen
Ganz zum Schluss sollte man das System neu starten. Das hilft auch, wenn man die Verzeichnisse im ersten Durchgang nicht löschen konnte.
Danach prüfen, ob
- eines der Verzeichnisse wieder auftaucht,
- der Hintergrundprozess snapd wieder läuft.
Wenn hier etwas vorhanden ist, das man vorher gelöscht hat, wurde es nach dem Neustart durch einen wieder gestarteten Hintergrundprozess erneut angelegt. Dann muss man die Prozedur noch einmal sorgfältig durchgehen und suchen, wo was schief gelaufen ist. Sorry.
Zwei mögliche Ursachen:
- Die systemd Prozesse noch angeschaltet. (Weil man z.B. vergessen hat, am Ende den snapd per apt zu deinstallieren.). Diese Prozeese legen sich ihre Verzeichnisse beim Hochfahren wieder an.
-
Die rm -rf XXX Befehle sind nicht alle durchgelaufen, weil das System eigene Dateisysteme für /var/lib/snapd und /snap angelegt und eingebunden hatte.
Überprüfen kann man das mit mount | grep snap.
Diese Dateisysteme werden u.U. nicht per fstab, sondern irgendwo über systemd eingebunden.
Hier noch einmal die zentralen Befehle zum Abschalten, nachdem man alle Pakete deinstalliert hat:
- sudo apt remove --purge snapd
- sudo systemctl disable snapd
- sudo reboot
- sudo rm -rf /snap /var/lib/snapd
Rückkehr verhindern
Verhindern, dass snap wiederkommt.
Tja. snap ist weg und man hat Ruhe? Ganz so ist es nicht.
Canonical hat sein Repository System - und damit apt - ein wenig modifiziert.
Hat man sein System von snap befreit und versucht, ein Paket mit Namen "irgendwas" zu installieren, das im Repository nur als snap Paket verfügbar ist, so wird snap beim Aufruf von apt install irgendwas klammheimlich wieder installiert.
Wer das nicht will, kann apt so konfigurieren, dass genau das nicht mehr passiert.
Dazu muss man eine sog. "preferences" Richtlinie für apt anlgen. Der Inhalt dieser Richtlinie sieht folgendermaßen aus:
"apt preferences" zur Verhinderung von snap.
# To prevent repository packages from triggering the installation of Snap,# this file forbids snapd from being installed by APT.
# For more information: https://linuxmint-user-guide.readthedocs.io/en/latest/snap.html
Package: snapd
Pin: release a=*
Pin-Priority: -10
Die Datei muss im Verzeichnis /etc/apt/preferenced.d liegen. Der Name ist an sich egal, sollte aber einen Hinweis darauf enthalten, was das Ding macht, z.B. nosnap.pref
Diese Datei wird unter Linux Mint ausgeliefert. Linux Mint basiert auf dem Ubuntu Repository, will aber nicht auf den snap
Zug aufspringen.
Alternativen
Man ist also snap los geworden. Das ist schön. Dumm ist es nur, wenn man die Software, die man gerade weg geworfen hat, an sich braucht. Da Canonical die "normale" Version - also ein .deb Paket - nicht mehr zur Verfügung stellt, muss man sich die Software anderweitig besorgen.
Das ist, je nach Software, ganz einfach bis echt ätzend.
.deb Pakete
Ganz einfach ist es, wenn der Hersteller der Software diese als .deb Paket anbietet.
- Herunterladen,
- mit apt install XXX.deb oder apt deb XXX.deb installieren
- fertig.
Bei dieser Art der Installation wird automatisch eine typische Einbindung in das System erzeugt (Menüeinträge, link nach /usr/bin, etc.).
TODO: ppa und Hersteller-Repositories
Eine Anweisung für Firefox findet sich unter Install Firefox on Linux.
Externes Archiv
Ähnlich einfach ist es, wenn der Hersteller die Software als "tar-ball" oder ZIP Archiv anbietet. Herunterladen, irgendwohin (vorzugsweise nach /opt) entpacken. Danach muss man sich allerdings noch um die Pfad- und Menü-Einträge kümmern. Aber auch das ist keine Hexenwerk.
Ein Problem kann das Aktualisieren der Software sein. Pakete die per apt oder snap installiert worden sind, werden automatisch aktualisiert. Das ist bei per Hand installierten Paketen erst einmal nicht so.
Manche Hersteller, z.B. Mozilla, liefern die Software mit einem eigenen Update-Mechanismus aus. Dann braucht man sich um regelmäßige Updates nicht zu kümmern, die sind auf diesem Weg u.U. schneller da, als über das Repository.
Sonderfall: Chromium
Chromium fällt in die Kategorie "... bis echt ätzend." Google finanziert die Entwicklung von Chromium als Basis für Google Chrome. Man kann sich ohne Probleme Chrome als .deb Paket herunterladen, aber für Chromium existiert diese Möglichkeit nicht (mehr).
Hier ist eine Quelle, die das Chromium Paket aus dem Repository von Linux Mint "klaut":
Eine ander Quelle, das ppa:saiarcot895/chromium-beta
, die man im Netz findet, scheint nicht mehr gepflegt zu werden.