Den här artikeln kommer att lista de viktigaste skillnaderna mellan dessa tre förpackningsformat ur slutanvändarnas perspektiv. Skillnader i förpackningsarkitektur och enkel förpackning ur utvecklares synvinkel kommer inte att behandlas här.
Tabellen nedan sammanfattar de viktigaste skillnaderna mellan Snap, Flatpak och AppImage-filformat. De flesta av dem är självförklarande, andra punkter har förklarats under jämförelsetabellen.
Knäppa | Flatpak | AppImage | |
Android Like Permission Controls växlar (GUI och CLI) | Ja | Ja | Nej |
Sandboxstöd | Ja | Ja | Ja |
Sandlåda obligatoriskt | Ja | Ja | Nej |
Native Theme Support | Ja (med försiktighetsåtgärder) | Ja (med försiktighetsåtgärder) | Ja (med försiktighetsåtgärder) |
Stöd för buntade bibliotek | Ja | Ja | Ja |
Appportabilitet | Ja (med försiktighetsåtgärder) | Ja (med försiktighetsåtgärder) | Ja |
Fullt innehållt enda körbart stöd (liknar .exe-filer i Windows) | Nej | Nej | Ja |
Online App Store | Ja | Ja | Ja |
Plugins för Desktop App Store-programvara | Ja | Ja | Nej |
Multi-version Parallel Apps Support | Ja | Ja | Ja |
Automatiska uppdateringar | Ja | Ja | Ja (med försiktighetsåtgärder) |
Chrome OS Support (genom Crostini-behållare) | Ja | Ja | Ja |
Appstorlek | Varierar men högre än AppImage | Varierar men högre än AppImage | Lägst |
Antal tillgängliga appar i App Store | Högsta | Lägst | Någonstans mitt emellan |
Behörighetskontroller för användare
Snap ger både grafiska och kommandoradsgränssnitt för användarkontrollerade behörigheter. Du kan använda den förinstallerade appen "Ubuntu Software" för att hantera behörigheter för en snap-app.
För att se behörigheter för en snap-app med kommandoradsgränssnittet, kör kommandot nedan:
$ snap-anslutningar kromByt ut "krom" med namnet på din snap-app.
För att se en lista över alla installerade snap-appar, kör kommandot nedan:
$ snap-listaFör att bevilja kameratillstånd till krom snap, använd kommandot nedan:
$ snap connect krom: kameraFör att återkalla kameratillståndet kör du kommandot nedan:
$ snap koppla bort krom: kameraLämpliga kommandon för behörighetshantering finns i kolumnen "Plug" (visas i skärmdumpen ovan).
Flatpak tillhandahåller också ett gränssnitt för beviljande och återkallande av behörigheter. Du kan använda programvaran GNOME (kräver GNOME 3.32.x) för att hantera behörigheter med en grafisk metod. För att se behörigheter för en flatpak-app, kör kommandot nedan:
$ flatpak info --show-permissions org.kde.Plattform
Ersätt “org.kde.Platform ”med namnet på din Flatpak-app.
För att se en lista över alla flatpak-appar som är installerade på ditt system, kör du kommandot nedan:
$ flatpak-listaFör att ändra behörigheterna för en flatpak-app måste du ändra värdena på variabler som visas i skärmdumpen ovan. Till exempel kommer kommandot nedan att göra hela filsystemet tillgängligt för en flappak-app:
$ sudo flatpak åsidosättande organisation.kde.Plattform --filsystem = värdAppImage stöder inte detaljerade behörighetskontroller för närvarande, men utvecklare har antytt att behörighetskontroller för Android-stil kan implementeras i framtiden.
Sandlåda
Snap, Flatpak och AppImage stöder sandlådade appmiljöer ur lådan. En sandlåda är en miljö (eller behållare / filsystem / arkiv) som är helt isolerad och avskild från värdsystemet. Varje interaktion med värdsystemet görs med begränsade API- och behörighetskontroller. Vissa av dessa behörigheter kräver uttryckligen opt-in av användare eller kan inaktiveras helt av slutanvändare. En sandbox-app är säker än någon annan app som har full åtkomst till värdsystemet. Alla Android-appar körs i en sandlåda och dessa tre förpackningsformat fungerar på liknande idé.
Native Theme Support
Alla tre förpackningsformaten stöder inbyggt utseende och känsla för GTK- och Qt-appar, om än med vissa begränsningar. Till exempel kräver Snap och Flatpak att systemteman ska förpackas i sina respektive format. Om du använder tredjeparts teman och ikonpaket kanske du inte får rätt tema-, markör- och appikoner. Integrationen har förbättrat övertid men de blir något korta jämfört med appar installerade från den officiella pakethanteraren för en distribution.
Appportabilitet
En AppImage-app är en enda körbar fil (som liknar Windows .exe-filer). Du kan enkelt dela det mellan system eller ladda upp till molnet. Snap- och Flatpak-appar kan göras bärbara genom att inkludera själva appen samt barnförvar som appen är beroende av. Processen är dock inte lika lätt som AppImage och kräver att du använder flera kommandon för att uppnå samma resultat.
Automatiska uppdateringar
Snap- och Flatpak-appar installeras från centraliserade applikationsförvar och appar kan automatiskt uppdateras utan användarens ingripande. AppImage saknar en robust automatisk uppdateringsmekanism. Användare måste manuellt ladda ner nya AppImage-binära och ersätta befintliga för att installera uppdateringar. Appunderhållare av AppImage inkluderar ibland sin egen uppdateringsmekanism som regelbundet kontrollerar tillgänglighetsuppdateringar på sina servrar eller kräver användarintervention. Nyligen tillhandahöll AppImage-utvecklare ett verktyg för att uppdatera befintliga binärer genom att tillhandahålla delta-uppdateringar. Det kräver dock fortfarande nedladdning av uppdateringsverktyget och manuellt med det med en befintlig AppImage-binär. Det finns ingen hands-free uppdateringsmekanism tillgänglig för AppImage än.
Appstorlek
AppImage har lägsta fotstorlek för appstorlek, troligen för att den serverar binära filer i komprimerat format. Snap- och Flatpak-appstorlekar varierar kraftigt från app till app och det är svårt att fastställa vilken som ger lägre installationsstorlek. Bara för referens var Inkscape AppImage när denna artikel skrevs cirka 98 MB, Snap var cirka 183 MB och Flatpak cirka 109 MB.
Slutsats
Universella apppaket är en vinn-vinn-situation för både utvecklare och slutanvändare. Dessa förpackningsformat möjliggör mycket snabbare leverans av säkra appar. De öppnar också dörrar för utvecklare som har skämtts bort från Linux på grund av olika förpackningsstandarder som används i olika distributioner. Det finns några problem som måste strykas ut i dessa tre förpackningsformat. De är dock alla under aktiv utveckling och dessa frågor kommer att fixas övertid. Universella korsdistributionspaket är framtiden och antagandet kommer att öka. Långsamt men stadigt kan distributioner flyttas till Snap-, Flatpak- eller AppImage-byggnader i framtiden förutom kärnbibliotek och viktiga paket som behövs för att operativsystemet ska fungera.