Das Paketformat Snap gilt als Ubuntus Sonderweg. Das Skript Unsnap verbannt Snaps vom Rechner und ersetzt sie soweit möglich durch Flatpaks.
Die Linux-Community ist nicht besonders gut darin, Neues willkommen zu heißen, und verhält sich damit nicht anders als andere Gemeinschaften auch. Der Großteil der Menschheit möchte im Status quo verharren. Da halten wir es mit dem Philosophen Voltaire, der schrieb, das Bessere sei der Feind des Guten, nichts aber sei gefährlicher, als das Gute zu verlassen, um es noch besser zu haben.
Als bestes Beispiel für diese Grundhaltung gilt Systemd, der bis heute umstrittene System- und Sitzungsmanager. Aber auch die neuen Paketsysteme Flatpak, Snap und Appimage, über die LinuxUser zuletzt in Ausgabe 11/2022 [1] berichtete, erfreuen sich keineswegs ungeteilter Zustimmung. Insbesondere das von Canonical zunächst für Cloud-Anwendungen und das Internet der Dinge (IoT) konzipierte, später aber auch für Desktop-Anwendungen portierte Snap-Format erfährt über die grundsätzliche Kritik gegen die neuen Paketsysteme hinaus eine Menge Gegenwind.
Schlechte Erfahrungen
Zunächst einmal steht die Community jeglichen Alleingängen von Canonical schon aufgrund schlechter Erfahrungen in der Vergangenheit skeptisch gegenüber. Hauptkritikpunkte bei Snap (Abbildung 1) sind das proprietäre Backend des Snap-Store [2] und die Tatsache, dass Canonical das Format zunehmend bei Ubuntu durchdrückt und keine offizielle Möglichkeit bietet, Snap zu entfernen.

Abbildung 1: Installieren Sie Programme über Ubuntu Software, dann stellen Sie über ein Auswahlfeld oben rechts die Quelle ein. Einige Pakete wie etwa Firefox stehen generell nur als Snap bereit.
Der Snap-Daemon ist zum Abrufen von Snaps und allen damit verbundenen Metadaten auf die Server von Canonical festgelegt. Zudem haben Snaps funktionelle Nachteile, die das Unternehmen nur langsam beseitigt. Flatpak dagegen fand bei den Befürwortern alternativer Paketsysteme gute Aufnahme. Es vereint vermutlich außerhalb des Ubuntu-Umfelds die meisten User auf sich. Das könnte irgendwann dazu führen, dass die Südafrikaner Snap wieder einmotten, so wie das in der Vergangenheit bereits des Öfteren mit Eigenentwicklungen wie etwa Ubuntu Touch oder dem Display-Manager Mir der Fall war.
Diese Ausgangslage führte dazu, dass einige Distributionen Snaps ablehnen oder sogar blockieren. Als prominentes Beispiel dafür dient das auf Ubuntu LTS basierende Linux Mint, dessen Entwickler sich bereits 2020 entschieden, keine Snaps auszuliefern [3]. Außerdem kündigten sie an, dass Linux Mint ab Version 20 die Installation des Snap-Frameworks über den grafischen Paketmanager aktiv unterbindet, damit Snaps nicht etwa durch die Hintertür automatisch auf dem System des Anwenders landen.
Auch die Notebook-Hersteller System76 (PopOS) und Tuxedo (Tuxedo OS 1) liefern mit ihren Ubuntu-Derivaten keine Snaps aus. Selbst die Ubuntu-Anwender stehen nicht geschlossen hinter Snap, wie viele Anleitungen erahnen lassen, die die Installation von Firefox in Ubuntu als DEB beschreiben.
Unsnap
Ein anderer Weg, sich von Canonicals Paketformat zu entfernen, besteht im Umwandeln von Snaps in Flatpaks. Idee und Umsetzung als Skript unter dem plakativen Namen Unsnap stammt vom ehemaligen Snap-Mitentwickler Alan Pope, der 2021 nach 10 Jahren Firmenzugehörigkeit Canonical den Rücken kehrte. Das auf Github gehostete Skript wurde von den Entwicklern für den Einsatz auf Ubuntu und allen Derivaten getestet, die Snapd und Pakete im Snap-Format anbieten [4].
Wir haben für unseren Test von Unsnap auf einem frisch installierten Ubuntu 22.04 LTS neben den vorhandenen Snaps über die Paketverwaltung Ubuntu Software einige weitere Pakete aus dem Snap Store eingerichtet und uns diese anschließend zur Kontrolle auflisten lassen (Abbildung 2). Anschließend luden wir das Unsnap-Skript von Github herunter. Dazu mussten wir zunächst das Paket git installieren und dann den Befehl aus Listing 1 ausführen.
Listing 1
Unsnap herunterladen
$ git clone https://github.com/popey/unsnap
Bevor es gleich ans Eingemachte geht, lassen Sie uns noch einen Blick darauf werfen, wie das Skript arbeitet. Gleich nach dem Start legt es ein Log-Verzeichnis an, in dem es sechs weitere, auf das jeweilige System abgestimmte Skripte erzeugt (siehe Tabelle “Unsnap-Subskripte”). Die Datei applist.csv [5] dient dazu, Übereinstimmungen von installierten Snaps zu verfügbaren Flatpaks zu finden.
|
Skript |
Funktion |
|---|---|
|
|
Führt den Befehl |
|
|
Installiert den Flatpak-Paketmanager, falls noch nicht geschehen. |
|
|
Fügt das Flathub-Repository in Flatpak hinzu, falls nicht aktiviert. |
|
|
Installiert Flatpaks für jedes identifizierte Snap-Paket, sofern vorhanden. |
|
|
Entfernt die Snaps, für die alternativ Flatpaks installiert werden konnten. |
|
|
Entfernt Snapd selbst, was alle noch installierten Snaps entfernt. |
Mehrere Schritte
Um das Skript zu starten, wechseln Sie zunächst mit cd unsnap in das entsprechende Verzeichnis. Der Befehl ./unsnap (Abbildung 3) informiert Sie zunächst, dass verschiedene Überprüfungen starten, um zu bestimmen, ob Flatpak bereits installiert und Flathub eingebunden ist und für welche Snaps es Entsprechungen in der Flatpak-Welt gibt.

Abbildung 3: Rufen Sie das Skript ohne Zusatzbefehle auf, ermittelt es den Systemzustand und erstellt die benötigten Hilfsskripte, die Sie dann bei Bedarf manuell starten.
Danach erstellt Unsnap die bereits erwähnten Hilfsskripte, die Sie danach bei Bedarf manuell nacheinander starten. Der Aufruf ./unsnap auto erledigt das alles automatisch. Wenn es keinen Grund gibt, eines der Skripte nicht auszuführen, ist das die passende Option für Sie (Abbildung 4).

Abbildung 4: Wird das Skript mit dem Befehl ./unsnap auto aufgerufen, läuft der Prozess automatisch durch.
Auf dem Testsystem installierte der Autor rund 20 Snaps, von denen Unsnap etwa die Hälfte ersetzen konnte. Wir hatten aber absichtlich Snaps wie die Canonical-Tools Juju, LXD und den Kommandozeilen-E-Mail-Client Mutt installiert, um zu testen, wie das Skript darauf reagiert (Abbildung 5). Generell stehen die Chancen besser, dass es für grafische Apps Flatpak-Pendants gibt, da das Konstrukt eher auf den Desktop abzielt. Snap dagegen peilt auch die Server-Welt an.

Abbildung 5: Nicht immer gibt es für installierte Snaps eine Entsprechung als Flatpak. Das Skript listet die Fälle gesondert auf.
Nacharbeit nötig
Der Durchlauf dauerte im Test rund 10 Minuten und informierte zu jeder Zeit ausführlich, was gerade geschah. Mit dem Befehl flatpak list (Abbildung 6) ließ sich feststellen, welche Snaps ins Flatpak-Format überführt wurden. Die Snaps, für die es ein Gegenstück bei Flatpak gab, wandelte Unsnap sauber um, alle blieben funktional. Die restlichen Snaps und die Infrastruktur ließ das Skript unangetastet. Um Snap komplett vom Rechner zu verbannen, stünde also manuelle Nacharbeit an.

Abbildung 6: Nach dem Durchlauf von Unsnap lässt sich mit dem Befehl flatpak list überprüfen, welche Snaps das Skript durch Flatpaks ersetzte.
Anschließend installierten wir Ubuntu 22.04 erneut, samt einiger Snaps, von denen wir wussten, dass es entsprechende Flatpaks gibt. Dazu zählten Gimp 2.99.10 Beta, Krita, Spotify und KeePassXC. Dabei wurden zusätzlich mehrere Laufzeitumgebungen für Gnome und – wegen Krita – auch für KDE sowie weitere Infrastrukturpakete von Canonical installiert. Mit dieser Umgebung prüften wir nun, ob Unsnap auch die Infrastruktur entfernt, wenn es alle Snaps in Flatpaks umwandeln kann. Das Vorgehen bleibt dabei das Gleiche wie zuvor.
Wir luden das Skript und führten es mit ./unsnap auto aus. Dieses Mal musste es zunächst Flatpak installieren und mit Flathub verbinden. Danach ersetzte der Aufruf alle manuell installierten Snaps erfolgreich durch Flatpaks. Zusätzlich stellte es das bereits bei der Installation vorhandene Snap von Firefox erfolgreich um.
Bei der Kontrolle via flatpak list fiel uns ein kleiner Nachteil dieser Methode auf: Alle Flatpaks sind systemweit und somit für User zugänglich. Es besteht keine Möglichkeit, die Flatpaks wie üblich optional nur für bestimmte User bereitzustellen.
Anschließend prüften wir mit snap list, ob noch etwas von Snap übrig geblieben war. Und siehe da: Die Snaps waren zwar gelöscht, die Infrastruktur jedoch noch vorhanden. Offensichtlich führte das Skript das letzte der sechs Hilfsskripte (99-remove-snapd) nicht aus. Deshalb holten wir das nun manuell nach, indem wir in das Verzeichnis ~/unsnap/log2022... wechselten und dort den Befehl ./99-remove-snapd ausführten. Er entfernt Snapd und nimmt die Teile der Infrastruktur mit, die die Basis nicht benötigt.
Wir stellten dabei allerdings fest, dass Snap bereits tief in Ubuntu verwurzelt ist und sich auch in Handarbeit nicht alles entfernen lässt (Abbildung 7).

Abbildung 7: Wir mussten mit dem Skript ./99-remove-snapd nacharbeiten, um möglichst viel von der Snap-Infrastruktur zu entfernen. Trotzdem verblieben einige Relikte.
Per Hand
Auch ohne Unsnap lässt sich Snap vom Rechner verbannen. Dazu deaktivieren Sie zunächst die entsprechenden Systemd-Dienste (Listing 2, Zeile 1 bis 3). Dann löschen Sie mit sudo snap remove <§§i>Paket<§§i> nacheinander alles, was snap list Ihnen anzeigt. Zu guter Letzt entfernen Sie die noch verbleibenden Reste (Zeile 5 bis 7). Anschließend lassen sich die entfernten Pakete als DEB oder Flatpak händisch wieder installieren.
Listing 2
Unsnap entfernen
$ sudo systemctl disable snapd.service $ sudo systemctl disable snapd.socket $ sudo systemctl disable snapd.seeded.service [...] $ sudo rm -rf /var/cache/snapd $ sudo apt autoremove --purge snapd $ rm -rf ~/snap
Fazit
Unsnap gestattet unter Ubuntu und dessen Derivaten (soweit sie Snap verwenden) installierte Snaps direkt gegen Flatpaks auszutauschen. Dazu muss ein Flatpak als Entsprechung bereitstehen, was bei grafischen Anwendungen sehr häufig der Fall ist. Mit etwas Nacharbeit lässt sich auch die Snap-Infrastruktur entfernen.
Allerdings warnt das Projekt auf Github davor, die Software befinde sich noch im Pre-Alpha-Stadium. Wir versuchten, von Alan Pope eine Stellungnahme zu erhalten, was aber bis Redaktionsschluss nicht gelang. Wir wissen von vielen Anwendern, die Unsnap erfolgreich benutzt haben; auch bei uns gab es keine Probleme. Um aber auf der sicheren Seite zu bleiben, sollten Sie besser den manuellen Weg der Entfernung gehen und die entfernten Pakete dann in Ihrem Wunschformat nachinstallieren. (tle)
Infos
-
Appimage/Flatpak/Snap: Erik Bärwaldt, “Paketdienst”, LU 11/2022, S. 16, https://www.linux-community.de/48320
-
Snap-Store: https://snapcraft.io/store
-
Mint ohne Snap: https://linuxnews.de/2020/06/02/linux-mint-20-ohne-snapd/
-
Unsnap: https://github.com/popey/unsnap
-
Applist: https://github.com/popey/unsnap/blob/main/applist.csv







Gibt es das auch umgekehrt: Ein Flatpak in einen Snap umwandeln?