2012-12-24 1 views
12

Mein erster Beitrag hier, aber ich habe gegoogelt und kann keinen einfachen Weg finden, dies zu tun.Wie programmatisch installieren Sie die neuesten Epel-Release-RPM, ohne seine Versionsnummer?

Ich habe ein Programm, das automatisch neue CentOS Linux Server konfiguriert, wenn sie online gehen. Als Teil des Prozesses installiert es die neueste Version von Epel-Release-RPM.

Der Befehl, den ich verwenden sieht wie folgt aus:

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

Dies funktioniert gut ... bis sie die RPM-Datei zu EPEL-release-6-8.noarch ändern, dann EPEL-release-6-9 .noarch und so weiter. Sie scheinen die Version alle 3-4 Monate zu aktualisieren. Dies ist ein Problem, denn wenn das Repository die Versionsnummer von eppel-release aktualisiert, werden meine Skripts fehlschlagen, da es keine Ahnung hat, was diese Version sein soll.

Ich konnte einen Link nicht finden, der auf die neueste ePel-RPM-Datei umleiten könnte. Daher habe ich keine andere Wahl, als die Version in meine Installationsskripts zu schreiben und sie zu ändern, wenn sie fehlschlagen.

Wer weiß einen einfachen (nicht-hart-codierten) Weg, um die neuesten Epel RPM herunterzuladen, ohne die Versionsnummer zu kennen? Ich hoffe auf einen Weg, der sich nicht auf die Repo-Dateiliste beschränkt und die URL grep't, aber neugierig, was jemand vorschlagen könnte?

Antwort

21

Das folgende Skript wird es tun:

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 

Es sollte auf RHEL/CentOS arbeiten 5 und 6. Ich teste nicht Version 4.

+0

Danke ravello! –

+0

Wirklich, wirklich cool - danke! – paulsm4

+2

Dies ist eine großartige Idee! Ich passte es für ein Ansible playbook an, um Abhängigkeiten von ein paar hartcodierten Repo-RPM-URLs zu brechen: https://github.com/zigg/octothorpe/commit/c3b0cdf751a6818385925c7b358361e000076daf – zigg

0

Do it direkt aus der Schale:

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

ich habe getestet dies auf CentOS 6.4, 6.5 und 6.6 und RHEL 6.5 und 6.6, aber der Inhalt von /etc/rpm/macros.dist und dem HTML-Code von http://dl.fedoraproject.org sollte auf allen Plattformen konsistent sein, Das sollte also auf allen Plattformen funktionieren.

Aus Gründen der Nachwelt, hier ist es mit mehr Details:

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