Suchen

Definition „Snap-Paketmanager“ Was ist Snappy?

Autor / Redakteur: MirkoK / Stephan Augsten

Snappy ist ein Paket-Management- und Software-Deployment-System für Linux. Es vereinfacht Erstellung, Auslieferung und Aktualisierung von Linux-Paketen durch sogenannte Snaps., distributionsübergreifende, abhängigkeitsfreie und isolierte Software-Container.

Als federführendes Unternehmen hinter Snappy betreibt Canonical den Snap-Store snapcraft.io.
Als federführendes Unternehmen hinter Snappy betreibt Canonical den Snap-Store snapcraft.io.
(Bild: Canonical)

Aufbau und Funktionsweise von Snap-Paketen

Snap-Pakete sind komprimierte Dateisystem-Images im SquashFS-Format. Sie enthalten neben der eigentlichen Software alle Abhängigkeiten wie Bibliotheken, Laufzeitumgebungen und externe Tools. Nur Komponenten wie die fundamentalen System-Bibliotheken, Desktop-Umgebungen oder Systemkerne sind gegebenenfalls in gesonderte Snaps ausgelagert.

Anders als herkömmliche Linux-Pakete werden Snaps bei der Installation nicht entpackt. SquashFS ermöglicht ein transparentes Dekomprimieren einzelner Dateien zur Laufzeit, wodurch ein Entpacken unnötig ist. Stattdessen liegen die komprimierten Dateisystem-Abbilder im Verzeichnis „/var/lib/snapd/snaps/“ und werden unter „/snaps/“ eingehängt. Jeder Container hat dabei sein eigenes Unterverzeichnis, so dass es zu keinen Konflikten zwischen den Paketen kommen kann.

Die Isolierung der Container geht aber noch viel weiter darüber hinaus. Snap-Apps laufen in eigenen Sandboxes, die per AppArmor, Kernel-Namespaces und cgroups voneinander und dem restlichen System abgekapselt sind. Für die Vergabe von Ressourcen sowie die Integration mit anderen Anwendungen und dem Betriebssystem kommen sogenannte Interfaces zu Einsatz. Mit ihnen lassen sich Zugriffe auf Hardware-Komponenten, Systemdienste, Konfigurationen, Dateisysteme und vieles weitere kontrollieren und beschränken.

Vor- und Nachteile gegenüber anderen Paket-Systemen

Klassische Linux-Pakete wie DEB und RPM sind eng an eine spezifische Distribution gebunden. Softwareentwickler müssen entweder für jedes Linux-System eigene Pakete erstellen oder warten, bis die Distributoren die neue Version integriert haben. Mithilfe von Snaps können Entwickler einheitliche Pakete für alle Linux-Varianten anbieten, die das Paket-System unterstützen. Anders als das mit Snap vergleichbare Paket-System Flatpack können Snaps nicht nur Anweisungsprogramme, sondern auch Systemdienste oder Flash-Abbilder für Embedded Devices enthalten.

Da die Container sehr wenige bis gar keine Abhängigkeiten haben und sich nicht ins restliche System integrieren müssen, lassen sich schnellere Updates ohne Versionskonflikte ausliefern. Hierbei wird oft bemängelt, dass der Verwaltungsdienst „snapd“ kein Deaktivieren der automatischen Updates vorsieht. Allerdings ist es möglich, Pakete auf eine Hauptversion zu fixieren und Aktualisierungen bis zu 60 Tage zurückzuhalten. Ebenso lassen sich Updates leicht zurücknehmen, um zu einer vorherigen Version zurückzukehren.

Snappy ist eng an systemd gekoppelt, sodass traditionelle Distributionen wie Slackware oder Devuan das Paket-System nicht ohne Weiteres nutzen können. Darüber hinaus ist es bisher nicht möglich, die Sicherheitserweiterungen AppArmor und SELinux gleichzeitig zu verwenden. Die Sandbox ist deshalb auf Distributionen wie RHEL, SUSE und Fedora weit weniger sicher.

Einen vollständigen Schutz vor Schadsoftware bieten auch Snaps nicht. Zwar durchlaufen Pakete aus dem Snap-Store verschiedene automatisierte Sicherheitsprüfungen. Code-Audits wie bei den Paketen aus den Repositories der Distributionen finden jedoch weit weniger statt. Das für Ubuntu und Snap verantwortliche Unternehmen Canonical empfiehlt, Snaps ausschließlich von vertrauenswürdigen Anbietern zu installieren.

Bisher betreibt Canonical den einzigen Snap-Store, dessen Software nicht vollständig frei ist. Snaps lassen sich jedoch auch von der Entwickler-Website herunterladen und unabhängig von einem Snap-Store installieren.

Snap in der Systemadministration und Anwendungsentwicklung

Da Snappy von Canonical entwickelt wird, ist das Paket-System ab Ubuntu 16.04 vorinstalliert. Für die meisten anderen Distributionen gibt es entsprechende Pakete in den jeweiligen Repositories. Das Gnome Software Center unterstützt von vornherein Snaps. Einige andere Paketmanager wie KDE Discover lassen sich entsprechend nachrüsten.

Für die Verwaltung der Snaps ist der Hintergrunddienst „snapd“ zuständig. Administratoren nutzen das Kommandozeilen-Programm „snap“ zum Installieren, Deinstallieren, Aktualisieren und Konfigurieren der Pakete. Um eigene Snaps zu erstellen, dient das Programm „snapcraft“. Entwickler müssen eine Datei namens „snapcraft.yaml“ anlegen und Informationen angeben, wie das Paket gebaut und installiert werden soll. Dazu gehören unter anderem Metadaten, Build- und Laufzeit-Abhängigkeiten, Build-Optionen sowie benötigte Interfaces.

(ID:46934734)