Dec 282011
 

In questi giorni ho lavorato molto su macchine con Red Hat Enterprise e Centos, e così ho usato yum per installare, aggiornare, rimuovere e scaricare i pacchetti.
Sono più abituato ai pacchetti .deb (o al sistema portage), e quindi per me queste opzioni sono nuove e veramente utili per estendere le funzioni di base di yum.

In particolare vi mostrerò come :

  • Dire a yum le priorità tra i suoi repository
  • Usare yum per scaricare un pacchetto senza installarlo.




Ma prima alcune informazioni riguardanti yum da wikipedia:

Yellow dog Updater, Modified (YUM) è un sistema di gestione dei pacchetti open source a riga di comando per i sistemi operativi Linux compatibili col formato RPM. È stato sviluppto da Seth Vidal e da un gruppo di programmatori volontari, ed attualmente è mantenuto come del progetto Linux@DUKE della Duke University. Sebbene yum sia un’utility a riga di comando, ci sono diversi tool che forniscono un’interfaccia grafica, come ad esempio: pup, pirut, e yumex.

Yum è la riscrittura del suo predecessore, Yellowdog Updater (YUP), e venne sviluppato inizialmente in modo da aggiornare e gestire i sistemi Red Hat Linux usati dal dipartimento di fisica della Duke University. Da allora, yum venne adottato dalla Fedora Core, CentOS, e da altre distribuzioni Linux basate su RPM, tra cui la stessa Yellow Dog Linux, dove sostituì l’originale utility YUP.

Priorità in Yum

Ho trovato utile aggiungere repository “non ufficiali” di CentOS e Red Hat, come Epel or Remi per esempio, questo mi permetta di aggiungere un sacco di pacchetti, ma con la compfort di avere un repository che mantengono la dipendenza e tenerli aggiornati nel tempo.

Ma c’è uno svantaggio in questa soluzione, a volte questi pacchetti vanno in conflitto con i pacchetti ufficiali, e forse si desidera mantenere pacchetti ufficiali il maggior numero possibile, quindi qual è la soluzione?

Priorità!

Quindi come prima cosa installate il plugin con:

yum install yum-priorities

Attenzione: In Centos 6 ha cambiato nome: yum-plugin-priorities
Verificare se è già attivato, per fare questo è necessario trovare nel file /etc/yum/pluginconf.d/priorities.conf il parametro enabled=1

cat /etc/yum/pluginconf.d/priorities.conf
[main]
enabled=1

Ora è necessario modificare tutti i repository e dare loro un numero di priorità da 1 a 99 i repository con il numero più basso ricevono la priorità più alta, Per cui io normalmente imposto tutti i repository ufficiali a 1.
Questo è un esempio con Centos, dove i repository principali sono impostati a priorità 1, il repository “contrib” a 2 e “EPEL” a 3:

[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=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
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=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=1


[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=http://mirror.centos.org/centos/RPM-GPG-KEY-centos4
priority=2

[epel]
name=Extra Packages for Enterprise Linux 5 – $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/5/$basearch mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-5&arch=$basearch failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
priority=3

Dopo qualche tempo si potrebbe desidera visualizzare in modo chiaro tutti i repository e le loro priorità, ho trovato in un blog, questo script in una riga che lo fa:

sed -n -e "/^\[/h; /priority *=/{ G; s/\n/ /; s/ity=/ity = /; p }" /etc/yum.repos.d/*.repo | sort -k3n

Che dovrebbe darvi un output simile a questo:

priority = 10 [base]
priority = 10 [updates]
priority = 30 [extras]
priority = 50 [centosplus]
priority = 60 [c5-testing]
priority = 70 [rpmforge]
priority = 75 [kbs-CentOS-Testing]
priority = 90 [kbs-CentOS-Misc-Testing]
priority = 94 [epel]


Scaricare i pacchetti con Yum senza installarli

Avevo una macchina senza connessione a internet diretta, ma avevo bisogno di installare alcuni pacchetti aggiuntivi e tutte le loro dipendenze, per fortuna avevo un’altra macchina con la stessa versione del sistema operativo ed accesso alla rete disponibile.
Quindi come è possibile con yum scaricare un insieme di RPM sezan installarli ?

Dopo una piccola ricerca ho trovato un altro utile plugin: yum-downloadonly (ero su una RHEL 5.X, non so se ha cambiato nome nella versione 6.x), yum-downloadonly è un plugin che può essere utilizzato per scaricare qualsiasi pacchetto da un repository yum configurato senza installare il pacchetto stesso.
Come prima cosa installare il plugin con:

yum install yum-downloadonly

Ora, come dice il nome, si ha la possibilità di dire a yum di fare “solo downlaod” di tutti i pacchetti, per farlo usare un comando come questo:

yum install --downloadonly --downloaddir=/tmp munin

Il pacchetto, per impostazione predefinita, viene salvato nella directory /var/cache/yum/ su rhel-i386-server-5. Ma con l’opzione –downloaddir è possibile specificare una directory alternativa dove salvare i pacchetti.

Popular Posts:

Flattr this!

  2 Responses to “2 Utili plugin per Yum”

  1. Mi spiace contraddirti ma l’uso di yum-priorities è fortemente sconsigliato sia da Red Hat che dalla community CentOS:
    http://wiki.centos.org/PackageManagement/Yum/Priorities#head-38b91468cc607d0243f463489c2334bf40bfaaee

    Molto meglio usare repository come RPMforge che nativamente non hanno pacchetti che sovrascrivono quelli base.

    • Hai fatto benissimo a segnalarlo.
      Probabilmente l’errore alla abse sono i repository aggiuntivi che mi hanno chiesto di aggiungere, che non sono a prova di errori come rpmforge.

      Ciao

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*