Snaps
Snap ist der Name des hauseigenen, universalen Container-Formats für Anwendungen von Ubuntu. Snaps sind nahtlos in jedes Ubuntu-System integriert und werden automatisch mit Updates aus der Paketquelle Snapcraft.io versorgt. Dafür sorgt der bei Ubuntu vorkonfigurierte Dienst snapd.
Snaps sind auf jeder Linux-Distribution lauffähig, wo snapd installiert werden kann. In der Praxis aber verwenden andere LInuxe eher das Konkurrenz-Format Flatpak. Das Ubuntu-Derivat Linux Mint hat Snaps sogar über die Paketverwaltung apt blockiert.
Vor- und Nachteile von Snaps und Flatpaks
Snaps haben ähnliche Vorteile wie ihr Konkurrenz-Format Flatpaks:
- Sicherheit: Anwendungen werden in einer Sandbox ausgeführt. Ähnlich wie auf Smartphones muss der Zugriff auf das Dateisystem, Ortungsdienste etc. gewährt werden.
- Ausweg aus der Abhängigkeits-Hölle („Dependency hell“): Anwendungen werden mit allen benötigten Bibliotheken in den Container gepackt, so dass sie Distributions- und Versions-übergreifend funktionieren.
- Entlastung für Entwickler: Anstatt Pakete für die einzelnen Distributions-Formate (deb, rpm, apk etc.), zu bauen und zu warten, müssen Entwickler nur noch den Snap bereitstellen.
- Frische: Es gibt zwar weit mehr Deb-Pakete als Snaps, aber manche Anwendungen werden nur als Snaps angeboten oder liegen als Snap in neueren Versionen vor als ihre älteren, paketierten Pendants.
Daraus ergeben sich aber auch Nachteile:
- Größe: Snaps sind um ein vielfaches größer als klassische Deb-Pakete, weil sie alle Bibliotheken, von denen ihre Funktion abhängt, mitbringen müssen.
- Potentielle Unzuverlässigkeit: Snaps stehen nicht wie Pakete unter der Kontrolle von Maintainern, sondern werden von Entwicklern oder Dritten betreut. Deshalb ist die Wahrscheinlichkeit höher, dass ihre Pflege aufgegeben wird oder im schlimmsten Fall zur Verteilung von Schadprogrammen missbraucht werden.
Sicherheitsbedenken nach Crypto-Betrug
Im Snap-Store tauchten mehrfach betrügerische Wallet-Apps für Crypto-Währungen auf. In einem Fall wurde ein Nutzer um 490.000 Dollar erleichtert, in einem anderen kaperten die Betrüger die Domain eines ehemaligen Snap-Publishers und damit sein Konto, um ihre Masche in neuem Gewand fortzuführen. All dies hat ein ehemaliger Canonical-Angestellter dokumentiert.
Unter dem Strich ist vor der Installation von Snaps also eine ähnliche Vorsicht geboten wie bei der Nutzung von PPAs und Fremdquellen. Trotz automatisierter Kontrollen und – seit den Crypto-Betrügereien auch Prüfungen durch echte Menschen – sind nur Snaps aus vertrauenswürdiger Quelle wirklich sicher:
- „Offizielle“ Snaps: Auf der Homepage des Programmes/des Herausgebers sollte der Download-Link im Snap-Store ausgewiesen sein. Bekannte offizielle Snaps stammen vom Spotify, Micosoft (VS Code) und Google (Cloud SDK)
- Quellenangabe „Snapcrafters“: Bei Snaps mit dieser Quellen-Angabe darf man davon ausgehen, dass sie von Canonical-Mitarbeitern oder bekannten Community-Mitgliedern erstellt wurden.
- Verifizierte Quellen sind an einem grünen Badge erkennbar.
Snaps aus dem App-Zentrum installieren
Auf dem Ubuntu-Desktop werden Snaps parallel zu den klassischen Apt-Paketen im App-Zentrum, der grafischen Software-Verwaltung, angeboten. Einige Anwendungen liegen sowohl als Snaps als auch als klassische Pakete vor. In diesem Fall sollte man genau überlegen, welche Version man haben möchte. Die Suche im App-Zentrum lässt sich auch gezielt nach „Debian-Pakaten“ oder „Snaps“ filtern. Von einigem Snaps lassen sich stabile, Beta- oder Edge-Versionen installieren. Wer keine besonderen Grund hat, sollte die stabile Version den Entwicklungs-Versionen vorziehen.
Bestimmte Kern-Anwendungen wie die Browser Firefox und Chromium oder das E-Mail-Programm Thunderbird werden von Ubuntu seit einigen Jahren standardmäßig als Snaps installiert. Das geht soweit, dass selbst ein
$ apt install firefox
auf der Kommandozeile nicht etwa das Deb-Paket, sondern den Snap installiert. Hier hat man nur die Wahl, die Mozilla-eigene Paketquelle einzurichten (ja, Mozilla baut eigenen Deb-Pakete) und per Apt-Pinning die Paketverwaltung so umzubiegen, dass Firefox aus der alternativen Quelle installiert wird.
Snap-Kritik
In der bekannt streitbaren Linux-Community gibt es einige besonders laute Stimmen, die an Snaps kein gutes Haar lassen. Die Haupt-Kritikpunkte richten sich gegen den Snap-Store, der exklusiv von Canonical verwaltet wird (im Gegensatz zur möglichen dezentralen Verteilung von Flatpaks) und dessen Code nicht komplett quelloffen ist. Snaps seien, so die gängige Kritik, ohnehin nur ein weiterer Alleingang von Canonical. Während einige Argumente im Kern richtig sind, sind andere nur typisches Canonical-Bashing. Wirklich vorbei kommt man an Snaps auf einem Standard-Ubuntu-System sicher nicht.
Standardmäßig installierte Snaps
Es fing mit Ubuntu 22.4 LTS an, dass Firefox zwangsweise als Snap installiert wurde. Weitere Snaps kamen über die Jahre hinzu. Hier die Liste eines frischen Ubuntu 26.04 LTS:
$ snap list
Name Version Rev Tracking Publisher Notes
bare 1.0 5 latest/stable canonical✓ base
core24 20260317 1587 latest/stable canonical✓ base
desktop-security-center 0+git.80cd2b4 150 1/stable/… canonical✓ -
firefox 149.0.2-1 8107 latest/stable/… mozilla✓ -
firmware-updater 0+git.5645b80 226 1/stable/… canonical✓ -
gnome-46-2404 0+git.f1cd5fa-sdk0+git.ca9c59c 153 latest/stable/… canonical✓ -
gtk-common-themes 0.1-81-g442e511 1535 latest/stable/… canonical✓ -
mesa-2404 25.0.7-snap211 1165 latest/stable/… canonical✓ -
prompting-client 0+git.2e14a72 204 1/stable/… canonical✓ -
snap-store 0+git.10310e85 1367 2/stable/… canonical✓ -
snapd 2.75.2 26865 latest/stable canonical✓ snapd
snapd-desktop-integration 0.9 361 latest/stable/… canonical✓ -
thunderbird 140.9.1esr-1 1057 latest/stable/… canonical✓ -
ubuntu-desktop-bootstrap 26.04 589 26.04/stable canonical✓ classic
Snaps auf der Kommandozeile verwalten
Einen Snap (de-) installieren:
$ snap install <snap-name>
$ snap remove <snap-name>
Snaps speichern zusätzlich Snapshots, bevor sie upgedatet oder deinstalliert werden. Snaphots umfassen Benutzereinstellungen und Anwendungsdaten und werden standardmäßig nach 31 Tagen gelöscht. Um einen Snapshot manuell zu löschen, geht man wie folgt vor:
$ snap saved # alle Snapshots mit ihren IDs listen
$ snap forget <id-Nummer> # einen Snapshot löschen
Beim Deinstallieren eines Snaps wird ein letzter Snapshot erstellt. Dies lässt sich mit der Option –purge verhindern:
snap remove --purge <snap-name>
Wie Snaps funktionieren
Snaps sind wie alle Container-Formate Speicherplatz-intensiv. Dieses Problem versucht Canonical mit zwei Maßnahmen zu bewältigen:
- Snaps werden im SquashFS-Format gespeichert. SquashFS ist ein Dateisystem, das von Haus aus komprimiert ist. Der Nachteil vom SquashFS besteht darin, dass ein Programm beim ersten Start erst dekomprimiert werden muss, was je nach Hardware die Startzeit mehr oder weniger verzögern kann. Wegen lahmer Startzeiten beim Firefox-Snap sind die Entwickler unter anderem zu einem schnelleren Kompressions-Alghorithmus gewechselt.
- Genau wie Flatpaks bringen auch Snaps nicht alle Abhängigkeiten mit. Statt dessen gibt es Basis-Pakate für den Core, die Desktop-Umgebung und das Theming, die nur einmal installiert werden müssen bzw. vorinstalliert sind.
- Die Größe der Downloads bei der Aktualisierung von Snaps wird durch sogenannte Deltas minimiert, d.h. statt des kompletten Snaps werden nur die Teile heruntergeladen, die sich tatsächlich verändert haben.
Inspektion und Fehlersuche
Es gibt zwei Möglichkeiten, um das Innenleben von Snaps zu inspizieren:
- Die Datei snap.yaml eines installierten Snaps in einem Texteditor anschauen.
- Das Kommando
snap <befehl>(ggf. mit der Option--verbose) absetzen. Dies funktioniert auch mit Snaps, die noch nicht installiert sind.
Grundlegende Informationen über einen Snap erhält man mit snap info (ggf. mit der Option --verbose). Die Verbindungen/Schnittstellen, die ein Snap aus seiner Sandbox heraus nutzen darf, zeigt snap connections.
Das folgende Kommando zeigt, von welchem Basis-Snap der Firefox-Snap abhängt:
$ snap info --verbose firefox | grep base:
base: core24
Unter Ubuntu 26.04 LTS wird kurz nach der Publikation noch core24 (und nicht core26, wie man vielleicht erwarten würde) angezeigt.
Das folgende Kommando zeigt, welche Verbindungen der Firefox-Snap nutzen darf:
$ snap connections firefox
Schnittstelle Plug Slot Notizen
alsa firefox:alsa - -
audio-playback firefox:audio-playback :audio-playback -
[...]
Da Firefox eine Unzahl von Verbindungen (Netzwerk, Audio, Grafik, Desktop …) nutzt, werden hier exemplarisch nur die ersten Zeilen der Ausgabe gezeigt. Sie zeigt, dass Firefox den alten ALSA-Audiotreiber zwar nutzen kann (es existiert ein Plug), dies aber nicht tut (der Slot ist leer, also nicht eingestöpselt). Statt dessen nutzt Firefox das „audio-playback“-Interface (der Slot „:audio-playback“ ist eingestölpselt).
Datenmüll manuell und automatisch beseitigen
Bei Aktualisierungen von Snaps werden mindestens zwei Vorgänger-Versionen mit dem Status „disabled“ archiviert, was bei geringer Festplatten-Kapazität zu einem Vermüllungsproblem führen kann. Dafür gibt es zwei Lösungen.
- Entweder man wartet auf die automatische Löschung, die standardmäßig nach 31 Tagen erfolgt.
- Oder man entsorgt die abgelaufenen Snaps selbst.
snap list --all | awk '/disabled/{print $1, $3}' # Liste archivierter Snaps mit Revisionsnummer
snap remove <name> --revision=<nummer>
Wo werden Snaps gespeichert?
Alle komprimierten Snaps sind im Verzeichnis /var/lib/snapd/snaps gespeichert und werden unter dem Mountpoint /snap/<name>/<revisions-nummer> ins System eingebunden. Aus diesem Grund haben Ubuntu-Systeme unschön viele Mountpoints.
Nutzerdaten liegen im jeweiligen Home-Verzeichnis in ~/snap.
