Ubuntu leichter von Snap befreien mit easy-unsnap.sh

Mi, 4. Mai 2022, Fabian Schaar

Ubuntu gehört seit langer Zeit zu den populärsten GNU/Linux-Distributionen mit einem besonderen Fokus auf dem Desktop für Endnutzerinnen und -nutzer. Doch während ihrer mittlerweile an die 18 Jahre langen Geschichte haben die Entwickelnden der Distribution immer wieder für Kontroversen gesorgt: Zum einen wäre da der mittlerweile wieder eingestellte Unity-Desktop, der von den einen geliebt, von den anderen regelrecht gehasst wurde. Auch diverse Datenschutzentscheidungen, die Canonical, die Firma hinter Ubuntu, in der Vergangenheit getroffen hat, kamen bei einigen eingefleischten Linuxern schlecht an.



Nachdem sich die Entwicklerinnen und Entwickler von Projekten wie Unity oder Ubuntu One getrennt haben, gehen sie mittlerweile einen neuen Sonderweg: gemeint ist das Anwendungssystem Snap.


Die Snap-Technologie von Ubuntu ähnelt grundsätzlich Softwareverwaltungslösungen wie Flatpak und setzt auf isolierte App-Container. Anwendungen sollen also mehr oder minder getrennt vom restlichen System gestartet werden und laufen. Snap wird voraussichtlich noch einige Zeit unter Ubuntu vertreten sein, immerhin hat der Gründer des Projekts, Mark Shuttleworth, erst vor kurzem bestätigt, dass man auch zukünftig auf Snap setzen wolle.


Doch leider bringt Snap einige Nachteile mit sich:

  • Anders als Flatpaks sind Snaps sehr stark auf Canonical zugeschnitten: Das Backend von Snap ist proprietär und macht Canonical so zum Infrastrukturmonopolisten von Snap. Nicht ohne Grund setzt kaum eine andere Distribution so sehr auf die Technologie wie Ubuntu.
  • Vermutlich wird Snap langfristig einen immer grösseren Stellenwert neben den klassischen .deb-Paketen in Ubuntu einnehmen und könnte gerade den Desktop von anderen Distributionen so sehr entfernen, dass ein späterer Umstieg erschwert werden könnte.
  • Gegenüber klassisch installierten Programmen sind die Startzeiten von Snap-Anwendungen teilweise deutlich länger. Gerade auf älterer Hardware können Snaps das System zusätzlich verlangsamen.

Was können Anwenderinnen und Anwender von Ubuntu also tun, wenn sie Snap nicht einsetzen wollen? Snap ist mittlerweile zwar mehr oder weniger fest mit Ubuntu verzahnt, lässt sich allerdings auch weiterhin entfernen. Wer nicht auf Snap-freie Distributionen wie Debian GNU/Linux oder Linux Mint wechseln möchte, kann seit kurzem zum Beispiel das Tool unsnap des ehemaligen Snap-Mitentwicklers Alan Pope nutzen, und so alle Snaps in Flatpaks umwandeln.

Für alle, die sich schon etwas besser mit Ubuntu bzw. Debian-basierten Systemen auskennen, stellt die Ausführung von Popes Scriptsammlung sicherlich keine grosse Hürde dar: Zusammengefasst muss nur ein git-Repository geklont und das Startscript ausgeführt werden. Daraufhin legt unsnap im gleichnamigen Ordner ein log-Verzeichnis an, worin sich auf das System abgestimmte Shell-Scripts befinden, die einzeln ausgeführt werden können.

Alan Pope hat mit unsnap eine gute Möglichkeit geschaffen, Snap unter Ubuntu im Zaum zu halten; die Umsetzung ist zwar Anwender- aber nicht unbedingt Einsteiger-freundlich. Aus diesem Grund habe ich mich mit meinen laienhaften, aber doch ausreichenden shell-Scripting-Fähigkeiten ein Script erstellt, mit dem ich die Ausführung von unsnap zusammenfassen und um einige sinnvolle Punkte ergänzen wollte. Da ich selbst Debian GNU/Linux nutze, habe ich das Script bisher nur in einer virtuellen Maschine mit einer Standardinstallation von Ubuntu 22.04 getestet, hier lief das Script, das mittlerweile easy-unsnap.sh heisst, problemlos durch. Zu beachten ist natürlich, dass sich unsnap selbst noch in der Entwicklungsphase befindet. Daher würde ich grundsätzlich eher dazu raten, das Script so früh wie möglich nach der Installation auszuführen, also an einem Zeitpunkt, an dem noch wenige Snaps auf dem System installiert sind.

easy-unsnap.sh installiert, nachdem man es gestartet hat zunächst git und klont Alan Popes unsnap-Repository. Danach wechselt es in das unsnap-Verzeichnis, führt das unsnap-Grundscript aus und startet dann der Reihe nach alle neu erstellten und auf das System angepassten Scripts. Konkret erstellt unsnap ein snap-Backup, installiert für so viele Anwendungen wie möglich Flatpak-Äquivalente, entfernt dann alle Snaps und schlussendlich snapd, also den Dienst, der Snap verwaltet.

Momentan ist glücklicherweise (vermutlich ist 'noch' hier zutreffend) nur Firefox als Snap-Endnutzeranwendung standardmässig installiert, somit ist der Umstellungsprozess noch einigermassen überschaubar. Der Ubuntu-Snap-Store selbst wird ebenfalls als Snap ausgeliefert, lässt sich allerdings durch andere Appcenter ersetzen: Als erste Ergänzung zum regulären unsnap installiert easy-unsnap direkt GNOME Software, standardmäßig so, dass die Snap-Erweiterung dem System fernbleibt und die Flatpak-Erweiterung mit eingebunden wird. Anschliessend werden mit dem autoremove Befehl mit der Zusatzoption --purge alle nicht mehr benötigten Pakte vom System entfernt, sofern diese vorliegen.

Nach dieser Prozedur ist das Script theoretisch schon fertig und gratuliert dem/der angemeldeten Nutzer/in.

Alle im Folgenden beschriebenen Teile des Scripts sind optional und werden erst aktiviert, wenn die entsprechenden Zeilen des Scripts (vor der Ausführung) auskommentiert werden und die Leerzeichen vor den Zeilen entfernt werden. Momentan habe ich das Script noch nicht ins Deutsche übersetzt, sondern für bessere internationale Verständlichkeit auf Englisch gehalten (so auch die Hinweise im Script selbst)

Um die spätere Nutzung des Systems zu verbessern, sollte Flatpak meiner Meinung nach jedoch etwas besser integriert werden. Daher kann die Option Flatseal zu installieren, aktiviert werden. Flatseal hilft bei der Verwaltung der Rechte, die eine Flatpaksandbox auf dem System eingeräumt bekommt.

Im unsnap-Prozess wird der Snap-Firefox durch den Flatpak-Firefox ersetzt. Da Webbrowser in Sandboxen eventuell einige Probleme hervorrufen können, habe ich unter dem Hauptteil des Scripts auch einige Installationsbefehle für diverse andere Webbrowser zusammengetragen. Momentan mit an Bord sind:

  • LibreWolf (.deb, freiere Firefox-Alternative, basierend auf der Gecko-Renderingengine),
  • GNOME Web (sehr gute GNOME-Integration durch GTK4, basiert auf WebKit-GTK)
  • Firefox ESR (länger unterstützte Firefox-Ausgabe, die auch der Standard unter Debian ist; das Script fügt das Mozilla-Team-PPA zu den Paketquellen hinzu).

Des Weiteren sind die leichtgewichtigen Webbrowser NetSurf und Dillo über das Script installierbar. Diese sind allerdings so leichtgewichtig, dass einige Funktionen bisher nicht oder nicht ganz umgesetzt wurden. Ausserdem kann der qutebrowser installiert werden, der wahlweise über die Qt-Webengine (Qt-Portierung von Blink) oder Qt-Webkit (Qt-Portierung von WebKit) gestartet und vollkommen über ein textbasiertes Interface genutzt werden kann.

Palemoon ist schon vorgemerkt, allerdings wird die Installation momentan noch nicht für Version 22.04 beschrieben. Wer mag, gelangt über den enthaltenen Link auf die Palemoon-Webseite und kann auch Versionen für ältere Ubuntu-Releases installieren.

Da die Aktualisierung von Webbrowsern, die als tar-Archiv ausgeliefert werden (z.B. Seamonkey oder Firefox von der Mozilla-Webseite) über ein Script schwieriger zu handhaben ist, habe ich diese Browser vorerst nicht integriert.

Wie oben bereits erwähnt, bin ich für meine Tests als Debian-Nutzer auf virtuelle Maschinen angewiesen. Ich würde mich daher freuen, wenn einige das Script einmal ausprobieren, vielleicht erleichtert es manchen ja den unsnap-Prozess – dann wäre das Ziel schon erreicht.

unsnap von Alan Pope ist lizenziert unter der freien MIT-Lizenz. Auch easy-unsnap kann und soll weitergegeben werden:

unsnap: https://github.com/popey/unsnap
easy-unsnap.sh: https://github.com/fab161/geeky/blob/main/easy-unsnap.sh

Tags

Ubuntu, Snap, unsnap, Script, System, Firefox, Linux