2012-12-24 10 views
12

Mój pierwszy post tutaj, ale szukałem go w Google i nie mogę znaleźć prostego sposobu na zrobienie tego.Jak programowo zainstalować najnowszą wersję rpm, bez znajomości jej numeru wersji?

Mam program, który automatycznie konfiguruje nowe serwery CentOS Linux, ponieważ pochodzą one w Internecie. W ramach tego procesu instaluje najnowszą wersję rpm epel-release.

Polecenie używam wygląda następująco:

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

... To działa świetnie, dopóki nie zmieni plik rpm do EPEL-release-6-8.noarch, następnie EPEL uwalnianiu-6-9 .noarch i tak dalej. Wydają się aktualizować wersję co 3-4 miesiące. To jest problem, ponieważ jeśli repozytorium zaktualizuje numer wersji epel-release, moje skrypty się nie uda, ponieważ nie ma pojęcia, jaka powinna być ta wersja.

Nie udało mi się znaleźć linku, który mógłby przekierować do najnowszego pliku Epel rpm, więc nie mam innego wyjścia, jak zakodować wersję na stałe do moich skryptów instalacyjnych i zmienić ją, gdy zawiedzie.

Ktoś wie prosty (nie zakodowane) sposób, aby pobrać najnowszą EPEL rpm bez znajomości numeru wersji? Mam nadzieję na sposób, który nie wymaga dong curl na liście plików repo i przeglądanie adresu URL, ale ciekawy, co ktoś może zasugerować?

Odpowiedz

21

Poniższy skrypt rade:

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 

Powinien działać na RHEL/CentOS 5 i 6. Nie testowałem wersję 4.

+0

Dziękuję Ravello! –

+0

Naprawdę, naprawdę fajnie - dziękuję! – paulsm4

+2

To świetny pomysł! Zaadaptowałem go na "Ansible playbook", aby złamać zależności na kilku zakodowanych repozytoriach RPM do repozytorium: https://github.com/zigg/octothorpe/commit/c3b0cdf751a6818385925c7b358361e000076daf – zigg

0

Czy to dobrze z powłoki:

$ 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%] 

Przetestowałem to na CentOS 6.4, 6.5 i 6.6 i RHEL 6.5 i 6.6, ale zawartość /etc/rpm/macros.dist oraz kod HTML http://dl.fedoraproject.org powinny być spójne na wszystkich platformach, więc to powinno działać na wszystkich platformach.

Dla dobra potomności, oto jest bardziej szczegółowo:

$ 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%] 
Powiązane problemy