Con Ubuntu 16.04 sono arrivati in versione stabile i pacchetti Snap; poco tempo fa, invece, con grande entusiasmo la comunità Linux ha annunciato la nascita di un secondo formato di packaging, il cosiddetto Flatpak.
Ma per quale motivo sono nati Snap e Flatpak?
Chiunque abbia avuto a che fare con l’ecosistema delle distribuzioni Linux-based saprà che quasi tutte dispongono di un sistema personalizzato di gestione pacchetti. A seconda del tipo di distribuzione, i programmi installabili vengono “pacchettizzati” (appunto) in formati differenti per semplificarne l’installazione.
Ad esempio le distribuzioni debian-based utilizzano i pacchetti .deb, le Red-Hat based (come Fedora, ad esempio) utilizzano i pacchetti .rpm e Slackware utilizza il formato .tgz – giusto per citare le più note, poiché anche alcune derivate hanno costruito gestori e relativi packaging personalizzati.
Snap e Flatpak si prefiggono di eliminare questo tipo di frammentazione, proponendosi come un formato di packaging indipendente dalla distribuzione su cui viene eseguito e potenzialmente funzionante ovunque.
Ma capiamo qualcosa in più!
Snap (e Snapcraft)
Snap è un formato di packaging creato e sponsorizzato da Canonical, la società alla base dell’arci-nota distribuzione Ubuntu.
I pacchetti Snap, precedentemente noti come pacchetti “Click”, vengono introdotti poco dopo la ramificazione di Ubuntu in sistema operativo valido sia per PC che per smartphone/tablet che per IoT. Lo scopo dei pacchetti Click, infatti, era quello di poter installare le app tra i vari core di Ubuntu senza percepire la differenza tra le piattaforme sottostanti.
Un progetto che col tempo è andato avanti e che, con la creazione dell’ambiente di packaging Snapcraft, ha ampliato il suo obiettivo: ad oggi i pacchetti Snap – introdotti per la prima volta in versione stabile su Ubuntu 16.04 – si prefiggono di essere installati su qualsiasi distribuzione di Linux a prescindere anche dalla piattaforma.
Questo perché ciascuno Snap porta con sé sia i file binari del software da eseguire che le dipendenze associate ad esso, incluse librerie e software secondari, che vengono anch’essi aggiunti al sistema – senza intaccare con tutto il resto – all’atto dell’installazione dello Snap.
Ciò ha alcune conseguenze dirette vantaggiose, tra cui:
- la possibilità di installare Snap in qualsiasi ambiente di lavoro con un’ottima probabilità di funzionamento corretto;
- la possibilità di installare ed utilizzare con successo lo stesso Snap su diverse piattaforme hardware, quali PC desktop, server, smartphone, tablet e dispositivi della Internet of Things;
- la possibilità di eseguire aggiornamenti e downgrade di ciascuno Snap senza intaccare sulla stabilità del sistema circostante.
Inoltre gli Snap permettono di meglio gestire anche i software a pagamento, offrendo ai packagers un ambiente di lavoro più semplice ed un miglior sistema di gestione delle versioni, oltre che la possibilità di aprire una sorta di “store” per rivendere lo Snap in questione.
Anche Canonical dedicherà agli Snap uno store indipendente da quello dei .deb.
Il più grande punto di debolezza degli Snap, al momento, è la dimensione: uno Snap può arrivare ad occupare molto più spazio (sia sul sistema che come pacchetto) rispetto ad un pacchetto .deb o .rpm, questo perché ciascuno Snap include in sé l’intero parco dipendenze oltre che gli eseguibili del software a cui si riferisce.
Per concludere il discorso, va sottolineato che i programmi installati dai pacchetti Snap (e gli stessi installer) vengono eseguiti in una sandbox, aumentando così la sicurezza del sistema – poiché ciascun eseguibile può accedere soltanto alla zona di memoria assegnata dalla sandbox stessa, senza sforare.
Tale aspetto, però, al momento viene meno a causa di alcuni problemi di sicurezza intrinsechi del server grafico X; per garantire la sicurezza degli Snap e del relativo software installato, dunque, è necessario utilizzare un server grafico moderno come Wayland o Mir.
Flatpak
Lo scopo di Flatpak è praticamente lo stesso di Snap: eliminare la frammentazione degli installer. Presentato ufficialmente il mese scorso, anche Flatpak ha dei trascorsi storici – esso nasce inizialmente come il progetto “xdg-app”, portato avanti dagli sviluppatori GNOME e concretizzatosi alla fine sotto il nome attuale.
Flatpak è un progetto gestito dalla comunità e che trova come accaniti sostenitori colossi come la GNOME Foundation e Red Hat – e, probabilmente, verranno in qualche modo introdotti su Fedora.
Flatpak è concettualmente simile a Snap per quanto riguarda l’installazione, tuttavia un pacchetto Flatpak non porta con sé l’intero parco dipendenze ma si basa sul concetto di “runtime”.
Ad esempio, per eseguire un determinato Flatpak potrebbe essere necessario aver installato il runtime GNOME 3.18, a prescindere comunque dal sistema operativo sottostante. Ciò rende Flatpak fortemente incentrato agli utilizzi su desktop anziché su server, un concetto di portabilità più pratico – e più leggero in termini di spazio – ma meno flessibile di Snap.
Sempre più comodo di installare manualmente ciascuna dipendenza, senza ombra di dubbio.
Lato sicurezza, anche per Flatpak valgono gli stessi vantaggi e svantaggi di Snap: i Flatpak e le app installate da esso vengono eseguiti in una sandbox, ciò significa che hanno la possibilità soltanto di vedere ed agire su sé stesse e su ristrette e precise zone di memoria.
Chiaramente il discorso esula anche questa volta il server grafico X, che ha di per sé molti problemi di sicurezza – i quali fanno diminuire drasticamente quella offerta da Flatpak.
Va comunque detto che Flatpak supporta SELinux per offrire un ulteriore isolamento e tutti gli ambienti virtuali basati su OCI – Open Container Initiative.
I pacchetti Flatpak verranno distribuiti tramite repository di sistema, esattamente come succede oggi per gli .rpm.
Snap e Flatpak: analogie e differenze
Abbiamo parlato per esteso di entrambe le tecnologie di packaging e, per concludere la nostra guida, facciamo sì che le analogie e le differenze possano essere viste a colpo d’occhio raggruppando le principali caratteristiche in una tabella.
Sebbene l’idea alla base sia ottima, nessuno dei due formati è pronto per il primetime e per prendere piede a livello globale poiché c’è bisogno di miglioramenti soprattutto sull’aspetto “consumer” – ovvero quello che “fa le cose semplici” – della cosa.