Verpackung

Vergleich Snap vs Flatpak vs AppImage

Vergleich Snap vs Flatpak vs AppImage
Neue Paketformate wie Snap, Flatpak und AppImage bieten verteilungsunabhängige Pakete, die auf den meisten Linux-Distributionen funktionieren. Dies löst Verpackungsprobleme von App-Entwicklern, die ihre Apps auf mehreren Linux-Distributionen verteilen möchten. Jetzt können sie sich auf einen Build konzentrieren, der überall funktioniert, anstatt verschiedene Verpackungsstandards zu durchlaufen.

In diesem Artikel werden die Hauptunterschiede zwischen diesen drei Verpackungsformaten aus Sicht der Endverbraucher aufgelistet. Unterschiede in der Paketierungsarchitektur und der Einfachheit des Paketierens aus Entwicklersicht werden hier nicht behandelt.

Die folgende Tabelle fasst die Hauptunterschiede zwischen den Dateiformaten Snap, Flatpak und AppImage zusammen. Die meisten sind selbsterklärend, weitere Punkte wurden unter der Vergleichstabelle erklärt.

Snap Flatpak AppImage
Android-ähnliche Berechtigungskontrollen umschalten (GUI und CLI) Ja Ja Nein
Sandboxing-Unterstützung Ja Ja Ja
Sandboxing obligatorisch Ja Ja Nein
Native Theme-Unterstützung Ja (mit Einschränkungen) Ja (mit Einschränkungen) Ja (mit Einschränkungen)
Unterstützung für gebündelte Bibliotheken Ja Ja Ja
App-Portabilität Ja (mit Einschränkungen) Ja (mit Einschränkungen) Ja
Vollständig enthaltener Support für einzelne ausführbare Dateien (ähnlich wie .exe-Dateien in Windows) Nein Nein Ja
Online-App-Store Ja Ja Ja
Plugins für Desktop App Store-Software Ja Ja Nein
Unterstützung für mehrere Versionen paralleler Apps Ja Ja Ja
Automatische Updates Ja Ja Ja (mit Einschränkungen)
Chrome OS-Unterstützung (über Crostini-Container) Ja Ja Ja
App-Größe Variiert, aber höher als AppImage Variiert, aber höher als AppImage Niedrigste
Anzahl der im App Store verfügbaren Apps Höchste Niedrigste Irgendwo dazwischen

Berechtigungskontrollen für Benutzer

Snap bietet sowohl grafische als auch Befehlszeilenschnittstellen für benutzergesteuerte Berechtigungen. Sie können die vorinstallierte App „Ubuntu Software“ verwenden, um die Berechtigungen einer Snap-App zu verwalten.

Führen Sie den folgenden Befehl aus, um die Berechtigungen einer Snap-App über die Befehlszeilenschnittstelle anzuzeigen:

$ Schnappverbindungen Chrom

Ersetze „chromium“ durch den Namen deiner Snap-App.

Führen Sie den folgenden Befehl aus, um eine Liste aller installierten Snap-Apps anzuzeigen:

$ Snap-Liste

Um der Kamera die Berechtigung für den Chrom-Snap zu erteilen, verwenden Sie den folgenden Befehl:

$ Snap Connect Chrom: Kameracam

Führen Sie den folgenden Befehl aus, um die Kameraberechtigung zu widerrufen:

$ snap trennen chrom:kamera

Entsprechende Befehle zur Rechteverwaltung finden Sie in der Spalte „Plug“ (siehe Screenshot oben).

Flatpak bietet auch eine Schnittstelle zum Erteilen und Widerrufen von Berechtigungen. Sie können die GNOME-Software-App verwenden (erfordert GNOME 3.32.x) um Berechtigungen mit einer grafischen Methode zu verwalten. Führen Sie den folgenden Befehl aus, um die Berechtigungen einer Flatpak-App anzuzeigen:

$ flatpak info --show-permissions org.kde.Plattform

„org“ ersetzen.kde.Plattform“ mit dem Namen Ihrer Flatpak-App.

Um eine Liste aller auf Ihrem System installierten Flatpak-Apps anzuzeigen, führen Sie den folgenden Befehl aus:

$ Flatpak-Liste

Um die Berechtigungen einer Flatpak-App zu ändern, müssen Sie die Werte der im obigen Screenshot gezeigten Variablen ändern. Der folgende Befehl macht beispielsweise das gesamte Dateisystem für eine Flappak-App verfügbar:

$ sudo flatpak überschreiben org.kde.Plattform --filesystem=host

AppImage unterstützt derzeit keine granularen Berechtigungssteuerungen, aber Entwickler haben angedeutet, dass in Zukunft Berechtigungssteuerungen im Android-Stil implementiert werden könnten.

Sandboxen

Snap, Flatpak und AppImage unterstützen sofort einsatzbereite Sandbox-App-Umgebungen. Eine Sandbox ist eine Umgebung (oder ein Container / Dateisystem / Archiv), die vollständig isoliert und vom Hostsystem getrennt ist. Jede Interaktion mit dem Hostsystem erfolgt über eingeschränkte API- und Berechtigungskontrollen. Einige dieser Berechtigungen erfordern ausdrücklich die Zustimmung der Benutzer oder können von Endbenutzern vollständig deaktiviert werden. Eine Sandbox-App ist sicherer als jede andere App, die vollen Zugriff auf das Hostsystem hat. Alle Android-Apps laufen in einer Sandbox und diese drei Verpackungsformate funktionieren nach einer ähnlichen Idee.

Native Theme-Unterstützung

Alle drei Verpackungsformate unterstützen das native Erscheinungsbild für GTK- und Qt-Apps, wenn auch mit einigen Einschränkungen. Snap und Flatpak erfordern beispielsweise, dass Systemthemen in ihren jeweiligen Formaten verpackt werden. Wenn Sie Themen- und Symbolpakete von Drittanbietern verwenden, erhalten Sie möglicherweise nicht die richtigen Themen-, Cursor- und App-Symbole. Die Integration hat sich im Laufe der Zeit verbessert, ist jedoch im Vergleich zu Apps, die vom offiziellen Paketmanager einer Distribution installiert wurden, etwas zu kurz gekommen.

App-Portabilität

Eine AppImage-App ist eine einzelne ausführbare Datei (ähnlich wie bei Windows .exe-Dateien). Sie können es einfach zwischen Systemen teilen oder in die Cloud hochladen upload. Snap- und Flatpak-Apps können portabel gemacht werden, indem die App selbst sowie untergeordnete Repositorys eingeschlossen werden, von denen die App abhängt. Der Vorgang ist jedoch nicht so einfach wie bei AppImage und erfordert die Verwendung mehrerer Befehle, um die gleichen Ergebnisse zu erzielen.

Automatische Updates

Snap- und Flatpak-Apps werden aus zentralen Anwendungs-Repositorys installiert und Apps können automatisch ohne Benutzereingriff aktualisiert werden. AppImage fehlt ein robuster automatischer Update-Mechanismus. Benutzer müssen die neue AppImage-Binärdatei manuell herunterladen und die vorhandene ersetzen, um Updates zu installieren. AppImage-App-Maintainer verfügen manchmal über einen eigenen Update-Mechanismus, der regelmäßig die Verfügbarkeit von Updates auf ihren Servern überprüft oder ein Eingreifen des Benutzers erfordert. Vor kurzem haben AppImage-Entwickler ein Tool zum Aktualisieren vorhandener Binärdateien bereitgestellt, indem Delta-Updates bereitgestellt werden. Es muss jedoch weiterhin das Update-Tool heruntergeladen und manuell mit einer vorhandenen AppImage-Binärdatei verwendet werden. Für AppImage ist noch kein freihändiger Update-Mechanismus verfügbar.

App-Größe

AppImage hat den geringsten App-Größen-Footprint, wahrscheinlich weil es Binärdateien im komprimierten Format bereitstellt serves. Die Größen der Snap- und Flatpak-Apps variieren stark von App zu App und es ist schwierig festzustellen, welche eine geringere Installationsgröße bietet. Nur als Referenz, Inkscape AppImage war zum Zeitpunkt des Schreibens dieses Artikels etwa 98 MB groß, Snap etwa 183 MB und Flatpak etwa 109 MB.

Fazit

Universelle App-Pakete sind eine Win-Win-Situation für Entwickler und Endbenutzer. Diese Verpackungsformate ermöglichen eine viel schnellere Bereitstellung sicherer Apps. Sie öffnen auch Türen für Entwickler, die wegen unterschiedlicher Paketierungsstandards in verschiedenen Distributionen vor Linux zurückschrecken. Bei diesen drei Verpackungsformaten müssen einige Probleme behoben werden. Sie alle befinden sich jedoch in aktiver Entwicklung und diese Probleme werden mit der Zeit behoben. Universelle Cross-Distribution-Pakete sind die Zukunft und ihre Akzeptanz wird zunehmen. Langsam, aber stetig können Distributionen in Zukunft auf Snap-, Flatpak- oder AppImage-Builds umgestellt werden, mit Ausnahme von Kernbibliotheken und wesentlichen Paketen, die für das Funktionieren des Betriebssystems erforderlich sind.

Top 5 Karten zur Spielaufnahme
Wir alle haben Streaming-Gameplays auf YouTube gesehen und geliebt. PewDiePie, Jakesepticye und Markiplier sind nur einige der Top-Gamer, die Millione...
So entwickeln Sie ein Spiel unter Linux
Vor einem Jahrzehnt hätten nicht viele Linux-Benutzer vorhergesagt, dass ihr Lieblingsbetriebssystem eines Tages eine beliebte Spieleplattform für kom...
Open-Source-Ports kommerzieller Spiele-Engines
Kostenlose, quelloffene und plattformübergreifende Spiel-Engine-Nachbildungen können verwendet werden, um sowohl alte als auch einige der relativ neue...