Was sind die Unterschiede zwischen Snaps, Appimage, Flatpak und anderen?

105

Ich habe diese Frage in letzter Zeit von Schülern erhalten, und obwohl ich eine Menge Informationen zu bieten habe, habe ich keine Quelle gefunden, aus der ich die Leute darauf hinweisen kann, wo sie eine Aktualisierungsantwort lesen können (ich habe eine Menge Fehlinformationen und veraltete Informationen gefunden) ). Einige der Fragen, die ich in Bezug auf Verpackungsformate wie Snap, Appimage, Flatpak und andere bei dieser Entwicklung universeller Verpackungssysteme habe, lauten:

  • Wer hat das Paketformat erstellt?
  • Welche Funktionen bietet es?
  • Welche Funktionen sind einzigartig? (Das haben die anderen noch nicht)
  • Wer unterstützt das?
  • Welche Distributionen verwenden es?
  • Welchen Schwerpunkt hat das Paket? (Für Desktop, Clouds, Mobile usw.)
  • Welche sind aktiver entwickelt?
Luis Alvarado
quelle

Antworten:

68

Hier ist ein langer tabellarischer Vergleich der Funktionen von AppImage vs. Snap vs. Flatpak. Es ist aus dem AppImage Wiki auf GitHub :

AppImage vs. Snap vs. Flatpack Vergleich

Kurt Pfeifle
quelle
43
Ich denke, es ist erwähnenswert, dass dieses Diagramm aus einer AppImage-Perspektive erstellt wird. Das heißt, der Standardfunktionssatz ist der Funktionssatz von AppImage, und die anderen werden mit den Funktionen verglichen. Das gibt AppImage eine voreingenommene Kante. Es ist auch etwas veraltet. Beispielsweise hat Snap in diesem Herbst Unterstützung für Themes hinzugefügt.
Dan
1
@Dan: Wenn du über Snaps Unterstützung informiert bist - warum bearbeitest du sie dann nicht einfach in der Tabelle? Wenn Sie weitere Funktionen von Snap und / oder Flatpak kennen, sollten Sie das Diagramm mit den entsprechenden Elementen im AppImage-Wiki ändern ...
Kurt Pfeifle
11
Ich bin mir nicht sicher, wie du das sagen kannst @Kurt. Schauen Sie sich als Beispiel den Abschnitt "Ziele" an. Es zeigt ausschließlich die Ziele von AppImage, als ob keines der anderen Projekte Ziele hätte. Als ob nur die Ziele von AppImage von Bedeutung wären.
Dan
5
Ich verstehe Ihren Standpunkt - ich könnte das Wiki bearbeiten. Ihre Antwort ist jedoch ein riesiges Bild, das vermutlich auf Dauer erhalten bleibt, selbst wenn sich das Wiki ändert. Ich denke, die Tendenz ist im Zusammenhang mit Ihrer Antwort für zukünftige Ask Ubuntu-Leser erwähnenswert.
Dan
2
@Dan: Ich habe die Antwort am 4. Juli bearbeitet, um eine aktualisierte Version des Screenshots von der Website einzufügen (genau, um einige Änderungen zu berücksichtigen, die mit dem Wiki geschehen sind). Wo liegt für Sie das Problem, das ursprüngliche Wiki zu bearbeiten, einen neuen Screenshot zu erstellen und dann eine Änderung dieser Antwort mit dem neuen Screenshot vorzuschlagen?
Kurt Pfeifle
51

Snaps wurden von Canonical für Ubuntu erstellt. Die Hauptvorteile von Druckknöpfen sind:

  • Unabhängigkeit von Abhängigkeiten - Alle Bibliotheken und Abhängigkeiten sind im Paket enthalten. Auf diese Weise können Sie auch mehrere Versionen desselben Programms erstellen.
  • Sandboxing - Snaps verwenden modifizierten AppArmor, um die Anwendungen zu sandboxen
  • Delta-Updates - Snaps sollten auch Delta-Updates ermöglichen

Der Hauptnachteil von Snaps ist, dass Software nur die in ihrem Paket enthaltenen Bibliotheken verwenden kann. Dies ist ein potenzielles Sicherheitsrisiko, da der Autor des Pakets alle Bibliotheken aktualisieren und aktualisieren muss.

Snaps können derzeit unter Ubuntu, Arch Linux, Fedora, Linux Mint, CentOS und Gentoo ausgeführt werden. Sie werden auch in Ubuntu Touch verwendet. Sie sind für Desktops, Server, Telefone, IoT und Router konzipiert.

Flatpak hat die gleichen Vorteile wie Druckknöpfe . Für das Sandboxing werden jedoch Namespaces anstelle von AppArmour verwendet. Der Hauptunterschied besteht darin, dass Flatpaks sowohl im Paket enthaltene Bibliotheken als auch gemeinsam genutzte Bibliotheken eines anderen Flatpaks verwenden können.

Der Entwickler von Flatpak ist der Red Hat-Mitarbeiter Alexander Larsson. Flatpak-Software ist derzeit in Arch Linux, Debian, Fedora, Mageia, Solus und Ubuntu verfügbar. Es konzentriert sich nur auf Desktops.

AppImages werden von Simon Peter entwickelt. Wie in Snaps oder Flatpak enthält das Paket alle Bibliotheken, die zum Ausführen des Programms erforderlich sind. AppImage-Programme sind nicht mit einer Sandbox versehen und erfordern zum Ausführen keine Root-Rechte. Laut der Website des Projekts sollte AppImages unter Arch Linux, Centos, Debian, Fedora, OpenSUSE, Red Hat Linux und Ubuntu laufen.

Magma
quelle
3
Solus hat im Januar 2017
Anthon
8
Sie alle hätten nur auf Appimage bauen sollen. Anstatt die gleiche Ideologie neu zu erfinden und Fragmentierung und Verwirrung einzuführen. Beachten Sie außerdem, dass diese tragbaren Pakete, da sie alle Bibliotheken enthalten, erheblich umfangreicher sind als eine App, die gemeinsam genutzte Bibliotheken verwendet, die über apt oder .deb installiert wurden. Wenn Sie wissen müssen, welches populärer ist, schlägt flatpak gerade Druckknöpfe.
answerSeeker
Ich gehe davon aus, dass der Spectre-Angriff aus Sicherheitsgründen weniger Interesse an gemeinsam genutzten Bibliotheken hat. :-)
Chris
4
@answerSeeker: Ihr Kommentar zu den tragbaren Paketen, die "im Vergleich zu einer App, die über apt oder .deb installierte gemeinsam genutzte Bibliotheken verwendet, erheblich größer sind", wird nicht unbedingt durch die Tatsachen des wirklichen Lebens gestützt. AppImages und Snaps werden in SquashFS-Images komprimiert (gilt nicht für Flatpak). Sie werden niemals auf die Festplatte extrahiert, auch nicht zur Laufzeit. AppImages mounten sich beim Ausführen selbst auf einen temporär erstellten Mountpoint /tmp/.mount_<random-chars>und starten von dort - immer noch komprimiert! Siehe die Zahlen für das LibreOffice-Beispiel im Screenshot meiner Antwort unten ...
Kurt Pfeifle
1
@PabloBianchi: Neuere AppImages (der neueren 'Typ 2' - Variante) können einen eingebauten Aktualisierungsmechanismus haben. Dadurch wird ein binäres Delta-Diff vom ursprünglichen AppImage-Speicherort heruntergeladen, wobei Größe und Zeit des Downloads gespart werden, sobald eine neue Version verfügbar ist und nachdem der Benutzer angegeben hat, dass er dies wünscht. Die Tools appimageupdatetool(CLI) und AppImageUpdate-Qt(GUI) helfen dabei.
Kurt Pfeifle