Ed eccoci qui finalmente arrivati alla terza lezione del corso sul terminale, che sto portando avanti da diverso tempo, su questo blog.
Se non hai ancora avuto modo di leggere le precedenti lezioni, ti consiglio di farlo ora, prima di iniziare ad impegnarti a leggere quest’ultima, per non perderti le precedenti nozioni che abbiamo avuto modo di vedere e apprendere nelle precedenti parti.
Come avrai potuto notare questo non è uno di quei corsi in cui semplicemente ti vengono elencati 3 comandi, le loro caratteristiche e poi stop. Corso finito. Io infatti voglio fare ben altro che semplicemente questo. Infatti sto cercando di fornire un tipo di impronta differente a questo corso: cercare si di insegnarvi il funzionamento del terminale, con i suoi comandi e così via. Ma sto anche cercando di farvi apprendere il funzionamento dei sistemi Linux in generale; tutto questo per un unico motivo: il terminale è una componente fondamentale dei sistemi Linux, ma è pur sempre soltanto una semplice componente. Componente che si può conoscere bene solo quando si conoscono bene tutte le meccaniche e il funzionamento stesso di Linux.
Quindi oggi sono qui per parlarvi di una delle parti più importanti di un gestore pacchetti e quindi di un sistema operativo GNU/Linux. Stiamo parlando, come si può ben leggere anche dal titolo, dei repository.
Che cosa sono?
I repository sono degli indirizzi che puntano ad una determinata macchina. Una sorta di url. Questa macchina, che è un server a tutti gli effetti, è programmata per contenere e gestire grandi quantità di dati e di pacchetti. Nel caso dei repository di distribuzioni Linux, stiamo parlando di software. Infatti all’interno di un repository sono presenti tutti i programmi disponibili in una distribuzione.
Come funzionano?
I repository forniscono una lista al client (che sarebbe in questo caso il gestore pacchetti) di tutti i software presenti al suo interno e la relativa versione. Il gestore pacchetti, che ricordo essere il client, ogni volta che viene effettuato un update dei repo, va a scaricare la nuova versione dell’elenco. Una volta scaricato l’elenco confronta le varie versioni dei programmi installati in quel determinato computer, con le versioni presenti nei repository. Se dei pacchetti nel computer hanno una versione meno recente rispetto a quello steso pacchetto presente sul server, quest’ultimo viene segnato come aggiornamento.
In pratica, quando si effettuerà l’operazione di aggiornamento, il sistema andrà a scaricare dal server la nuova versione, la installerà nel computer e successivamente (poi quest’ultima fase varia a seconda del gestore pacchetti utilizzato) va a rimuovere il pacchetto meno recente, ormai ritenuto dal sistema obsoleto e quindi inutile.
Il motivo per cui, quindi, prima di installare un programma dopo tanto tempo che non si usa il computer, bisogna effettuare un update dei repo è molto semplice: il gestore pacchetti deve aggiornarsi con l’elenco dei pacchetti disponibili nei repository. Alcuni gestori pacchetti, come DNF o Yum, effettuano la procedura di update in modo completamente automatico, ove ce ne sia bisogno, prima di aggiornare il sistema operativo o installare un nuovo programma.
Che tipologie di repository esistono?
Esistono due tipologie differenti di repository. Esistono i repository ufficiali della distribuzione, che contengono tutti i pacchetti della distribuzione in uso. Poi esistono i repo (abbreviazione di repository) non ufficiali, gestiti quindi da terze parti, che contengono tutta una serie di pacchetti non presenti nella distribuzione in uso. Quindi sono repo che vanno ad aggiungere nuovi pacchetti, non presenti in altri modi, al sistema operativo attualmente in uso.
I repository ufficiali sono sicuramente più sicuri dato che vengono gestiti dalla community del sistema in uso. Invece, per quanto riguarda quelli non ufficiali, è necessaria una certa cautela. Infatti alcuni programmi, provenienti da repo non ufficiali, risultano essere incompatibili con la distribuzione in uso, anche se magari è dichiarato il contrario dallo sviluppatore del programma in questione. Questa incompatibilità su Linux porta ad instabilità. Infatti potrebbe, nei casi più gravi, andare in crash il sistema operativo, per colpa di un programma poco o per niente compatibile.
Inoltre se un repository dovesse cadere, il gestore pacchetti non funzionerebbe più, fino a che non si rimuove dalla lista dei repo di sistema, il repository incriminato.
Il gestore pacchetti smette di funzionare per un motivo molto semplice. Il gestore dei pacchetti è programmato di controllare i repo. Nel caso un repo non dovesse funzionare, vengono effettuati tutta una serie di tentativi (il numero può variare dal gestore che si sta andando ad utilizzare). Se questi tentativi dovessero portare ad un risultato negativo, in questo caso perché il repository in questione è caduto, non è più funzionante e non lo sarà probabilmente mai più, il gestore pacchetti si blocca fino a che questa situazione non viene risolta.
Quindi anche per questo motivo, aggiungere troppi repo esterni, non va mai bene ed è una di quelle azioni che si sconsigliano maggiormente. Si consiglia, in una sola installazione di un sistema Linux, di usare al massimo 3 repo esterni. Non di più.
Compatibilità dei repository
Ora andiamo a trattare di un tema abbastanza attuale, per quanto riguarda Linux e i repository. Più che un problema, a me piace definirla come una scarsa comprensione collettiva.
Sto parlando del fatto che ci sono davvero tantissime persone che ad esempio ritengono che un repository che funziona su Ubuntu, debba funzionare anche su Debian. La giustificazione di tale domanda è: ma Debian e Ubuntu condividono la stessa base. Ubuntu si basa su Debian e quindi tutto ciò che funziona su Debian funziona anche su Ubuntu e viceversa.
Poi quando si mettono ad introdurre su Debian il comando add-apt repository (comando studiato per Ubuntu) e iniziano ad aggiungere programmi e repo pensati per Ubuntu su Debian e Debian stesso smette di funzionare quasi senza un motivo apparente, queste persone rimangono quasi stupite. La risposta di questi malfunzionamenti è molto semplice: Ubuntu e Debian, tanto per fare un esempio, hanno due metodologie e due strutture totalmente differenti.
Inoltre sostengo che il comando add-apt repository su Debian non vada bene. Questo per un motivo molto semplice: cambia la sintassi. Infatti il comando add-apt repository è stato programmato per accettare ed elaborare repository con la sintassi di Debian. Il problema è che la sintassi dei repo su Debian e la sintassi dei repo su Ubuntu è veramente completamente differente.
Stessa cosa capita anche con Fedora e red hat. I repo di fedora hanno una sintassi completamente diversa dalle distro sviluppate direttamente dall’azienda dal cappello rosso.
Gestione dei repository
Tutti i repository vengono salvati nel file sources.list. L’utente può editare questo file per rimuovere, aggiungere o modificare un repository, che poi dovrà gestire il gestore pacchetti.
In conclusione
E anche per oggi questa nuova lezione sul terminale è finita. Spero che ti sia stata utile.
Con questo è tutto….. alla prossima!