In seguito a una precisa richiesta da parte di xan, un nostro lettore che ringraziamo, abbiamo preparato un confronto tra i package manager più utilizzati in ambito GNU/Linux: AppImage, Flatpak e Snapcraft. Questi nuovi formati di distribuzione, rispondono ad una duplice richiesta di semplificazione. Da parte dell’utenza, si vuole un processo di installazione più snello. Gli sviluppatori, invece, necessitano una modalità di distribuzione non appesantita dal dover creare build specifiche per ogni tipo di distribuzione.
Appimage, Snap e Flatpak
L’esponenziale aumento della varietà delle distribuzioni ha reso necessaria la creazione di modalità di distribuzione dei software indipendenti dalla piattaforma. AppImage è il sistema più semplice tra i tre che andiamo ad esaminare, e ricorda molto i file dmg presenti su MacOS.
- Il concetto base è quello di “un app, un file”. È in sostanza un’immagine compressa del programma, con estensione .appimage, comprensiva delle dipendenze e delle librerie richiamate nel codice;
- Non avvenendo nessuna reale installazione, non saranno necessari i privilegi di root per eseguire le app distribuite con questo formato. Si potrà, ad esempio, disinstallare un programma semplicemente eliminando il relativo file;
- Una delle criticità è legata agli aggiornamenti delle app. Deve essere infatti lo sviluppatore ad aver integrato un sistema di ricerca manuale o automatica degli stessi, altrimenti saremo costretti ad usare tool esterni come Update;
- Non è prevista, di default, l’esecuzione in ambiente isolato. Esiste però la compatibilità con strumenti come Firejail.
Snappy, la risposta di Canonical
Passando a Snapcraft, questo è un sistema di distribuzione software e gestione dei pacchetti, realizzato da Canonical. Originariamente progettato per Ubuntu Touch, attualmente è possibile utilizzarlo in un ampio range di distribuzioni.
- I programmi sono distribuiti come file compressi di tipo SquashFS. Tipicamente includono tutte le librerie e dipendenze. Per evitare file di dimensioni eccessivi, il framework di questo sistema è comprensivo di alcuni componenti di base, ovvero un set minimo di librerie comuni alla maggior parte delle app;
- Dal punto di vista della sicurezza, gli snap sono eseguiti di default in sandbox, usando una combinazione di diversi meccanismi tra cui AppArmor, SecComp e cgroups;
- Il punto di forza di snappy è sicuramente il demone di sistema snapd, che si occupa del mantenimento di tutte le snap app installate. La funzionalità degli aggiornamenti automatici (che non può essere disabilitata), è di tipo transazionale e completamente reversibile. È possibile poi effettuare delle istantanee dello stato corrente di configurazione di tutte le applicazioni in uso, sistema utile in caso di problemi;
- Esiste un’infrastruttura di sviluppo e distribuzione, che include lo strumento da riga di comando di Snapcraft e il servizio di creazione online;
- Gli snap sono progettati per funzionare con demoni server, infrastrutture cloud e dispositivi Internet of Things (IoT), oltre alle applicazioni desktop;
- È possibile effettuare la ricerca degli Snap tramite un apposito Snapcraft store closed source. Le app infatti, sono tutte hostate sui server di Canonical, e non esistono, allo stato attuale, meccanismi per utilizzare server di terze parti.
Riassumendo i principali vantaggi degli snap sono:
- Indipendenza: tutte le librerie e le dipendenze sono incluse nel pacchetto. Ciò consente anche di avere più versioni dello stesso programma;
- Sandboxing: gli snap utilizzano AppArmor modificato per eseguire il sandbox delle applicazioni.
Flatpak, la vera alternativa a Snapcraft
Flatpak, originariamente chiamato xfg-app, è un progetto finalizzato alla creazione di un formato di distribuzione portatile e funzionante in ogni distribuzione GNU/Linux. Orientato principalmente all’uso desktop, è supportato da una community indipendente ed anche da importanti aziende quali Red Hat. A differenza dei formati di cui abbiamo parlato in precedenza però, non includono tutto le dipendenze necessarie, utilizzando infatti un sistema di runtime.
- Le applicazioni vengono sottoposte a sandbox con Bubblewrap, che utilizza le funzionalità di sicurezza del kernel per impostare contenitori non privilegiati. La comunicazione all’esterno della sandbox è possibile tramite un meccanismo di portali, che consente l’accesso granulare alle risorse di sistema;
- Un altro PRO di Flatpak è la documentazione, molto ben fatta;
- Il Runtime management è altamente flessibile;
- Un punto a sfavore di Flatpak è l’enorme memoria cache che viene utilizzata per la gestione dei file;
- I pacchetti Flatpak sono disponibili per gli utenti finali principalmente tramite Flathub, un app store e un servizio di build che è (semi) ufficialmente associato al progetto Flatpak. Gli invii a Flathub vengono effettuati come richieste tramite GitHub e richiedono l’approvazione degli amministratori dello store. Allo stesso modo, gli editori di software proprietario devono richiedere manualmente l’inclusione delle loro applicazioni. Le app Flatpak sono tuttavia disponibili anche come download manuali.
Per un confronto ancora più dettagliato tra Appimage, Snap e Flatpak vi rimando a questa pagina su Github.
E voi come la pensate? Qual è il vostro formato preferito, quello che usate più volentieri? E perché?
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.