Im Gegensatz zu Windows und macOS kümmert sich auf Linux-Systemen ein zentraler Paketmanager um die installierte Software. Die in kompakten Paketen ausgelieferten Programme hält ein Repository vor, das der Hersteller der jeweiligen Distribution betreut. Kurze Kommandozeilenbefehle installieren eine Datenbank, löschen den nicht mehr benötigten Ruby-Interpreter und halten vor allem das komplette System auf dem aktuellen Stand. Jedes Paket enthält dabei genau eine Programmkomponente. So stecken beispielsweise der Webserver und die von ihm genutzte OpenSSL-Bibliothek in unterschiedlichen Paketen. Dies hat den Vorteil, dass jede Bibliothek nur einmal auf der Festplatte landet und die Paketverwaltung sie nur an einer Stelle aktualisieren muss.
Die Repositories führen allerdings nur einen Teil der für Linux verfügbaren Programme und Bibliotheken, die jeweils nur in einer bestimmten Version vorliegen. Benötigen Anwender eine Software, die im Repository fehlt, müssen sie sie an der Paketverwaltung vorbei installieren. Setzt das Programm weitere Bibliotheken voraus, verheddert man sich als Administrator schnell in den zahlreichen Abhängigkeiten zwischen den einzelnen Paketen. Verlangt das Programm die Bibliotheken sogar in ganz bestimmten Versionen, bleibt oft nur der Ausweg, sie von Hand zu übersetzen und zukünftig selbst auf dem aktuellen Stand zu halten.
Mit etwas Glück stellt der Entwickler die Software als fertiges Paket bereit. Das lässt sich jedoch immer nur auf der Distribution einspielen, für die es der Entwickler geschnürt hat. So funktioniert ein Paket für Debian 8 nicht unbedingt auch unter Debian 9. Ein weiteres Problem sind die zueinander inkompatiblen Paketformate, wenngleich bei den großen Distributionen mittlerweile nur noch Dpkg und RPM eine Rolle spielen.
Außerdem dürfen sich laufende Programme recht weit im Dateisystem umsehen. Selbst wenn die Anwendung mit eingeschränkten Rechten läuft, kann sie in der Regel einen Blick in "/usr", "/tmp" und viele weitere Verzeichnisse werfen. Erhält ein Angreifer über eine Sicherheitslücke Root-Rechte, kann das ferngesteuerte Programm sogar das komplette System umpflügen.
Die genannten Nachteile versuchen gleich mehrere Projekte mit einem runderneuerten Paketmanagementsystem zu eliminieren. Ubuntu-Entwickler Canonical wirft dabei sein selbstentwickeltes Snap-Format in den Ring [1]: Wie beim herkömmlichen Paketmanagement kommen die Anwendungen in kompakten Paketen auf den Rechner. Diese sogenannten Snaps enthalten jedoch neben der eigentlichen Anwendung auch alle zur Ausführung benötigten Komponenten. Das Snap mit dem Webserver bringt folglich auch die von ihm benötigte OpenSSL-Bibliothek in der passenden Version mit. Die in den Snaps ausgelieferten Anwendungen laufen daher auf jeder Linux-Distribution, die Snaps unterstützt. Entwickler müssen folglich nur noch ein einziges Snap-Paket bauen und bereitstellen. Letzteres geschieht entweder über die Homepage des Entwicklers oder ein zentrales Repository, das in der Snap-Welt Store heißt. Da sich Snaps und die Pakete der Distribution nicht in die Quere kommen, dürfen sie Anwender und Administratoren parallel nutzen.
Snappy stammt vom Smartphone
Das Snap-Format geht auf Canonicals Versuch zurück, Ubuntu auf Smartphones zu etablieren. Für diesen Einsatzzweck entwickelte das Unternehmen zunächst das Click-Format. Einige der dort verwendeten Konzepte übernahm Canonical dann in die neue Paketverwaltung Snappy. Sie sollte insbesondere auch auf Geräten für das Internet of Things (IoT) zum Einsatz kommen. Canonical schuf dafür eigens die Ubuntu-Variante "Snappy Ubuntu Core", die aus einem minimalen Ubuntu-System bestand und die Paketverwaltung komplett Snappy überließ. Aus Snappy gingen dann wiederum die heute aktuellen Snaps hervor. Offiziell ist der Begriff "Snappy" mittlerweile verschwunden, die IoT-Distribution heißt nur noch "Ubuntu Core". Dennoch stolpert man im Internet gelegentlich über den Begriff "Snappy".
Die Anwendung in einem Snap läuft immer in einer Sandbox, in der nur die unbedingt nötigen Ressourcen bereitstehen. Insbesondere sieht das Programm nur einige ausgewählte Verzeichnisse, von denen gerade einmal vier Stück den Schreibzugriff erlauben. Darüber hinaus schottet die Sandbox die Anwendung von allen anderen Prozessen ab. Ein Amok laufender Prozess kann somit nicht das System beeinträchtigen.
Unter Ubuntu ist seit der Version 16.04 die Snap-Paketverwaltung vorinstalliert – das gilt insbesondere auch für die Server-Ausgaben. Bei der IoT-Variante Ubuntu Core für Kleinst- und Embedded-Geräte ist Snap sogar die einzig vorhandene Paketverwaltung. Da die Snap-Werkzeuge einer Open-Source-Lizenz unterstehen, lassen sie sich auch auf vielen anderen Distributionen nachrüsten. Bei aktuellen Debian- und Linux-Mint-Systemen genügt etwa »sudo apt install snapd
«
, bei Fedora spielt ab Version 25 ein »sudo dnf install snapd
«
die notwendigen Tools ein. Installationsanleitungen für weitere Distributionen finden sich unter [2].