2012-12-24 8 views
12

Il mio primo post qui, ma ho cercato su Google e non riesco a trovare un modo semplice per farlo.Come installare a livello di codice l'ultimo rpm di epel-release, senza conoscere il suo numero di versione?

Ho un programma che configura automaticamente i nuovi server CentOS Linux man mano che arrivano online. Come parte del processo installa l'ultima versione di rpm di epel-release.

Il comando che uso si presenta così:

$ rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm && \ 
    yum clean all 

Questa grande opera ... fino a che non cambiano il file rpm per EPEL-release-6-8.noarch, quindi EPEL-release-6-9 .noarch, e così via. Sembrano aggiornare la versione ogni 3-4 mesi. Questo è un problema, perché se il repository aggiorna il numero di versione di epel-release, i miei script falliranno perché non ha idea di cosa dovrebbe essere quella versione.

Non sono riuscito a trovare un collegamento che potrebbe reindirizzare all'ultimo file epel rpm, quindi non ho altra scelta se non di codificare la versione nei miei script di installazione e modificarla quando falliscono.

Qualcuno conosce un modo semplice (non codificato) per scaricare l'ultimo epel rpm senza conoscere il numero di versione? Sto sperando in un modo che non comporti un dong nella lista dei file pronti contro termine e che inventi l'url, ma curioso di sapere cosa potrebbe suggerire qualcuno?

risposta

21

Lo script che segue farà il trucco:

cat <<EOM >/etc/yum.repos.d/epel-bootstrap.repo 
[epel] 
name=Bootstrap EPEL 
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=epel-\$releasever&arch=\$basearch 
failovermethod=priority 
enabled=0 
gpgcheck=0 
EOM 

yum --enablerepo=epel -y install epel-release 
rm -f /etc/yum.repos.d/epel-bootstrap.repo 

Dovrebbe funzionare su RHEL/CentOS 5 e 6. non ho la prova versione 4.

+0

Grazie Ravello! –

+0

Davvero, davvero fantastico - grazie! – paulsm4

+2

Questa è una grande idea! L'ho adattato per un registro di gioco Ansible per rompere le dipendenze su alcuni URL RPM repo hard-coded: https://github.com/zigg/octothorpe/commit/c3b0cdf751a6818385925c7b358361e000076daf – zigg

0

farlo proprio dalla shell:

$ EPEL_BASEURL=http://dl.fedoraproject.org/pub/epel/$(awk '/rhel/ {print $2}' /etc/rpm/macros.dist)/$(uname -p)/ 
$ rpm -ivh $EPEL_BASEURL$(curl -s $EPEL_BASEURL | grep epel-release | awk -F'<|>' '{print $5}') 
Retrieving http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
warning: /var/tmp/rpm-tmp.zRXE1U: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY 
Preparing...    ########################################### [100%] 
    1:epel-release   ########################################### [100%] 

ho provato questo su CentOS 6.4, 6.5 e 6.6 e RHEL 6.5 e 6.6, ma il contenuto del /etc/rpm/macros.dist e il codice HTML da http://dl.fedoraproject.org deve essere coerente su tutte le piattaforme, quindi questo dovrebbe funzionare su tutte le piattaforme.

Per l'amor di posteri, qui è con maggiore dettaglio:

$ EPEL_BASEURL=http://dl.fedoraproject.org/pub/epel/$(awk '/rhel/ {print $2}' /etc/rpm/macros.dist)/$(uname -p)/ 
# http://dl.fedoraproject.org/pub/epel/6/x86_64/ 
$ EPEL_RELEASE_RPM=$(curl -s $EPEL_BASEURL | grep epel-release | awk -F'<|>' '{print $5}') 
# epel-release-6-8.noarch.rpm 
$ EPEL_RELEASE_RPMURL=$EPEL_BASEURL$EPEL_RELEASE_RPM 
# http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
$ rpm -ivh $EPEL_RELEASE_RPMURL 
Retrieving http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 
warning: /var/tmp/rpm-tmp.ep6xy3: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY 
Preparing...    ########################################### [100%] 
    1:epel-release   ########################################### [100%]