verpakking

Vergelijking Snap vs Flatpak vs AppImage

Vergelijking Snap vs Flatpak vs AppImage
Nieuwe verpakkingsformaten zoals Snap, Flatpak en AppImage bieden distributie-onafhankelijke pakketten die werken op de meeste Linux-distributies. Dit lost verpakkingsproblemen op waarmee app-ontwikkelaars worden geconfronteerd die hun apps op meerdere Linux-distributies willen distribueren. Nu kunnen ze zich concentreren op één build die overal werkt in plaats van verschillende verpakkingsnormen te doorlopen.

Dit artikel somt de belangrijkste verschillen op tussen deze drie verpakkingsformaten vanuit het perspectief van de eindgebruiker. Verschillen in verpakkingsarchitectuur en verpakkingsgemak vanuit het oogpunt van ontwikkelaars worden hier niet behandeld.

De onderstaande tabel geeft een overzicht van de belangrijkste verschillen tussen de bestandsindelingen Snap, Flatpak en AppImage. De meeste spreken voor zich, andere punten zijn uitgelegd onder de vergelijkingstabel.

Snap Flatpak AppImage
Android Like Permission Controls schakelt (GUI en CLI) Ja Ja Nee
Ondersteuning voor sandboxen Ja Ja Ja
Sandboxen Verplicht Ja Ja Nee
Ondersteuning voor native thema's Ja (met kanttekeningen) Ja (met kanttekeningen) Ja (met kanttekeningen)
Ondersteuning voor gebundelde bibliotheken Ja Ja Ja
App-draagbaarheid Ja (met kanttekeningen) Ja (met kanttekeningen) Ja
Volledig opgenomen ondersteuning voor één uitvoerbaar bestand (vergelijkbaar met .exe-bestanden in Windows) Nee Nee Ja
Online App Store Ja Ja Ja
Plug-ins voor Desktop App Store-software Ja Ja Nee
Ondersteuning voor parallelle apps met meerdere versies Ja Ja Ja
Automatische updates Ja Ja Ja (met kanttekeningen)
Chrome OS-ondersteuning (via Crostini-containers) Ja Ja Ja
App-grootte Varieert maar hoger dan AppImage Varieert maar hoger dan AppImage Laagste
Aantal apps beschikbaar in de App Store hoogste laagste Ergens tussenin

Machtigingscontroles voor gebruikers

Snap biedt zowel grafische als opdrachtregelinterfaces voor door de gebruiker gecontroleerde machtigingen. U kunt de vooraf geïnstalleerde app "Ubuntu Software" gebruiken om de machtigingen van een app in een handomdraai te beheren.

Voer de onderstaande opdracht uit om machtigingen van een snap-app te zien met behulp van de opdrachtregelinterface:

$ klikverbindingen chroom

Vervang "chromium" door de naam van uw snap-app.

Voer de onderstaande opdracht uit om een ​​lijst met alle geïnstalleerde snap-apps te zien:

$ snap lijst

Gebruik de onderstaande opdracht om cameratoestemming te verlenen voor chromium snap:

$ snap verbinding chroom:camera

Voer de onderstaande opdracht uit om de cameratoestemming in te trekken:

$ snap loskoppelen chroom:camera

Passende opdrachten voor toestemmingsbeheer zijn te vinden in de kolom "Plug" (getoond in de bovenstaande schermafbeelding).

Flatpak biedt ook een interface voor het verlenen en intrekken van machtigingen. U kunt de GNOME Software-app gebruiken (vereist GNOME 3.32.x) om machtigingen te beheren met behulp van een grafische methode. Voer de onderstaande opdracht uit om de machtigingen van een flatpak-app te zien:

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

Vervang "org".kde.Platform" met de naam van uw Flatpak-app.

Voer de onderstaande opdracht uit om een ​​lijst te bekijken van alle flatpak-apps die op uw systeem zijn geïnstalleerd:

$ flatpak lijst

Om de machtigingen van een flatpak-app te wijzigen, moet u de waarden van variabelen wijzigen die in de bovenstaande schermafbeelding worden getoond. De onderstaande opdracht maakt bijvoorbeeld het volledige bestandssysteem beschikbaar voor een flappak-app:

$ sudo flatpak overschrijven org.kde.Platform --bestandssysteem=host

AppImage ondersteunt op dit moment geen gedetailleerde machtigingsregelingen, maar ontwikkelaars hebben gesuggereerd dat machtigingsregelingen in Android-stijl in de toekomst kunnen worden geïmplementeerd.

Sandboxen

Snap, Flatpak en AppImage ondersteunen kant-en-klare sandbox-app-omgevingen. Een sandbox is een omgeving (of container/bestandssysteem/archief) die volledig geïsoleerd en afzijdig is van het hostsysteem. Elke interactie met het hostsysteem wordt gedaan met behulp van beperkte API- en toestemmingscontroles. Sommige van deze machtigingen vereisen expliciet opt-in door gebruikers of kunnen volledig worden uitgeschakeld door eindgebruikers. Een sandbox-app is veiliger dan elke andere app die volledige toegang heeft tot het hostsysteem. Alle Android-apps draaien in een sandbox en deze drie verpakkingsformaten werken op hetzelfde idee.

Ondersteuning voor native thema's

Alle drie de verpakkingsindelingen ondersteunen de native look en feel voor GTK- en Qt-apps, zij het met enkele beperkingen. Snap en Flatpak vereisen bijvoorbeeld dat systeemthema's in hun respectievelijke formaten worden verpakt. Als u thema's en pictogrammenpakketten van derden gebruikt, krijgt u mogelijk niet de juiste thema-, cursor- en app-pictogrammen. De integratie is in de loop van de tijd verbeterd, maar ze schieten enigszins tekort in vergelijking met apps die zijn geïnstalleerd vanuit de officiële pakketbeheerder van een distributie.

App-draagbaarheid

Een AppImage-app is een enkel uitvoerbaar bestand (vergelijkbaar met Windows' .exe-bestanden). U kunt het eenvoudig delen tussen systemen of uploaden naar de cloud. Snap- en Flatpak-apps kunnen draagbaar worden gemaakt door de app zelf op te nemen, evenals onderliggende opslagplaatsen waarvan de app afhankelijk is. Het proces is echter niet zo eenvoudig als AppImage en vereist het gebruik van meerdere opdrachten om dezelfde resultaten te bereiken.

Automatische updates

Snap- en Flatpak-apps worden geïnstalleerd vanuit gecentraliseerde applicatierepository's en apps kunnen automatisch worden bijgewerkt zonder tussenkomst van de gebruiker. AppImage mist een robuust automatisch updatemechanisme. Gebruikers moeten handmatig het nieuwe AppImage-binaire bestand downloaden en het bestaande vervangen om updates te installeren. AppImage-app-beheerders hebben soms hun eigen updatemechanisme dat periodiek de beschikbaarheid van updates op hun servers controleert of tussenkomst van de gebruiker vereist. Onlangs hebben AppImage-ontwikkelaars een tool geleverd om bestaande binaire bestanden bij te werken door middel van delta-updates. Het vereist echter nog steeds het downloaden van de updatetool en handmatig gebruiken met een bestaand AppImage-binair bestand. Er is nog geen handsfree updatemechanisme beschikbaar voor AppImage.

App-grootte

AppImage heeft de laagste voetafdruk van de app-grootte, waarschijnlijk omdat het binaire bestanden in gecomprimeerd formaat aanbiedt. De grootte van Snap- en Flatpak-apps varieert sterk van app tot app en het is moeilijk vast te stellen welke een kleinere installatiegrootte biedt. Ter referentie, Inkscape AppImage was op het moment van schrijven van dit artikel ongeveer 98 MB, Snap was ongeveer 183 MB en Flatpak was ongeveer 109 MB.

Conclusie

Universele app-pakketten zijn een win-winsituatie voor zowel ontwikkelaars als eindgebruikers. Deze verpakkingsformaten zorgen voor een veel snellere levering van veilige apps. Ze openen ook deuren voor ontwikkelaars die Linux uit de weg gaan vanwege verschillende verpakkingsstandaarden die in verschillende distributies worden gebruikt. Er zijn enkele problemen die moeten worden opgelost in deze drie verpakkingsformaten. Ze worden echter allemaal actief ontwikkeld en deze problemen zullen in de loop van de tijd worden opgelost. Universele cross-distributiepakketten zijn de toekomst en de acceptatie ervan zal toenemen. Langzaam maar gestaag kunnen distributies in de toekomst naar Snap-, Flatpak- of AppImage-builds worden verplaatst, met uitzondering van kernbibliotheken en essentiële pakketten die nodig zijn om het besturingssysteem te laten werken.

Emuleer muisklikken door te zweven met Clickless Mouse in Windows 10
Het gebruik van een muis of toetsenbord in de verkeerde houding of overmatig gebruik kan leiden tot veel gezondheidsproblemen, waaronder spanning, car...
Voeg muisbewegingen toe aan Windows 10 met deze gratis tools
In de afgelopen jaren zijn computers en besturingssystemen sterk geëvolueerd. Er was een tijd dat gebruikers opdrachten moesten gebruiken om door best...
Beheer en beheer muisbewegingen tussen meerdere monitoren in Windows 10
Muisbeheer voor twee schermen laat je muisbewegingen tussen meerdere monitoren controleren en configureren door de bewegingen nabij de grens te vertra...