Reperire software su Linux: Snap, Flatpak ed AppImage

21/03/2025

Vedi anche Reperire software su Linux: repository e compilazione .
Vedi anche Reperire software su Linux: Distrobox e macchine virtuali .

Oltre il classico package manager

Abbiamo visto come l'uso di un package manager sia estremamente comodo e funzionale (da riga di comando o frontend grafico), ma non privo di criticità. Con migliaia di pacchetti e dipendenze, la frammentazione ed i conflitti non mancano.
Per ovviare a questo tipo di incovenienti, nel corso degli anni si è cercato di creare soluzioni di pacchettizzazione che prediligessero portabilità e sandboxing.

Come scusa?

È più facile di quanto sembri.
Avete presente le portable apps di Windows? Sono fondamentalmente archivi che contengono al loro interno tutto il necessario per l'esecuzione di un software; i sistemi di pacchettizzazione universali hanno un funzionamento simile.
Ciò implica che qualsiasi libreria e componente aggiuntivo (dai quali dipende il programma vero e proprio) dovranno risiedere all'interno dell'archivio stesso, e non verranno interpellati i file del sistema operativo dell'utente.
In questo modo si evitano a monte problemi di conflitti, oltre a garantire un'approccio agnostico rispetto ad una specifica distribuzione. Si possono anche far convivere più istanze di applicativi in versioni differenti.
Tali archivi non sono altro che dei file compressi che godono di portabilità, potendo essere facilmente spostati ed avviati su più macchine (soprattutto nell'implementazione di AppImage).

Sandboxing, invece, è sinonimo di isolamento.
Le applicazioni girano in un ambiente separato con permessi controllati e che non comunica direttamente con il resto dell'OS, garantendo maggiore sicurezza, ma con potenziali effetti negativi sull'integrazione nel sistema.

Riassumendo, quindi, software standalone e sandboxato per ovviare ai limiti intrinsechi dei package manager tradizionali.
Le librerie necessarie sono contenute nell'archivio dei programmi, sempre nella versione specifica per garantire il corretto funzionamento ovunque.
Tutti i sistemi elencati sono parzialmente o totalmente open source.

Snap

Croce e delizia delle distribuzioni di Canonical (e alcune derivate), Snap è un sistema di pacchettizzazione sviluppato a partire dal 2014 ed inizialmente esclusiva di Ubuntu.
È basato su uno store propietario (che contiene anche programmi non open source), controllato esclusivamente da Canonical e che esclude qualsiasi tipo di repository indipendente.
Le applicazioni possono essere installate e gestite con un tool da riga di comando, da store grafici, o anche direttamente agendo da file .snap .
I programmi Snap girano in container isolati, con permessi gestiti granularmente dall'utente. Un apposito servizio, snapd, si occupa della gestione completa di tutti i pacchetti, aggiornamenti compresi.

Flatpak

Flatpak è un sistema in realtà molto simile a Snap (persino a livello cronologico), tranne per alcune sottili differenze.
Le caratteristiche relative a containerizzazione e sandboxing sono sovrapponibili a quelle del sistema di pacchettizzazione di Canonical, ma la sua natura più open ha contribuito ad una migliore reputazione di Flatpak rispetto a Snap.
Una delle sue peculiarità più apprezzate è quella di non limitare la creazione di repository indipendenti. Oltre a Flathub, lo store principale che è diventato sinonimo stesso di Flatpak, chiunque può gestire una repo alternativa per la distribuzione dei suoi pacchetti.
Anche in questo caso è agire sui sia da CLI che GUI. Seppur indipendente, il progetto Flatpak si può considerare in qualche modo più vicino all'ambiente RPM (Red Hat, Fedora, openSUSE... ) e Gnome.
Molte distribuzioni dichiaratamente contrarie alla filosofia di Snap (tra cui spicca sicuramente Linux Mint) integrano nativamente Flatpak al loro interno.

AppImage

Davvero interessante l'approccio dell'ormai pluriventennale AppImage (presentato nel 2004, ma con il nome di klik), molto vicino a quello dei file dmg di macOs.
Se "less is more", qui niente repository, store e tool di gestione; solo file contenitori (con estensione .AppImage) distribuiti ovunque e pronti da rendere eseguibili ed avviare.
I file AppImage non vanno estratti, ma montati su un filesystem virtuale attraverso FUSE, l'unico vero requisito necessario per l'avvio dei software pacchettizzati in questo modo.
Ottimo poter eseguire software senza nessuna reale modifica al sistema operativo sottostante, anche da dischi esterni (potrebbero essere comunque creati dei file di configurazione nella home dell'utente).

[user@dajelinux ~]$ dajelinux --per-approfondire

[user@dajelinux ~]$ dajelinux -wtf

Hai notato qualche errore?
Pensi che sia stato poco chiaro, magari dando per scontato un termine o un concetto che non riesci a capire?
Vuoi proporre un approccio differente all'argomento?
Contattami per feedback e chiarimenti, l'open source è anche questo!