Snap StoreEdit
Snap Store tillåter utvecklare att publicera sina program direkt till användarna. Med traditionella Linux – pakethanteringsmetoder som APT eller YUM packas och distribueras applikationerna som en del av operativsystemet. Detta skapar en fördröjning mellan applikationsutveckling och dess distribution för slutanvändare. Däremot kan applikationsutvecklare publicera sina applikationer i Snap Store och få dem direkt till användare utan något ingripande från distributionsansvariga.
alla appar som laddas upp till Snap Store genomgår automatisk testning, inklusive en malware-skanning. Snap-appar får dock inte samma verifieringsnivå som programvara i de vanliga Ubuntu-arkiven. I ett fall i maj 2018 befanns två applikationer av samma utvecklare innehålla en cryptocurrency miner som sprang i bakgrunden under applikationsexekvering. När det här problemet hittades tog Canonical bort applikationerna från Snap Store och överförde äganderätten till Snaps till en betrodd tredje part som publicerade Snaps igen utan att gruvarbetaren var närvarande. Även om Snap sandbox minskar effekten av en skadlig app rekommenderar Canonical att användare bara installerar Snaps från utgivare som användaren litar på.
eftersom paket i Snap Store underhålls av utvecklare själva kan distributionsansvariga inte garantera att paket uppfyller kvalitetsstandarder och uppdateras i rätt tid. I ett fall lämnade Microsoft en föråldrad version av Skype i Snapcraft-butiken i över ett år.
Även om Snap Store av Canonical för närvarande är den enda befintliga butiken för snaps, kan Snap själv användas utan en butik. Snap-paket kan erhållas från vilken källa som helst, inklusive en utvecklares webbplats. Red Hat anställd Adam Williamson och Linux Mint project lead Clement Lefebre har kritiserat Canonical för att hålla vissa serversidan delar av Snap Store stängd källa. Clement säger att detta skapar en intressekonflikt som skadar snaps neutralitet med tanke på att Canonical utvecklar Ubuntu.
Universal Linux packagesEdit
Snaps är fristående paket som fungerar över en rad Linux-distributioner. Detta är till skillnad från traditionella Linux – pakethanteringsmetoder, som kräver specifikt anpassade paket för varje Linux-distribution.
snap-filformatet är ett enda komprimerat filsystem som använder SquashFS-formatet med tillägget .snap
. Detta filsystem innehåller applikationen, bibliotek Det beror på och deklarativa metadata. Denna metadata tolkas av snapd för att skapa en lämpligt formad säker sandlåda för den applikationen. Efter installationen monteras snäppet av värdoperativsystemet och dekomprimeras i farten när filerna används. Även om detta har fördelen att snaps använder mindre diskutrymme, betyder det också att vissa stora applikationer börjar långsammare.
en signifikant skillnad mellan Snap och andra universella Linux-förpackningsformat som Flatpak är att Snap stöder alla typer av Linux-applikationer som stationära applikationer, serververktyg, IoT-appar och till och med systemtjänster som skrivardrivrutinstacken. För att säkerställa detta förlitar Snap sig på systemd för funktioner som att köra socket-aktiverade systemtjänster på ett ögonblick. Detta gör att Snap bara fungerar på distributioner som använder detta init-system.
konfigurerbar sandboxEdit
applikationer i en Snap körs i en behållare med begränsad åtkomst till värdsystemet. Med hjälp av gränssnitt kan användare ge en applikationsmedierad åtkomst till ytterligare funktioner hos värden som inspelning av ljud, åtkomst till USB-enheter och inspelning av video. Dessa gränssnitt förmedlar vanliga Linux-API: er så att applikationer kan fungera i sandlådan utan att behöva skrivas om. Skrivbordsprogram kan också använda xdg-Skrivbordsportalerna, ett standardiserat API som ursprungligen skapades av Flatpak-projektet för att ge sandboxade skrivbordsprogram tillgång till värdresurser. Dessa portaler ger ofta en bättre användarupplevelse jämfört med de ursprungliga Linux API: erna eftersom de uppmanar användaren om tillstånd till resurser som en webbkamera när applikationen använder dem. Nackdelen är att applikationer och verktygslådor måste skrivas om för att kunna använda dessa nyare API: er.
Snap sandbox stöder också delning av data och Unix-uttag mellan Snaps. Detta används ofta för att dela gemensamma bibliotek och applikationsramar mellan Snaps för att minska storleken på Snaps genom att undvika dubbelarbete.
Snap sandbox är starkt beroende av AppArmor Linux – säkerhetsmodulen från Linuxkärnan uppströms. Eftersom endast en ”stor” Linux-säkerhetsmodul (LSM) kan vara aktiv samtidigt är Snap sandbox mycket mindre säker när en annan stor LSM är aktiverad. Som ett resultat, på distributioner som Fedora som möjliggör SELinux som standard, är Snap sandbox kraftigt försämrad. Även om Canonical arbetar med många andra utvecklare och företag för att göra det möjligt för flera LSMs att köras samtidigt, är denna lösning fortfarande länge borta.
Snap sandbox förhindrar knäppta skrivbordsprogram från att komma åt teman i värdoperativsystemet för att förhindra kompatibilitetsproblem. För att Snaps ska kunna använda ett tema måste det också förpackas i en separat Snap. Många populära teman är förpackade av Snap utvecklare men vissa teman stöds inte ännu och ovanliga teman måste installeras manuellt. Om ett tema inte är tillgängligt som ett Snap-paket måste användarna välja det bästa matchande temat som finns tillgängligt. Arbetet pågår för att göra det lättare för tredje part att paketera teman på ett kick och att automatiskt installera ovanliga systemteman.
automatisk och atomic updatesEdit
flera gånger om dagen, snapd kontroller för tillgängliga uppdateringar av alla Snaps och installerar dem i bakgrunden med atomic operation. Uppdateringar kan återställas och använda delta-kodning för att minska deras nedladdningsstorlek.
utgivare kan släppa och uppdatera flera versioner av sin programvara parallellt med hjälp av kanaler. Varje kanal har ett specifikt spår och risk, vilket indikerar versionen och stabiliteten för programvaran som släppts på den kanalen. När du installerar ett program, Snap standard använderlatest/stable
kanal, som automatiskt uppdateras till nya stora versioner av programvaran när de blir tillgängliga. Utgivare kan skapa ytterligare kanaler för att ge användarna möjlighet att hålla sig till specifika stora utgåvor av sin programvara. Till exempel skulle en2.0/stable
kanal tillåta användare att hålla sig till 2.0-versionen av programvaran och bara få mindre uppdateringar utan risk för bakåtkompatibla förändringar. När utgivaren släpper en ny huvudversion i en ny kanal kan användarna manuellt uppdatera till nästa version när de väljer det.
även om automatiska uppdateringar inte kan stängas av finns det många sätt att konfigurera uppdateringar för att passa särskilda behov. Användaren kan välja att stanna kvar på en viss huvudversion av Programvaran genom att ange kanalen, de kan konfigurera uppdateringsintervallet för att få tid att manuellt kontrollera uppdateringar och de kan hålla uppdateringar i upp till 60 dagar. Dessutom inaktiveras uppdateringar automatiskt på uppmätta anslutningar. Även med dessa kontroller har ett antal användare uttryckt sina klagomål om bristen på ett alternativ att stänga av automatiska uppdateringar helt.
SnapcraftEdit
Canonical Ltd.
29 October 2015; 5 years ago
https://github.com/snapcore/snapcraft
Python
Linux, MacOS, Microsoft Windows
GPLv3
snapcraft.io
Snapcraft är ett verktyg för utvecklare att paketera sina program i Snap-format. Den körs på alla Linux-distributioner som stöds av Snap, macOS och Microsoft Windows. Snapcraft bygger paketen i en virtuell maskin med Multipass, för att säkerställa att resultatet av en byggnad är detsamma, oavsett vilken distribution eller operativsystem den bygger på. Snapcraft stöder ett stort antal byggverktyg och programmeringsspråk som Go, Java, JavaScript, Python, C/C++ och Rust. Det gör det också möjligt att importera program metadata från flera källor såsom AppStream, git, skalskript och setup.py
filer.