In alcune delle mie guide ho scritto di installare un programma secondo il metodo previsto dalla distribuzione in uso. Sono rimasto così sul generico perché ogni distribuzione può avere un metodo caratteristico, conosciuto da chi la utilizza, ma che differisce dalle altre e, anche se il principio di funzionamento è simile, i comandi o le azioni da eseguire possono essere molto diversi. Approfondiamo un po' questo tema e vediamo come si installa un programma su Linux e sulle più comuni distro.

Come si installa programma Linux?

Il codice sorgente

Il primo metodo che esamineremo è l'installazione attraverso l'utilizzo del codice sorgente. Questa metodo è praticamente sconosciuto agli utenti Windows ed oggi è anche poco diffuso su Linux.

Il metodo di per sé è semplice, se tutto va bene, si tratta di impartire tre comandi dal terminale ma è meglio capire cosa andremo a fare. Potremo fare un parallelo culinario che (spero) rende bene l'idea: pensate ad un programma come ad una torta; su Windows siamo abituati a cercare programmi online per poi scaricare l'installer da eseguire: questo, nel parallelo proposto, è l'equivalente di cercare una pasticceria dove comprare una torta. Con l'installazione da sorgenti, l'autore del programma (il pasticciere) non ci da la torta già pronta ma ci consegna la ricetta e alcuni ingredienti per poterla cucinare da noi!

Ovviamente questo è possibile solo se l'autore rilascia il codice sorgente del programma e, su Linux, i software utilizzati sono quasi tutti di questo tipo. Da notare l'assoluta trasparenza di questo tipo di programmi: se conosco il codice sorgente posso sapere esattamente quali sono le funzioni (anche nascoste) di quel programma... insomma nessun "ingrediente" poco gradito. Per maggiori dettagli sull'installazione da sorgenti potete leggere questo articolo ma, se il procedimento vi sembra troppo complesso, rallegratevi sapendo che, con le moderne distribuzioni, questo metodo di installazione non è quasi mai necessario e, se mai avremo bisogno di installare un programma da sorgenti, la risoluzione delle dipendenze (cioè altri programmi o librerie richieste affinché l'operazione vada a buon fine) sarà più semplice perché potremo sfruttare il package manager della nostra distro.

I package manager

Poiché come detto l'installazione da sorgenti può essere molto macchinosa in caso di programmi complessi, la maggior parte delle distro si accollano tutto il lavoro di compilazione, ricerca e soddisfazione delle dipendenze e distribuiscono (!!!) i file binari già compilati, attraverso pacchetti compressi, riconoscibili dall'estensione che può variare in base alla distro utilizzata e al suo package manager. In questo modo si garantisce che il programma funzioni sul sistema in cui verrà installato perché creato dalla stessa mano che ha costruito tutto il resto del sistema. Per gestire questi pacchetti sono stati creati programmi (o un insieme di più programmi) appositi che si chiamano appunto package manager o gestore di pacchetti e, anche se esistono molti tipi diversi di gestori di pacchetti, il funzionamento è, in linea di principio, molto simile: sfruttano un database online (detto repository), spesso sincronizzato localmente, per cercare e scaricare il pacchetto richiesto, ne controllano l'integrità e poi lo installano sul sistema. Vediamo un po' più nel dettaglio le funzioni basilari (ricerca, installazione e rimozione) di alcuni dei package manager delle distro principali o più comuni.

-- Portage --

Visto che abbiamo appena parlato dell'installazione dei sorgenti, iniziamo con un gestore di pacchetti particolare, che è quello ufficiale di un distro anch'essa molto particolare Gentoo: Portage. Questo gestore di pacchetti infatti lavora con i codici sorgente e non con pacchetti contenenti programmi già compilati!! Per questo Gentoo è chiamata meta-distribuzione perché non rilascia i programmi già compilati ma solo le istruzioni per scaricare e compilare i codici sorgente, comprese di eventuali correzioni (dette patch) per far si che la compilazione vada a buon fine.

Portage si compone di più programmi, ma quello che compie le principali operazioni è emerge. La prima cosa da fare quando si installa un programma è la sincronizzazione del database locale con il repository online e, su Gentoo, può essere fatto con il comando:

sudo emerge --sync

Come si installa programma Linux?

Per cercare un programma si invoca emerge con l'opzione --search seguito dalla parola chiave da cercare, ad esempio, se volessi cercare lynx:

emerge --search lynx

Come si installa programma Linux?

Questo comando cerca se è presente un pacchetto (sarebbe meglio dire, un file, perché di un file si tratta) nel cui nome è contenuta la parola chiave; se non conosciamo il nome del programma, è possibile eseguire una ricerca più generica nella descrizione del pacchetto con il comando:

emerge --searchdesc browser

Individuato il nome del pacchetto che ci interessa possiamo installarlo con questo comando:

sudo emerge --ask --verbose lynx

Come si installa programma Linux?

Noterete che verranno installate anche tutte le dipendenze (in questo caso, per un totale di 14 pacchetti) ma soprattutto che il tempo per l'installazione sarà molto lungo perché dovranno essere compilati tutti i sorgenti!!

Per la rimozione il comando è sempre emerge ma l'opzione consigliata è --depclean, perché controlla se le dipendenze associate al programma da rimuovere non sono associate anche ad altri programmi, rimuovendo solo quelle inutilizzate; il comando da impartire è:

sudo emerge --ask --verbose --depclean lynx

Come si installa programma Linux?

-- APT --

Advanced Packaging Tool è forse il più noto package manager perché presente in Debian e tutte le sue derivate (Ubuntu, e le sue derivate, Mint, Kali, ... ). Gestisce pacchetti con estensione .deb che sono dei file compressi contenenti i file che compongono il programma che vogliamo installare più una serie di metadati necessari per esempio a conoscere le dipendenze richieste. La sintassi dell'ultima versione di questo programma è piuttosto elementare: apt seguito dall'operazione che vogliamo eseguire e poi, se richiesta, una stringa per la ricerca o il nome del programma.

Anche in questo caso la prima cosa da fare è la sincronizzazione del database locale con il repository online, con il comando:

apt update

Come si installa programma Linux?

Se vogliamo cercare smplayer, basterà digitare:

apt search smplayer

Come si installa programma Linux?

Se vogliamo installarlo:

sudo apt install smplayer

Come si installa programma Linux?

Come possiamo vedere tutte le dipendenze (siano esse altri programmi o librerie) verranno installare senza necessità di effettuare altre operazioni.

Infine se vogliamo rimuoverlo:

sudo apt remove smplayer

Come si installa programma Linux?

Noteremo subito che i file installati sono molti di più di quelli rimossi!! Questo perché il comando per la rimozione non va a cercare tutte le dipendenze e questo è un bene perché quelle dipendenze potrebbero essere opzionali (non necessarie ma comunque utilizzate per ampliare le funzioni) anche per altri programmi!! Per avere un sistema snello senza troppi programmi inutili è possibile fare un po' di pulizia andando ad eliminare tutti i pacchetti installati come dipendenza che non sono più necessari con il comando:

sudo apt autoremove

Dobbiamo precisare che l'effettiva operazione di installazione e rimozione viene "delegata" da apt per essere eseguita da dpkg, un altro potente gestore di pacchetti da utilizzare, però, per la gestione locale dei pacchetti (dpkg non è in grado di scaricare i pacchetti da internet). In parole povere, quando digitiamo apt install nomepacchetto, apt scarica il file deb dal repository e poi lo passa a dpkg che lo installa sul sistema.

-- YUM/Dnf --

Yellow dog Updater, Modified è il gestore pacchetti di Red Hat (e la sua versione free, CentOS), Fedora e tutte le sue derivate. Gestisce pacchetti con estensione .rpm che, al pari dei .deb precedentemente visti, sono file compressi che contengono i file del programma e i metadati per le dipendenze. La sintassi per cercare, installare e rimuovere i pacchetti è pressoché identica a quella di apt (negli esempi sopra, si deve soltanto sostituire apt con yum) per cui non ci dilungheremo a ripeterli.

Come si installa programma Linux?

Una cosa che differenzia yum da apt è l'aggiornamento del repository: non serve un comando dedicato ma, se necessario, viene eseguito automaticamente prima della ricerca. Invece, un'altra cosa in comune con apt, è che il processo di installazione e rimozione è delegato ad un altro programma che ha lo stesso nome dell'estensione dei pacchetti, rpm.

Guardando bene l'immagine sopra possiamo notare che subito dopo il comando impartito, appare la scritta "Redirecting 'to /usr/bin/dnf install claws-mail' (see 'man yum2dnf')": questo ci offre la possibilità di parlare anche di un altro gestore pacchetti!

L'installazione di claws-mail è stata fatta su Fedora che, dalla versione 18, ha introdotto un'altro gestore pacchetti, adottato poi come predefinito dalla versione 22, chiamato dnf (Dandified yum). È stata però prevista una retrocompatibilità con yum, per cui i comandi impartiti con yum, vengono tradotti per essere passati a dnf. Da notare comunque che la sintassi per ricerca/installazione/rimozione è identica a quella già vista per yum.

-- Zypper --

Zypper è un altro gestore di pacchetti .rpm e si trova nella distro SUSE e la derivata free, OpenSUSE. Anche in questo caso la sintassi per ricerca/installazione/rimozione dei pacchetti è quella già vista, si deve invocare il programma zypper seguito dalle solite search/install/remove e il nome del pacchetto.

Come si installa programma Linux?

Per l'aggiornamento dei repository si può invocare il comando:

sudo zypper refresh

ma, anche in questo caso, l'operazione avviene in maniera automatica, se necessario.

-- Pacman --

PACage MANager con il nome del giallo protagonista di un famoso videogioco è il gestore di pacchetti di ArchLinux e le sue derivate (Manjaro, Chakra, Antergos, ... ). Gestisce pacchetti con tripla estensione .pkg.tar.xz, che contengono oltre hai file da installare, altri file (ispezionabili, a differenza di .deb e .rpm) contenenti informazioni riguardanti l'ambiente di compilazione, indicazioni per la gestione delle dipendenze e se necessario, alcuni script da eseguire prima o dopo l'installazione. Rispetto ai package manager già visti in precedenza, qui la forma per ricerca/installazione/rimozione è leggermente diversa e, se vogliamo, meno intuitiva.

Per l'aggiornamento del database locale dovremo digitare:

sudo pacman -Sy

Per la ricerca di un programma tramite parola chiave (che può essere il nome del programma ma anche una parola contenuta nella descrizione dello stesso) si utilizza il comando (nell'esempio, installeremo uGet che è un download manager):

pacman -Ss download manager

Come si installa programma Linux?

Una volta individuato nei risultati della ricerca il nome del pacchetto, possiamo procedere ad installarlo con il comando, simile al precedente:

sudo pacman -S uget

Come si installa programma Linux?

Notiamo i dettagli dell'installazione (qui verranno elencate anche le dipendenze mancanti da installare).

Per la rimozione del programma:

sudo pacman -R uget

Come si installa programma Linux?

Anche in questo caso, l'operazione andrà a rimuovere solo il pacchetto specificato e non le dipendenze installate con esso. Se volessimo rimuovere anche le dipendenze non più necessarie (e quindi non utilizzate da nessun altro programma) dovremo aggiungere un paio di opzioni e il comando sarà:

sudo pacman -Rsc uget

-- Pkgtool --

Pkgtool è il gestore di pacchetti tipico di Slackware, è composto da più programmi ed è atipico perché non risolve le dipendenze! Questo per via dei rilasci di versione di Slackware molto "rari" (rispetto alle altre distro) e per la caratteristica di questa distro di offrire la possibilità di includere tutti i possibili pacchetti durante l'installazione.

Pkgtool in realtà è un'interfaccia grafica minimale (creata con ncurses) per l'installazione dei pacchetti compresi in un repository locale (che può essere il DVD di installazione) o online previo però la configurazione di un Network File System.

Come si installa programma Linux?

Ipacchetti gestiti sono .tgz o .txz (abbreviazione di .tar.gz e .tar.xz), sono ispezionabili e oltre al programma e tutti i file connessi da installare contengono eventuali script di post-installazione.

Pkgtool, per eseguire ogni operazione, utilizza altri programmi che possono essere anche invocati "manualmente" da terminale ma solo da root. Per installare un pacchetto, contenuto ad esempio nella directory di lavoro, potremo digitare:

installpkg mutt-1.6.1-x86_64-1.tgz

Come si installa programma Linux?

Mentre per rimuoverlo basta indicare il nome generico del pacchetto:

removepkg mutt

Come si installa programma Linux?

Nelle ultime versioni di Slackware è presente un altro package manager, slackpkg che è in grado di scaricare e installare pacchetti da uno dei tanti mirror disponibili per il download di questa ditro ma non è comunque in grado di risolvere le dipendenze. Il funzionamento è identito a quelli già visti, con le opzioni da passare per aggiornare (update), installare (install), cercare (search) e rimuovere (remove).

GUI

Abbiamo visto come Pkgtool offra una semplicissima e molto limitata interfaccia grafica ma le distro più "amichevoli" con l'utente finale sanno che il terminale e la linea di comando non sono molto graditi da tutti (e in particolare dai neofiti) e per questo hanno sviluppato delle interfacce grafiche anche molto curate.

Si va dalle più semplici come Synaptic (da Ubuntu) e Yast (OpenSUSE) che offrono solo una lista di pacchetti divisi per categoria

Come si installa programma Linux?

alle più curate (ma non certo per i nomi... ) come Ubuntu Software Manager o Fedora Software Manager che invece offrono, oltre ai software suddivisi per gruppi, anche la possibilità di vedere alcuni screenshot del programma che vogliamo installare.

Come si installa programma Linux?

L'installazione e rimozione di programmi tramite queste interfacce è semplicissima: si utilizza l'apposito campo per inserire il testo da ricercare, si individua il programma che desideriamo tra i risultati della ricerca e si installa con un paio di click.

Uno sguardo al futuro...

Cosa ci aspetta nel prossimo futuro riguardo all'installazione dei programmi su Linux? Ci sono molti movimenti ma, più o meno tutti, vanno nella stessa direzione: creare pacchetti contenenti non solo il programma da eseguire ma anche tutte le sue dipendenze e, sfruttando le caratteristiche del kernel, eseguire questi programmi isolati dal sistema e gli uni dagli altri. I vantaggi dovrebbero essere subito evidenti: niente più grattacapi per dipendenze irrisolte o, peggio, in conflitto con altri programmi, maggior sicurezza perché la compromissione di un programma non potrà intaccare il funzionamento del sistema o degli altri programmi in esecuzione ma anche la riduzione della frammentazione nella distribuzione dei programmi. Se dovesse affermarsi uno standard fra tutte le possibili alternative, quindi, niente più pacchetti .deb, .rpm, .tar.xz, ... ma un solo file in grado di essere eseguito (almeno in teoria) su qualsiasi distro Linux!

Naturalmente c'è sempre un risvolto della medaglia e in questo caso è la richiesta di più risorse (spazio su disco ma anche CPU e RAM) per l'esecuzione degli stessi programmi installati con questi nuovi sistemi rispetto all'installazione "vecchio stile" e/o rallentamento nell'esecuzione degli stessi ma è ancora presto per fare un bilancio definitivo dei pro e contro. Vediamo brevemente quali sono i più promettenti fra questi nuovi sistemi.

-- Snap --

Sviluppato da Canonical (la stessa dietro ad Ubuntu) dal 2014 per avere un sistema semplice di gestione delle applicazioni per i dispositivi mobili (smartphone e tablet) che "montano" Ubuntu. Questo sistema prevede l'utilizzo di un apposito filesystem in sola lettura per creare un contenitore dove installare programma, dipendenze, documentazione e pagine di manuale. Può essere utilizzato su altre distro (per adesso, con qualche limitazione), oltre ad Ubuntu, previo l'installazione di snapd.

Quello che si presente all'utente è un'altro package manager, Snappy, che può essere utilizzato per cercare/installare/rimuovere i programmi su/da un repository online. L'utilizzo è semplice e simile a quanto già visto; per cercare i programmi (ad esempio un browser) si digita:

snap find browser

Come si installa programma Linux?

Una volta individuato il programma che ci interessa (in questo caso links), possiamo installarlo:

snap install links

Come si installa programma Linux?

Nell'immagine sopra possiamo vedere dove links viene installato; in un dispositivo di sola lettura (loop1) montato nel path /snap/links, e andando ad esaminare ricorsivamente il contenuto di questa directory possiamo notare tutti i file contenuti.

Un'altro vantaggio di questo sistema è la rimozione del programma; il comando:

sudo snap remove links

rimuove, infatti, quasi ogni traccia del programma lasciando il sistema pulito, senza traccia di file di configurazione in /etc (ma qualcosa potrebbe rimanere nella home).

-- Flatpak --

Ribattezzato con un nome simile a quello delle forniture da assemblare (stile IKEA) (prima era xdg-app), questo sistema di "pacchettizzazione" delle applicazioni è sviluppato dal 2014 da membri di RedHat, Fedora, Gnome ma indipendente da questi. Contrariamente a Snap (che può essere utilizzato anche su server), Flatpack è studiato per le versioni Desktop delle distro Linux e può essere installato già su molte.

Una volta installato si presenta anche questo come un package manager ma non si appoggia ad un unico database online; per l'installazione dei programmi occorre un file con estensione .flatpakref (che contiene le istruzioni per scaricare e installare il programma) che può essere scaricato "manualmente" o direttamente con flatpack specificando la URL dove si trova il file. Se per esempio vogliamo installare Picard dovremo digitare:

flatpak install --from https://www.daitauha.fr/static/flatpak/picard.flatpakref

Come si installa programma Linux?

Alla prima installazione di un programma, flatpack installerà anche il runtime necessario all'esecuzione delle applicazioni installate con questo metodo. Infatti anche se i programmi sono eseguiti in sandbox e isolati rispetto al sistema, possono condividere tra loro alcune librerie e l'ambiente runtime (di default basato su Gnome) si occupa proprio di mettere a disposizione queste librerie comuni. Runtime e applicazioni vengono installate in /var/flatpack/app/.

Al contrario di Snap, una volta installato il programma con Flatpak, questo non si troverà nel menù delle applicazioni e nemmeno sarà possibile lanciarlo normalmente dal terminale digitando il nome dell'eseguibile, ma dovremo invocarlo con un apposito comando:

flatpak run org.musicbrainz.Picard

Come si installa programma Linux?

Anche in questo, la disinstallazione lascia solo qualche traccia del programma nella home e si esegue con il comando:

flatpak uninstall org.musicbrainz.Picard

-- AppImage --

L'ultimo sistema che vedremo (ma non l'ultimo disponibile!!) è AppImage sviluppato già dal 2004, conosciuto come klik e successivamente PortableLinuxApps è il più maturo dei sistemi esistenti. Come si intuisce dal secondo nome di questo progetto, AppImage è un sistema che prevede la creazione di un file eseguibile contenente il programma e le sue dipendenze, in grado di essere eseguito su qualsiasi distro Linux (ma come Flatpak è limitato alle versioni Desktop), da qualsiasi posizione il file si trovi e naturalmente isolato dal sistema e dagli altri programmi. Utilizzando un apposito demone (appimaged) è possibile integrare le applicazioni di AppImage nei menù del nostro ambiente desktop ma per la sola esecuzione dei programmi "impacchettati" con questo metodo non si deve installare niente sul sistema. Per utilizzare questi programmi si deve solo scaricare il file con estensione .AppImage sul sistema, assegnargli il permesso di esecuzione e poi eseguirli con un doppio click

Come si installa programma Linux?

Il file scaricato può essere ispezionato montandolo con l'opzione loop

Come si installa programma Linux?

Rimuovere questo tipo di programmi è semplicissimo: basta cancellarli e anche in questo caso abbiamo un sistema completamente pulito ad eccezione di pochi file nella home.