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:
- None Found
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