Denne artikkelen vil liste opp de viktigste forskjellene mellom disse tre emballasjeformatene fra sluttbrukernes perspektiv. Forskjeller i emballasjearkitektur og enkel emballasje fra utvikleres synspunkt vil ikke bli dekket her.
Tabellen nedenfor oppsummerer de viktigste forskjellene mellom Snap, Flatpak og AppImage filformater. De fleste av dem forklarer seg selv, andre punkter er forklart under sammenligningstabellen.
Snap | Flatpak | AppImage | |
Android Like Permission Controls Toggles (GUI og CLI) | Ja | Ja | Nei |
Sandboxing-støtte | Ja | Ja | Ja |
Sandkasse obligatorisk | Ja | Ja | Nei |
Innfødt tema støtte | Ja (med forbehold) | Ja (med forbehold) | Ja (med forbehold) |
Støtte for medfølgende biblioteker | Ja | Ja | Ja |
Appportabilitet | Ja (med forbehold) | Ja (med forbehold) | Ja |
Fullt inneholdt enkel kjørbar støtte (ligner på .exe-filer i Windows) | Nei | Nei | Ja |
Online App Store | Ja | Ja | Ja |
Plugins for Desktop App Store-programvare | Ja | Ja | Nei |
Multi-versjon Parallel Apps Support | Ja | Ja | Ja |
Automatiske oppdateringer | Ja | Ja | Ja (med forbehold) |
Chrome OS-støtte (gjennom Crostini-containere) | Ja | Ja | Ja |
Appstørrelse | Varierer, men høyere enn AppImage | Varierer, men høyere enn AppImage | Lavest |
Antall apper tilgjengelig i App Store | Høyeste | Lavest | Et sted imellom |
Tillatelseskontroller for brukere
Snap gir både grafiske og kommandolinjegrensesnitt for brukerstyrte tillatelser. Du kan bruke den forhåndsinstallerte "Ubuntu Software" -appen til å administrere tillatelsene til en snap-app.
For å se tillatelser for en snap-app ved hjelp av kommandolinjegrensesnittet, kjør kommandoen nedenfor:
$ snap-tilkoblinger kromErstatt “krom” med navnet på snap-appen din.
For å se en liste over alle installerte snap-apper, kjør kommandoen nedenfor:
$ snap-listeFor å gi kamera tillatelse til krom snap, bruk kommandoen nedenfor:
$ snap connect chromium: kameraFor å tilbakekalle kameratillatelsen, kjør kommandoen nedenfor:
$ snap frakoble krom: kameraEgnede kommandoer for tillatelsesadministrasjon finner du i kolonnen "Plug" (vist i skjermbildet ovenfor).
Flatpak gir også et grensesnitt for å gi og tilbakekalle tillatelser. Du kan bruke GNOME Software-appen (krever GNOME 3.32.x) for å administrere tillatelser ved hjelp av en grafisk metode. For å se tillatelser for en flatpak-app, kjør kommandoen nedenfor:
$ flatpak info - show-permissions org.kde.Plattform
Erstatt “org.kde.Platform ”med navnet på Flatpak-appen din.
For å se en liste over alle flatpak-apper installert på systemet ditt, kjør kommandoen nedenfor:
$ flatpak-listeFor å endre tillatelsene til en flatpak-app, må du endre verdiene til variablene som vises i skjermbildet ovenfor. For eksempel vil kommandoen nedenfor gjøre hele filsystemet tilgjengelig for en flappak-app:
$ sudo flatpak overstyring org.kde.Plattform --filsystem = vertAppImage støtter ikke detaljerte tillatelseskontroller per nå, men utviklere har antydet at tillatelseskontroller for Android-stil kan implementeres i fremtiden.
Sandboksing
Snap, Flatpak og AppImage støtter sandkasserte appmiljøer ut av esken. En sandkasse er et miljø (eller container / filsystem / arkiv) som er helt isolert og fjernt fra vertssystemet. Enhver interaksjon med vertssystemet gjøres ved hjelp av begrensede API- og tillatelseskontroller. Noen av disse tillatelsene krever eksplisitt opt-in av brukere, eller kan deaktiveres helt av sluttbrukere. En sandkasseapp er sikker enn noen annen app som har full tilgang til vertssystemet. Alle Android-apper kjøres i en sandkasse, og disse tre emballasjeformatene fungerer på samme ide.
Innfødt tema støtte
Alle tre emballasjeformatene støtter naturlig utseende og følelse for GTK- og Qt-apper, om enn med noen begrensninger. For eksempel krever Snap og Flatpak at systemtemaer skal pakkes i sine respektive formater. Hvis du bruker tredjeparts temaer og ikonpakker, får du kanskje ikke riktige tema-, markør- og appikoner. Integrasjonen har forbedret overtid, men de kommer til kort i forhold til apper som er installert fra den offisielle pakkelederen for en distribusjon.
Appportabilitet
En AppImage-app er en enkelt kjørbar fil (ligner på Windows .exe-filer). Du kan enkelt dele den mellom systemer eller laste opp til skyen. Snap- og Flatpak-apper kan gjøres bærbare ved å inkludere selve appen, samt barneregistre som appen er avhengig av. Prosessen er imidlertid ikke like enkel som AppImage og krever bruk av flere kommandoer for å oppnå de samme resultatene.
Automatiske oppdateringer
Snap- og Flatpak-apper installeres fra sentraliserte applikasjonsregister, og apper kan oppdateres automatisk uten brukerinnblanding. AppImage mangler en robust automatisk oppdateringsmekanisme. Brukere må laste ned ny AppImage binær manuelt og erstatte eksisterende for å installere oppdateringer. App-vedlikeholdere av app inkluderer noen ganger sin egen oppdateringsmekanisme som med jevne mellomrom sjekker tilgjengeligheten av oppdateringer på serverne eller krever brukerintervensjon. Nylig ga AppImage-utviklere et verktøy for å oppdatere eksisterende binærfiler ved å tilby deltaoppdateringer. Imidlertid krever det fortsatt nedlasting av oppdateringsverktøyet og manuelt bruk av det med en eksisterende AppImage-binær. Det er ingen håndfri oppdateringsmekanisme tilgjengelig for AppImage ennå.
Appstørrelse
AppImage har den laveste appstørrelsen, sannsynligvis fordi den serverer binærfiler i komprimert format. Snap- og Flatpak-appstørrelser varierer veldig fra app til app, og det er vanskelig å fastslå hvilken som gir lavere installasjonsstørrelse. Bare for referanse var Inkscape AppImage i skrivende stund rundt 98 MB, Snap var rundt 183 MB og Flatpak var rundt 109 MB.
Konklusjon
Universelle apppakker er en vinn-vinn-situasjon for både utviklere og sluttbrukere. Disse emballasjeformatene tillater mye raskere levering av sikre apper. De åpner også dører for utviklere som har holdt seg unna Linux på grunn av forskjellige emballasjestandarder som brukes i forskjellige distribusjoner. Det er noen problemer som må strykes ut i disse tre emballasjeformatene. Imidlertid er de alle under aktiv utvikling, og disse problemene blir løst på overtid. Universelle kryssdistribusjonspakker er fremtiden og adopsjonen vil øke. Sakte, men jevnt, kan distribusjoner flytte til Snap, Flatpak eller AppImage builds i fremtiden, bortsett fra kjernebiblioteker og viktige pakker som er nødvendige for at operativsystemet skal fungere.