AppImage: l’uovo di colombo per l’installazione del software su GNU/Linux?

In quasi tutti gli articoli che ho postato riguardo al desktop GNU/Linux è sempre apparso qualche commento, anche fuori dall’argomento trattato, che addita come fattore frenante della diffusione del pinguino il sistema di gestione dei pacchetti software.

Come prima cosa bisogna analizzare qual è lo stato dell’arte delle distribuzioni più diffuse:

L’approccio comune è quello del deposito centralizzato (repository). In poche parole una selezione di software viene compilata e mantenuta dai distributori stessi. L’utente potrà tranquillamente utilizzare svariati strumenti (grafici, da linea di comando etc…) per interfacciarsi al deposito centrale e ottenere il software desiderato.

Tale approccio porta con se diversi vantaggi ma anche qualche svantaggio:

Vantaggi:

  • Semplicità di installazione di software presente nel deposito centrale
  • Sicurezza garantita grazie all’utilizzo di un sistema di firme digitali
  • Aggiornamenti automatici su tutto il parco software (non solo il sistema base ma anche le applicazioni)
  • Efficienza sia rispetto allo spazio occupato su disco che alla memoria occupata (in realtà questo non è dovuto all’utilizzo di un repository centralizzato ma alla pacchettizzazione separata di librerie e programmi con le prime che possono essere condivise tra più applicazioni)

Svantaggi:

  • Difficoltà nell’installazione di software esterno al meccanismo del deposito centralizzato
  • Scarsa flessibilità rispetto ad esigenze particolari (mantenere un pacchetto libreria ad una versione vecchia potrebbe bloccare a catena l’aggiornamento di altre componenti a causa della fitta rete di dipendenze)

Quello che si è sempre cercato di fare è mitigare gli svantaggi mantenendo inalterati i vantaggi. Questo obbiettivo è stato perseguito con approcci molto diversi ma tutti interessanti.

Prendiamo per esempio Ubuntu. Molti utenti di vecchia data si ricorderanno come pochi anni fa per installare applicazioni più aggiornate o che non erano presenti nel deposito principale si finiva per aggiungere una selva di depositi di terze parti potenzialmente dannosi sia per quanto riguarda la sicurezza che per una mera questione di consistenza. Spesso tali repository non disponevano nemmeno di una firma digitale.

Per evitare questa tendenza Canonical attraverso la piattaforma Launchpad ha messo a disposizione la possibilità di ospitare i PPA (Personal Package Archive) attraverso cui sviluppatori ufficiali e non possono fornire aggiornamenti o nuovo software in maniera semplice e più sicura.

Approccio alternativo che ho apprezzato molto è quello di Arch Linux. La piccola distribuzione che fa della semplicità il suo punto di forza affianca ai classici repository centralizzati AUR (Archlinux User Repository). AUR in realtà non è un contenitore di software ma di script (PKGBUILD) per la creazione di pacchetti (per capirci in maniera simile agli ebuild di gentoo o i ports BSD).

Da una selezione dei PKGBUILD più utilizzati e votati vengono poi creati dei pacchetti binari mantenuti nel repository “community”. La semplicità nel creare pacchetti e la gestione molto lineare degli stessi fa sì che si riesca a padroneggiare molto bene la gestione del software installato sulla propria macchina. Purtroppo tutto questo viene con un costo: la cosa non è assolutamente alla portata di tutti gli utenti. Le conoscenze richieste per la gestione di un sistema del genere non sono assolutamente conciliabili con la classica utenza desktop (e non hanno dichiaratamente nessun motivo per esserlo).

Tutte e due le soluzioni presentate risolvono in parte il primo svantaggio presentato ma servono a ben poco per il secondo dovuto come già detto alla scelta di mantenere un repository con componenti molto piccole dalla grande interdipendenza per favorire l’efficienza.

La via “storica” utilizzata per risolvere il secondo problema è quella di fornire dei semplici archivi con dentro tutto il necessario per l’esecuzione del programma in maniera indipendente dalla distribuzione. Tale strada viene per esempio seguita dagli sviluppatori di firefox che rilasciano la propria versione precompilata del celebre browser con queste modalità.

A rendere ancora più interessante questa possibilità sono le varie tecnologie di bundling che ciclicamente si ripresentano nel panorama aperto. Tali tecnologie permettono in maniera simile ai file DMG (Apple Disk Image) ben noti agli utenti MacOSX di contenere un’applicazione e tutte le sue dipendenze in un unico file.

Ultimamente si fa un gran parlare di una di queste tecnologie appena uscite: AppImage.
Tecnicamente una AppImage è un file ELF contenente una iso. Tale iso contiene tutto l’albero di directory e file necessari (dipendenze comprese) all’avvio del programma.
Al doppio click sul file AppImage tale iso verrà montata attraverso l’utilizzo della libreria FUSE in una directory temporanea e da lì l’eseguibile del programma verrà chiamato con variabili d’ambiente opportunamente settate per fare in modo che vengano utilizzate le librerie inserite nel bundle piuttosto che quelle di sistema. In questo processo non ci sarà quindi una installazione persistente con il piacevole risultato che la disinstallazione del programma coincide di fatto con l’eliminazione del file.

Come avrete ben capito, se da una parte tale soluzione risolve molti problemi ne riapre molti altri che con il sistema a repository non erano in discussione. Nello specifico sicurezza, facilità di aggiornamento ed efficienza sono sacrificate sull’altare della maggiore flessibilità.

Bisogna però dire che nelle intenzioni degli sviluppatori di questo progetto non c’è quella di soppiantare il sistema a repository ma di fornire un alternativa per la distribuzione di software aggiornato. Il progetto è giovane e molte migliorie possono e devono essere fatte (mi viene in mente la difficoltà nel garantire un unico bundle per applicazioni compilate per diverse architetture o la mancanza attuale di integrazione nei menu dei vari ambienti desktop delle applicazioni distribuite in questo modo) ma secondo me ha spunti molto interessanti che potrebbero migliorare di molto l’esperienza dell’utente medio del desktop linux. In definitiva mi sento di accogliere tale tecnologia come un interessante aggiunta da affiancare all’ottimo e rodato sistema basato sui repository. Adesso bisognerà aspettare alla finestra per vedere come sarà accolta dagli sviluppatori.

Se volete testarne il funzionamento potete scaricare qualche AppImage dal sito portablelinuxapps.org. Per adesso le distribuzioni su cui sono stati testati i pacchetti sono quelle maggiormente diffuse (Ubuntu, Fedora e OpenSuse) quindi se non gira sulla vostra Slackware non prendetevela con me. :P

Press ESC to close