Repository aggiuntivi in CentOS e Fedora
Come tutte le grandi distribuzioni open source, sia CentOS che Fedora godono di un ampio repository ed offrono supporto ad una vasta gamma di programmi.
Non tutte le applicazioni però sono disponibili all’interno della distribuzione e di conseguenza nel repository ufficiale.
Repository non ufficiali possono essere utilizzati come valida alternativa alla compilazione dei sorgenti.
Bisogna però fare attenzione perché utilizzare repository sconosciuti potrebbe compromettere il sistema operativo, sia dal punto di vista della sicurezza che da quello della stabilità.
In questo articolo spiegheremo brevemente come accedere a repository non ufficiali tramite yum.
La priorità dei repository
Quando si ha a che fare con più repository esiste un concetto di priorità che bisogna tenere in considerazione altrimenti si rischia di fare l’aggiornamento dei pacchetti di base su un repository non ufficiale come ad esempio quello di test.
Yum consente di priorizzare i repository in base alle proprie esigenze mediante un apposito plugin che può essere installato con il seguente comando:
yum install yum-priorities
Per consentire l’uso dei plugin in yum è necessario modificare il file /etc/yum.conf:
[main] cachedir=/var/cache/yum keepcache=0 debuglevel=2 logfile=/var/log/yum.log distroverpkg=redhat-release tolerant=1 exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 # Note: yum-RHN-plugin doesn't honor this. metadata_expire=1h installonly_limit = 5 # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
aggiungendo eventualmente la riga “plugins=1″
Un seconda abilitazione deve essere fatta per ogni singolo plugin installato. Nel nostro caso quindi bisogna modificare il file /etc/yum/pluginconf.d/priorities.conf impostando il parametro enabled:
[main] enabled = 1
Una volta abilitato il plugin è possibile gestire la priorita di ogni repository aggiungendo il parametro priority=N in nel relativo file di configurazione. N è un numero che va da 1 a 99 ed esprime una gerarchia. A valori di N più elevati corrispondono repository con priorità più bassa.
Nella cartella /etc/yum.repos.d sono presenti i files relativi ai singoli repository. L’esempio seguente si riferisce al file /etc/yum.repos.d/CentOS-Base.repo:
[base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 priority=1 #released updates [updates] name=CentOS-$releasever - Updates mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 priority=1 #packages used/produced in the build but not released [addons] name=CentOS-$releasever - Addons mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons #baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 priority=1 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 priority=1 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus #baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 priority=2 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib #baseurl=http://mirror.centos.org/centos/$releasever/contrib/$basearch/ gpgcheck=1 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 priority=2
Da notare come i repository di base abbiano tutti priorità 1.
Importare il repository di rpmforge
Prima di importare un nuovo repository è bene verificarne l’autenticità. Ogni repository inoltre dovrebbe essere dotato di una chiave GPG che consenta a yum di verificare la provenienza dei pacchetti.
Nell’esempio che segue, aggiungeremo una chiave valida per rpmforge:
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
Anche se può sembrare strano, è necessario importare la chiave prima del repository stesso altrimenti yum non sarà in grado di certificarne l’installazione.
Prima di installare il repository bisogna identificare l’architettura hardware che si intende utilizzare (ad esempio i386 oppure x86_64). Fare uqesta sceltà è necessaria perché ogni architettura ha un percorso diverso. Per capire con ragionevole certezza quale sia l’architettura corretta è sufficiente impartire il seguente comando:
uname -i
A questo punto possiamo scegliere tra:
- http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.i386.rpm (i386)
- http://apt.sw.be/redhat/el5/en/x86_64/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm (x86_64)
dopo aver scaricato il pacchetto procediamo con la verifica:
wget http://apt.sw.be/redhat/el5/en/$(uname -i)/RPMS.dag/rpmforge-release-0.3.6-1.el5.rf.$(uname -i).rpm rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm
Con una risposta simile a:
rpmforge-release-0.3.6-1.el5.rf.i386.rpm: (sha1) dsa sha1 md5 gpg OK
Ora possiamo procedere con l’installazione:
rpm -i rpmforge-release-0.3.6-1.el5.rf.*.rpm
Infine aggiungiamo una priorità più alta per questo repository:
echo "priority = 5" >> /etc/yum.repos.d/rpmforge.repo
Installare repository di test
Possiamo fare lo stesso discorso con i repository di test. L’esempio che segue si applica a CentOS 5:
cd /etc/yum.repos.d wget http://dev.centos.org/centos/5/CentOS-Testing.repo
Dando un’occhiata al file noterete che il repository è disabilitato. Questo è molto importante perché in genere i repository di test sono molto instabili ed il loro uso potrebbe essere causa di instabilità in ambienti di produzione.
Quando si intende usare un repository disabilitato è possibile eseguire yum con il parametro –enablerepo=REPO dove REPO è il nome del repository. Ad esempio:
yum --enablerepo=c5-testing install pacchetto
Altro sui repository
A fronte di più repository, quando si esegue yum per un aggiornamento del sistema si noterà certamente l’esclusione di alcuni pacchetti:
yum update Loaded plugins: fastestmirror, priorities Loading mirror speeds from cached hostfile * addons: centos.bio.lmu.de * base: ftp.halifax.rwth-aachen.de * extras: centos.bio.lmu.de * rpmforge: fr2.rpmfind.net * updates: mirror.avalonsys.eu 478 packages excluded due to repository priority protections Setting up Update Process No Packages marked for Update
Alcuni pacchetti marcati come da aggiornare non saranno scartati se sono marcati come da non aggiornare in un repository con priorità più bassa. Per verificare quali pacchetti sono stati esclusi è possibile usare il parametro –d3:
yum -d3 update Loaded plugins: fastestmirror, priorities Config time: 0.136 Yum Version: 3.2.22 Setting up Package Sacks Loading mirror speeds from cached hostfile * addons: mirror.silyus.net * base: ftp.halifax.rwth-aachen.de * extras: mirror.silyus.net * rpmforge: fr2.rpmfind.net * updates: mirror.avalonsys.eu --> subversion-perl-1.6.3-0.1.el5.rf.i386 from rpmforge excluded (priority) --> php-pecl-memcache-2.1.2-1.el5.rf.i386 from rpmforge excluded (priority) --> perl-DBD-Pg-2.10.7-1.el5.rf.i386 from rpmforge excluded (priority) --> qemu-0.9.0-2.el5.rf.i386 from rpmforge excluded (priority) --> subversion-perl-1.3.2-0.2.el5.rf.i386 from rpmforge excluded (priority) --> fuse-2.7.4-1.el5.rf.i386 from rpmforge excluded (priority) --> lftp-3.5.11-1.el5.rf.i386 from rpmforge excluded (priority) ...
Alla prossima.