Denne artikel viser de vigtigste forskelle mellem disse tre emballeringsformater set fra slutbrugernes perspektiv. Forskelle i emballagearkitektur og let emballering set fra udvikleres synspunkt vil ikke blive dækket her.
Tabellen nedenfor opsummerer de vigtigste forskelle mellem Snap, Flatpak og AppImage-filformater. De fleste af dem forklarer sig selv, andre punkter er blevet forklaret under sammenligningstabellen.
Snap | Flatpak | AppImage | |
Android-lignende tilladelseskontrol skifter (GUI og CLI) | Ja | Ja | Ingen |
Sandboxing Support | Ja | Ja | Ja |
Sandboxing obligatorisk | Ja | Ja | Ingen |
Native Theme Support | Ja (med forbehold) | Ja (med forbehold) | Ja (med forbehold) |
Støtte til medfølgende biblioteker | Ja | Ja | Ja |
Appportabilitet | Ja (med forbehold) | Ja (med forbehold) | Ja |
Fuldt indeholdt enkelt eksekverbar support (svarende til .exe-filer i Windows) | Ingen | Ingen | Ja |
Online App Store | Ja | Ja | Ja |
Plugins til Desktop App Store-software | Ja | Ja | Ingen |
Multi-version Parallel Apps Support | Ja | Ja | Ja |
Automatiske opdateringer | Ja | Ja | Ja (med forbehold) |
Chrome OS Support (gennem Crostini-containere) | Ja | Ja | Ja |
Appstørrelse | Varierer, men højere end AppImage | Varierer, men højere end AppImage | Laveste |
Antal tilgængelige apps i App Store | Højeste | Laveste | Et eller andet sted imellem |
Tilladelseskontrol for brugere
Snap giver både grafiske og kommandolinjegrænseflader til brugerstyrede tilladelser. Du kan bruge den forudinstallerede "Ubuntu Software" -app til at administrere tilladelser til en snap-app.
For at se tilladelser for en snap-app ved hjælp af kommandolinjegrænsefladen skal du køre kommandoen nedenfor:
$ snapforbindelser kromUdskift "krom" med navnet på din snap-app.
For at se en liste over alle installerede snap-apps skal du køre kommandoen nedenfor:
$ snaplisteBrug kommandoen nedenfor for at give kameraet tilladelse til chrom snap
$ snap connect chrom: kameraFor at tilbagekalde kameratilladelsen skal du køre kommandoen nedenfor:
$ snap afbryd chrom: kameraPassende kommandoer til tilladelsesadministration kan findes i kolonnen "Plug" (vist i skærmbilledet ovenfor).
Flatpak giver også en grænseflade til tildeling og tilbagekaldelse af tilladelser. Du kan bruge GNOME Software-appen (kræver GNOME 3.32.x) til at administrere tilladelser ved hjælp af en grafisk metode. For at se tilladelser til en flatpak-app skal du køre kommandoen nedenfor:
$ flatpak info - show-permissions org.kde.Platform
Udskift “org.kde.Platform ”med navnet på din Flatpak-app.
For at se en liste over alle flatpak-apps, der er installeret på dit system, skal du køre kommandoen nedenfor:
$ flatpak listeFor at ændre tilladelserne til en flatpak-app skal du ændre værdierne for variabler, der er vist i skærmbilledet ovenfor. For eksempel vil kommandoen nedenfor gøre hele filsystemet tilgængeligt for en flappak-app:
$ sudo flatpak tilsidesættelse af organisation.kde.Platform --filsystem = værtAppImage understøtter ikke detaljerede tilladelseskontrol fra nu af, men udviklere har antydet, at tilladelseskontrol i Android-stil muligvis vil blive implementeret i fremtiden.
Sandboxing
Snap, Flatpak og AppImage understøtter sandboxede app-miljøer ud af kassen. En sandkasse er et miljø (eller container / filsystem / arkiv), der er helt isoleret og fjernt fra værtssystemet. Enhver interaktion med værtssystemet udføres ved hjælp af begrænset API og tilladelseskontrol. Nogle af disse tilladelser kræver eksplicit opt-in af brugere eller kan deaktiveres fuldstændigt af slutbrugere. En app med sandkasse er sikker end nogen anden app, der har fuld adgang til værtssystemet. Alle Android-apps kører i en sandkasse, og disse tre emballeringsformater fungerer på en lignende idé.
Native Theme Support
Alle tre emballeringsformater understøtter oprindeligt udseende og følelse af GTK- og Qt-apps, omend med nogle begrænsninger. For eksempel kræver Snap og Flatpak, at systemtemaer pakkes i deres respektive formater. Hvis du bruger tredjeparts temaer og ikonpakker, får du muligvis ikke korrekte tema-, markør- og appikoner. Integrationen har forbedret overarbejde, men de mangler lidt i sammenligning med apps installeret fra den officielle pakkehåndtering af en distribution.
Appportabilitet
En AppImage-app er en enkelt eksekverbar fil (svarende til Windows ' .exe-filer). Du kan nemt dele det mellem systemer eller uploade til skyen. Snap- og Flatpak-apps kan gøres bærbare ved at inkludere selve appen samt børneregistre, som appen er afhængig af. Processen er dog ikke så let som AppImage og kræver brug af flere kommandoer for at opnå de samme resultater.
Automatiske opdateringer
Snap- og Flatpak-apps installeres fra centraliserede applikationsopbevaringssteder, og apps kan automatisk opdateres uden brugerindblanding. AppImage mangler en robust automatisk opdateringsmekanisme. Brugere skal manuelt downloade ny AppImage-binær og erstatte eksisterende for at installere opdateringer. AppImage app-vedligeholdere inkluderer undertiden deres egen opdateringsmekanisme, der regelmæssigt kontrollerer tilgængeligheden af opdateringer på deres servere eller kræver brugerindgriben. For nylig leverede AppImage-udviklere et værktøj til at opdatere eksisterende binære filer ved at levere deltaopdateringer. Det kræver dog stadig at downloade opdateringsværktøjet og bruge det manuelt med en eksisterende AppImage-binær. Der er endnu ingen håndfri opdateringsmekanisme til rådighed for AppImage.
Appstørrelse
AppImage har den laveste appstørrelse, sandsynligvis fordi den serverer binære filer i komprimeret format. Snap- og Flatpak-appstørrelser varierer meget fra app til app, og det er svært at fastslå, hvilket giver lavere installationsstørrelse. Bare til reference var Inkscape AppImage i skrivende stund omkring 98 MB, Snap var omkring 183 MB og Flatpak var omkring 109 MB.
Konklusion
Universal-app-pakker er en win-win-situation for både udviklere og slutbrugere. Disse emballeringsformater tillader meget hurtigere levering af sikre apps. De åbner også døre for udviklere, der har været væk fra Linux på grund af forskellige emballagestandarder brugt i forskellige distributioner. Der er nogle problemer, der skal stryges ud i disse tre emballeringsformater. De er imidlertid alle under aktiv udvikling, og disse problemer vil blive løst overarbejde. Universelle krydsdistributionspakker er fremtiden, og deres vedtagelse vil stige. Langsomt men støt kan distributioner flytte til Snap-, Flatpak- eller AppImage-builds i fremtiden undtagen kernebiblioteker og vigtige pakker, der er nødvendige for, at operativsystemet fungerer.