13.1.4 Risoluzione automatica delle dipendenze - yum

Il problema che affligge il sistema dei pacchetti è quello delle dipendenze: l’installazione di un pacchetto può richiedere che sul sistema sia già installalto un altro pacchetto che a sua volta può richiedere che sia già installato un altro pacchetto e così via. Questo meccanismo può arrivare a generare una catena di dipendenze piuttosto lunga e difficile da gestire manualmente. Per effettuare la verifica e l’installazione automatica dei pacchetti necessari per l’utilizzo di un determinato software, sarebbe auspicabile avere a disposizione un programma che si preoccupi di tutto ciò.

Uno dei meccanismi più utilizzati per la gestione automatica dei pacchetti rpm è yum (Yellowdog6 Updater, Modified)7 (man page yum(8)). Si tratta di un insieme di script (scritti in liguaggio python) che, dato il nome di un pacchetto rpm, permettono di effettuarne l’installazione automatica, risolvendo tutte le eventuali dipendenze da altri pacchetti (tutti i pacchetti da cui esso dipende vengono reperiti ed installati sul sistema).

____________________________________________________________________

Comando: yum
Path: /usr/bin/yum

SINTASSI  
# yum [option] [command] [package ...]  
DESCRIZIONE

____________________________________________________________________

Un repository è un albero di directory contenente un insieme di file *.rpm opportunamente preparato per essere acceduto attraverso yum, per poter così fornire i pacchetti a chi ne faccia richiesta.

Un file *.rpm racchiude, oltre all’insieme dei file che costituiscono il pacchetto software, una firma (signature) ed un header contenente l’elenco dei file da cui è composto il pacchetto, la data di realizzazione dello stesso, la sua versione, la sua descrizione, le sue caratterisitche, l’elenco dei pacchetti richiesti per il suo funzionamento (le dipendenze), ... yum ottiene l’header dal repository (che contiene le informazioni relative ai pacchetti da esso reperibili) e quindi utilizza le informazioni in esso contenute per verificare quali sono gli eventuali pacchetti disponibili nel repository così da poterli installare o aggiornare. Quindi utilizza rpm per installare o aggiornare i pacchetti sul sistema.

Un repository quindi, oltre ai file *.rpm, contiene degli appositi file memorizzati nella directory repodata che i client che si collegano scaricano memorizzandoli in una propria cache (in genere nella directory /var/cache/yum), in modo tale da poter in seguito effettuare più velocemente i controlli relativi ai pacchetti disponibili.

Per il proprio funzionamento yum si basa sui file di configurazione /etc/yum.conf (man page yum.conf(5)) e *.repo eventualmente contenuti nelle directory /etc/yum.repos.d e /etc/yum/repos.d. Questi sono dei file di testo che possono contenere varie sezioni. Ogni sezione è identificata da un nome univoco racchiuso tra parentesi quadre (es. [pippo]), il repositoryid, che ne determina l’inizio, mentre la fine è determinata dall’inizio della sezione successiva. Per ogni sezione possono essere specificate delle direttive.

La sezione main è una sezione particolare (ne può esistere soltanto una) che contiene le direttive globali, che possono essere le seguenti

Ognuna delle altre sezioni si riferisce ad uno specifico repositoryid (un identificatore univoco per ogni repository), e le possibili direttive sono le seguenti (le impostazioni non specificate per uno specifico repositoryid vengono ereditate da quelle della sezione main)

I file di configurazione di yum possono contenere anche dei riferimenti alle seguenti variabili di ambiente (all’interno delle varie direttive), come

Un esempio del contenuto del file /etc/yum.conf è riportato di seguito

                                                                        
                                                                        
[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=fedora-release
gpgcheck=1
tolerant=1
exactarch=1
[core]
name=Fedora Linux $releasever - $basearch - core
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/core
[updates]
name=Fedora Linux $releasever - $basearch - updates
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/updates
[freshrpms]
name=Fedora Linux $releasever - $basearch - freshrpms
baseurl=http://ayo.freshrpms.net/fedora/linux/$releasever/$basearch/freshrpms

Il primo avvio di yum può richiedere un po’ di tempo, poiché esso si connette ai vari repository (secondo quanto specificato nel file di configurazione) e scarica sia il file header.info che gli header relativi ai pacchetti installati sul sistema.

[da completare ...]

Ad esempio, il comando

 
yum list  
visualizza un elenco dei pacchetti disponibili nei vari repository ed il comando

 
yum install package_name  
installa il pacchetto (o i pacchetti) specificato da package_name, mentre il comando

 
yum remove package_name  
rimuove il pacchetto (o i pacchetti) specificato da package_name.

Il comando

 
yum info package_name  
visualizza le informazioni di base relative al pacchetto package_name, mentre il comando

 
yum search word  
ricerca tra i pacchetti quelli che hanno a che fare con word.

Il comando

 
yum check-update  
oppure

 
yum list updates  
visualizza se sono disponibili pacchetti aggiornati ed il comando

 
yum update  
effettua l’aggiornamento di tutti i pacchetti installati sul sistema con le versioni disponibili più recenti.

È possibile realizzare un proprio repository per mezzo del comando createrepo (man page createrepo(8)) che creerà la directory repodata e gli appositi file filelists.xml.gz, other.xml.gz, primary.xml.gz e repomd.xml.

____________________________________________________________________

Comando: createrepo
Path: /usr/bin/createrepo

SINTASSI  
# createrepo [option] directory  
DESCRIZIONE

_________________________________

[da completare ...]