Snap

Aus ArtisanCommerce Dokumentation

Was ist Snap? (Paketverwaltung & Container-System)

Snap ist ein von Canonical (den Machern von Ubuntu) entwickeltes System zur Softwareverteilung und Paketverwaltung. Es unterscheidet sich grundlegend von klassischen Formaten wie `.deb` oder `.rpm`.

1. Kernkonzept: "Everything is Included"

Im Gegensatz zu klassischen Paketen, die Abhängigkeiten vom restlichen System teilen, bringt ein Snap-Paket fast alles mit, was es zum Laufen braucht (Libraries, Python-Interpreter, etc.).

  • Vorteil: Eine App läuft auf Ubuntu 18.04 genauso wie auf Fedora oder Arch, ohne "Dependency Hell".
  • Nachteil: Die Pakete sind deutlich größer (Disk Space).

2. Die Architektur: SquashFS & Mount-Points

Das ist der technische Grund, warum Snap nach einem Timeshift-Restore oft bricht:

  • Ein Snap ist kein loser Ordner voller Dateien, sondern ein komprimiertes Read-Only Dateisystem (SquashFS).
  • Wenn du eine App startest, "mountet" (einhängen) Linux dieses File als virtuelles Laufwerk unter `/snap/`.
  • Die Basis-Umgebung (z.B. `core22`) ist das Fundament, auf dem die Apps aufbauen.

3. Sicherheit durch Sandboxing

Snaps laufen isoliert vom Rest des Systems. Sie nutzen Mechanismen wie:

  • AppArmor: Verhindert, dass eine App auf Dateien zugreift, die sie nichts angehen (z.B. dein Browser liest dein SSH-Key Verzeichnis).
  • Seccomp: Schränkt die Systemaufrufe ein, die eine App machen darf.

4. Die Rollback-Funktion

Snap behält standardmäßig die letzten zwei Versionen einer App auf der Platte. Wenn ein Update fehlschlägt, kann man sofort zurückspringen:

sudo snap revert [app-name]

Probleme m. Snap? (fehlende Abhaengigkeiten & kaputtes System)

Snap ist zwar so konzipiert, dass es eigentlich keine Abhaengigkeiten gibt, aber es gibt etwas das man als externe Abhaengigkeiten bezeichnen kann. Bspw. laesst sich ein Snap Paket oft auf den ersten Blick ohne weiteres installieren und betreiben, aber zur vollen Funktionalitaet braucht es dann eventuell doch Bibliotheken oder Programme die auf dem Host System installiert und richtig konfiguriert sein muessen... bspw. beim Kiview Dolphin Plugin das AFAIR als snap installierbar ist aber dann nicht richtig funktioniert oder falsch konfiguriert erscheint. Des weiteren kann es nach einer Systemwiederherstellung mittels eines Snapshots, durchaus zu schwerwiegenden Fehlern am eigentlichen Snap system kommen, um das zu loesen, muss man bspw. den Snap Daemon, Sockets, Service (snapd) stoppen, Konfigurationsdateien loeschen/zuruecksetzen... und dann refreshen. Siehe dazu den Artikel 'Snap-Probleme'.

Warum snapd nach Backups oft "streikt"

Da Snaps als virtuelle Laufwerke in das System eingehängt sind, speichert der Linux-Kernel Mount-Informationen in Echtzeit. Ein Backup-Tool wie Timeshift sichert oft die Dateien, aber nicht den Zustand der Mount-Punkte oder die spezifischen Sicherheits-Labels (AppArmor). Nach einem Restore versucht der Snap-Daemon (`snapd`), ein Laufwerk zu finden, das technisch nicht mehr "da" ist – es entsteht ein "Ghost Mount".