Repository: dove, quando e perchè

ATTENZIONE: Pur essendo valido per qualsiasi distribuzione, questo articolo è rivolto principalmente agli utilizzatori di Linux Mint, Ubuntu e tutte le distro Debian derivate.

Tutto il sistema di installazione e gestione dei pacchetti sulla maggior parte delle distribuzioni GNU/Linux si basa sui repository. Ovviamente questo concetto esiste da quando esiste Linux. Infatti, tutte le distribuzioni gestiscono ormai i propri pacchetti quasi esclusivamente attraverso l'uso di questi "magazzini virtuali".

Per chi non avesse mai sentito parlare di repository gli basti digitare da terminale

$ sudo apt-get update

per vedere come Aptitude (conosciuto come APT - Advanced Packaging Tool) aggiorna le proprie liste di indirizzi disponibili. Questi indirizzi, se non sono stati modificati dall'utente, sono gli indirizzi di default inseriti dagli sviluppatori di Mint.

Come si sa, Linux Mint si "appoggia" ai repository di Ubuntu: ciò significa che i pacchetti installati non sono altro che i pacchetti creati per Ubuntu. Inoltre, per completezza, le estensioni utilizzate dai sistemi Debian derivati (Ubuntu, Mint, ...) sono tutte uguali e chiamate .deb (l'altra grande fetta di pacchetti hanno estensione .rpm per tutti quei sistemi derivati Red Hat, tipo Fedora).

Qualora non si trovassero pacchetti con estensione .deb è sempre possibile crearne di compatibili a partire da un .rpm attraverso l'uso di alien:

$ sudo alien -c nome_pacchetto.rpm

Questo comando creerà un paccheto identico al precedente ma con estensione .deb.

Ma come si installano i programmi su una macchima Linux? Non di certo cercando i pacchetti uno per uno e risolvendo tutte le dipendenze a mano (come si faceva tanto tanto tempo fa!). Oggi ci viene in aiuto il programma di gestione pacchetti: Synaptic, per i sistemi Debian derivati. Questo programma fa il lavoro sporco: cerca i pacchetti, risolve le dipendenze e installa i pacchetti. Ovviamente si occupa anche degli aggiornamenti.

Ma come lavora Synaptic? Da dove prende le liste pacchetti? Come gestisce gli aggiornamenti?

Eccoci finalmente ai repository!

ATTENZIONE: Le procedure che seguono sono particolarmente pericolose per la stabilità del sistema operativo. Procedete con cautela!

Linux Mint memorizza i repository in due modi:

1) attraverso il file source.list che si trova in /etc/apt/

2) attraverso file di indirizzi PPA (Personal Package Archive)

Nel primo caso, una volta lanciato il comando

$ sudo apt-get update

Aptitude scorrerà la lista degli indirizzi memorizzati nel file sources.list per verificarne l'effettiva funzionalità.

Possiamo sempre modificare la lista aggiungendo righe di indirizzi o commentando con # all'inizio della riga di indirizzo.

Come si nota aprendo il file:

$ sudo gedit /etc/apt/sources.list

negli indirizzi è indicata la versione di Ubuntu alla quale si fa riferimento.

Per quel che riguarda PPA il discorso è diverso. Quando si importano repository attraverso

$ sudo add-apt-repository ppa:user/ppa-name

dove user/ppa-name ovviamente deve essere sostituito con il PPA che ci interessa.

Questo crea un file all'interno di /etc/apt/sources.list.d/ con estensione .list nel quale sono contenute tutte le informazioni riguardante quel determinato repository: indirizzo, versione della distribuzione e estensione dei pacchetti. Tutto in un unico file. L'indirizzo del repository e la chiave di autenticazione (segnatura gpg) sono importate automaticamente. Per quanto riguarda la versione questa viene aggiunta in base a quella del sistema in uso.

Ovviamente anche questo file è modificabile e basterà aprirlo con un qualsiasi editor di testo per apportare le nostre modifiche (questo risulta particolarmente utile quando il repository appartiene ad una versione Ubuntu precedente alla nostra e bisogna intervenire a mano per cambiarne il nome).

Infine, due parole sulla chiave di segnatura GPG (GNU Privacy Guard): questo programma permette di verificare e autenticare i pacchetti contenuti nel repository PPA attraverso il riconoscimento di una chiave unica criptata. In generale, la chiave si può aggiungere manualmente (si è obbligati nel caso di modifica del file sources.list) attraverso la riga di comando

$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys signing_key

dove signing_key viene sostituita dalla chiave del PPA che ci interessa.