Snap è un pacchetto software e un sistema di distribuzione sviluppato da Canonical per i sistemi operativi che utilizzano il kernel Linux. I pacchetti, chiamati snaps , e lo strumento per usarli, snapd , girano su una gamma di distribuzioni Linux e consentire agli sviluppatori di software di distribuire le proprie applicazioni direttamente agli utenti. Gli snap sono applicazioni autonome che vengono eseguite in una sandbox con accesso moderato al sistema host. Snap è stato originariamente rilasciato per applicazioni cloud, ma in seguito è stato portato per funzionare con dispositivi Internet of Things e applicazioni desktop.
Lo Snap Store consente agli sviluppatori di pubblicare le proprie app direttamente per gli utenti. Con i tradizionali approcci di gestione dei pacchetti Linux come APT o YUM , le applicazioni vengono impacchettate e distribuite come parte del sistema operativo. Questo crea un ritardo tra lo sviluppo dell'applicazione e la sua distribuzione agli utenti finali. Al contrario, gli sviluppatori di app possono pubblicare le proprie app nello Snap Store e consegnarle direttamente agli utenti senza alcun intervento da parte dei gestori di distribuzione.
Tutte le app scaricate dallo Snap Store vengono sottoposte a un autotest, inclusa una scansione antimalware . Tuttavia, le app Snap non ricevono lo stesso livello di verifica del software nei normali archivi Ubuntu. In un caso, nel maggio 2018, è stato scoperto che due app dello stesso sviluppatore contenevano un miner di criptovaluta in esecuzione in background mentre l'app era in esecuzione. Quando è stato rilevato questo problema, Canonical ha rimosso le app dallo Snap Store e ha trasferito la proprietà degli Snap a una terza parte fidata che ha ripubblicato gli Snap senza la presenza del minatore. Sebbene Snap sandbox riduca l'impatto di un'applicazione dannosa, Canonical consiglia agli utenti di installare solo Snap da editori approvati dall'utente.
Poiché i pacchetti Snap Store sono gestiti dagli sviluppatori stessi, i gestori della distribuzione non possono garantire che i pacchetti soddisfino gli standard di qualità e vengano aggiornati in modo tempestivo. In un caso, Microsoft ha lasciato una versione obsoleta di Skype nel negozio Snapcraft per oltre un anno.
Mentre Snap Store di Canonical è attualmente l'unico negozio esistente per gli snap, lo stesso Snap può essere utilizzato senza un negozio. I pacchetti Snap possono essere ottenuti da qualsiasi fonte, incluso il sito Web di uno sviluppatore. Il dipendente di Red Hat Adam Williamson e il project manager di Linux Mint Clement Lefebre hanno criticato Canonical per aver tenuto chiuse alcune parti lato server dello Snap Store. Clement dice che questo crea un conflitto di interessi che mina la neutralità di Snap mentre Canonical sta sviluppando Ubuntu.
Gli snap sono pacchetti autonomi che vengono eseguiti su una gamma di distribuzioni Linux . Questo è diverso dai tradizionali approcci di gestione dei pacchetti Linux, che richiedono pacchetti su misura per ogni distribuzione Linux.
Il formato file snap è un singolo file system compresso che utilizza il formato SquashFS con estensione .snap. Questo file system contiene l'applicazione, le librerie da cui dipende e i metadati dichiarativi. Questi metadati vengono interpretati da snapd per configurare una sandbox sicura adatta al funzionamento dell'applicazione. Dopo l'installazione, lo snap viene montato dal sistema operativo host e decompresso al volo quando i file sono in uso. Sebbene ciò abbia il vantaggio che gli snap utilizzano meno spazio su disco, significa anche che alcune applicazioni di grandi dimensioni si avviano più lentamente.
Una differenza significativa tra Snap e altri formati di packaging Linux universali come Flatpak è che Snap supporta tutte le classi di applicazioni Linux come applicazioni desktop, strumenti server, applicazioni IoT e persino servizi di sistema, come lo stack del driver della stampante. Per garantire ciò, Snap si affida a systemd per funzionalità come l'esecuzione di servizi di sistema abilitati per socket in uno Snap. Ciò fa sì che Snap funzioni meglio solo su distribuzioni che possono adottare questo sistema di avvio .
Le applicazioni in uno Snap vengono eseguite in un contenitore con accesso limitato al sistema host. Utilizzando le interfacce , gli utenti possono concedere a un'applicazione un accesso moderato a funzionalità host aggiuntive, come la registrazione audio, l'accesso ai dispositivi USB e la registrazione video. Queste interfacce mediano le solite API Linux in modo che le applicazioni possano funzionare nella sandbox senza dover essere riscritte. Le app desktop possono anche utilizzare XDG Desktop Portals, un'API standard creata originariamente dal progetto Flatpak per consentire alle app desktop in modalità sandbox di accedere alle risorse host. Questi portali spesso offrono un'esperienza utente migliore rispetto alle API Linux native, in quanto richiedono all'utente il permesso di accedere a risorse come una webcam nel momento in cui l'applicazione le utilizza. Lo svantaggio è che le applicazioni e i toolkit devono essere riscritti per poter utilizzare queste nuove API.
Snap Sandbox supporta anche la condivisione di dati e socket Unix tra Snap. Questo è spesso usato per condividere librerie comuni e framework applicativi tra Snap al fine di ridurre le dimensioni degli Snap evitando la duplicazione.
La sandbox Snap si basa molto sul modulo di sicurezza AppArmor del kernel Linux . Poiché solo un "principale" Linux Security Module (LSM) può essere attivo alla volta, la sandbox Snap è molto meno sicura quando è abilitato un altro LSM principale. Pertanto, su distribuzioni come Fedora che abilitano SELinux per impostazione predefinita, la sandbox Snap è gravemente degradata. Sebbene Canonical stia collaborando con molti altri sviluppatori e aziende per consentire l'esecuzione simultanea di più LSM, questa soluzione non è ancora operativa.
Snap sandbox impedisce alle app desktop di accedere ai temi del sistema operativo host per evitare problemi di compatibilità. Affinché gli Snap utilizzino un tema, devono anche essere impacchettati in uno Snap separato. Molti temi popolari sono confezionati dagli sviluppatori di Snap, ma alcuni temi non sono ancora supportati e i temi insoliti devono essere installati manualmente. Se un tema non è disponibile come pacchetto Snap, gli utenti dovrebbero scegliere il miglior tema corrispondente disponibile. Sono in corso lavori per rendere più semplice per le terze parti raggruppare temi in uno Snap e installare automaticamente temi di sistema insoliti.
Più volte al giorno, snapd verifica la disponibilità di aggiornamenti per tutti gli Snap e li installa in background utilizzando un'operazione atomica. Gli aggiornamenti possono essere annullati e utilizzare la codifica delta per ridurre le dimensioni del download.
Gli editori possono pubblicare e aggiornare più versioni del loro software in parallelo utilizzando i canali . Ogni canale ha una traccia ( traccia ) e un rischio ( rischio ) specifici, che indicano il rilascio e la stabilità del software pubblicato su questo canale. Durante l'installazione di un'app, Snap viene impostato per impostazione predefinita sul canale latest/stable, che si aggiornerà automaticamente alle nuove versioni principali del software non appena saranno disponibili. Gli editori possono creare canali aggiuntivi per offrire agli utenti la flessibilità di sintonizzarsi su specifiche versioni principali del loro software. Ad esempio, si 2.0/stableconsentirebbe agli utenti di attenersi alla versione 2.0 del software e ottenere solo aggiornamenti minori senza il rischio di modifiche compatibili con le versioni precedenti. Quando l'editore rilascia una nuova versione principale in un nuovo canale, gli utenti possono aggiornare manualmente alla versione successiva ogni volta che lo desiderano.
Sebbene gli aggiornamenti automatici non possano essere disattivati, esistono molti modi per configurare gli aggiornamenti per soddisfare esigenze specifiche. L'utente può scegliere di rimanere su una specifica versione principale del software specificando il canale, può configurare l'intervallo di aggiornamento per avere il tempo di controllare manualmente gli aggiornamenti e può sospendere gli aggiornamenti fino a 60 giorni. Inoltre, gli aggiornamenti vengono disabilitati automaticamente anche su connessioni limitate. Anche con questi controlli, diversi utenti si sono lamentati della mancanza di un'opzione per disabilitare completamente gli aggiornamenti automatici.
Snapcraft è uno strumento per gli sviluppatori per impacchettare i loro programmi in formato Snap. Funziona su qualsiasi distribuzione Linux supportata da Snap, macOS e Microsoft Windows . Snapcraft costruisce i pacchetti in una macchina virtuale utilizzando Multipass, per garantire che il risultato di una build sia lo stesso indipendentemente dalla distribuzione o dal sistema operativo su cui è costruito. Snapcraft supporta un gran numero di strumenti di costruzione e linguaggi di programmazione come Go , Java , JavaScript , Python , C / C++ e Rust . Consente inoltre di importare i metadati dell'applicazione da più fonti come AppStream, git , script di shell e file setup.py.
Inizialmente, Snap supportava solo la distribuzione Ubuntu Core all-Snap, ma nel giugno 2016 è stato portato su un'ampia gamma di distribuzioni Linux per diventare un formato per i pacchetti Linux universali. Snap richiede una funzionalità (systemd), disponibile su Linux, alcuni altri sistemi simili a Unix non ne hanno una, quindi per esempio FreeBSD non ha Snap. Chrome OS non supporta Snap direttamente, solo tramite distribuzioni Linux installate che supportano Snap, come Gallium OS.
Un certo numero di distribuzioni Linux supportano Snap in modo nativo, come Ubuntu (e ad esempio Kubuntu), Manjaro , Zorin OS , KDE Neon, Solus e Li-fe. Snap è disponibile anche per molte altre distribuzioni come CentOS , Debian , Elementary OS , Fedora , GalliumOS, Kali Linux , Linux Mint , OpenEmbedded, Parrot Security OS, Pop! OS , Raspbian , Red Hat Enterprise Linux e openSUSE .
Un certo numero di società di sviluppo di software desktop pubblicano il proprio software nello Snap Store, tra cui Google , JetBrains , KDE , Microsoft (per le versioni Linux di .NET Core 3.1, Visual Studio Code, Skype e PowerShell), Mozilla e Spotify . Gli snap vengono utilizzati anche in ambienti Internet of Things , che vanno dai prodotti di consumo ai gateway di gestione dei dispositivi aziendali e alle reti di comunicazione satellitare . Infine, Snap è utilizzato anche dagli sviluppatori di applicazioni server come InfluxDB , Kata Containers, Nextcloud e Travis CI .
Nel 2019, Canonical ha deciso di aggiornare il browser Web Chromium nelle versioni future di Ubuntu da un pacchetto APT a uno Snap. Hanno spiegato che Snap ha reso molto più semplice supportare Chromium su tutte le versioni supportate di Ubuntu. Ciò ha permesso loro di concentrare le risorse di ingegneria su altre parti di Ubuntu. Come risultato di questa decisione, i derivati di Ubuntu come Linux Mint hanno dovuto scegliere tra mantenere la propria versione del pacchetto Chromium o passare alla versione snappata di Chromium gestita da Canonical. Clement Lefebre, fondatore e project manager di Linux Mint, ha menzionato questo come il motivo per cui Linux Mint 20 impedisce agli utenti di installare Snap. Poiché Snap è ancora disponibile nei repository di Linux Mint, gli utenti possono comunque installarlo dopo aver rimosso manualmente le restrizioni.
(fr) Questo articolo è parzialmente o interamente tratto dalla pagina di Wikipedia inglese intitolata " Snap (package manager) " ( vedi l'elenco degli autori ) .