2012-12-24 31 views
12

मेरी पहली पोस्ट यहां है, लेकिन मैं चारों ओर घूमता हूं और ऐसा करने का एक आसान तरीका नहीं ढूंढ सकता।अपने संस्करण संख्या को जानने के बिना, नवीनतम एपेल-रिलीज आरपीएम प्रोग्रामेटिक रूप से कैसे स्थापित करें?

मेरे पास एक ऐसा प्रोग्राम है जो स्वचालित रूप से ऑनलाइन आने पर नए सेंटोस लिनक्स सर्वर को कॉन्फ़िगर करता है। प्रक्रिया के हिस्से के रूप में यह एपेल रिलीज आरपीएम का नवीनतम संस्करण स्थापित करता है।

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

यह अच्छा काम करता है ... रिलीज-6-8.noarch epel जब तक वे के लिए आरपीएम फ़ाइल बदलने के लिए, तो epel रिलीज-6-9:

आदेश का उपयोग मैं इस तरह दिखता है .noarch, और इतने पर। वे हर 3-4 महीने के संस्करण को अद्यतन करने लगते हैं। यह एक समस्या है, क्योंकि यदि रिपॉजिटरी एपेल-रिलीज़ संस्करण संख्या अद्यतन करता है, तो मेरी स्क्रिप्ट विफल हो जाएंगी क्योंकि यह नहीं पता कि वह संस्करण क्या होना चाहिए।

मैं एक ऐसा लिंक ढूंढने में असफल रहा जो नवीनतम एपेल आरपीएम फ़ाइल पर रीडायरेक्ट हो सकता है, इसलिए मेरे पास मेरी इंस्टॉल स्क्रिप्ट में संस्करण को हार्ड-कोड करने के अलावा कोई विकल्प नहीं है, और विफल होने पर इसे बदलें।

कोई भी संस्करण संख्या जानने के बिना नवीनतम एपेल आरपीएम डाउनलोड करने के लिए एक सरल (गैर-हार्ड-कोडेड) तरीका जानता है? मैं ऐसे तरीके की उम्मीद कर रहा हूं जिसमें रेपो फ़ाइल सूची पर एक कर्ल शामिल नहीं है और यूआरएल grep'ing, लेकिन उत्सुक क्या कोई सुझाव दे सकता है?

उत्तर

21

निम्न स्क्रिप्ट चाल करना होगा:

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 

यह RHEL/CentOS पर काम करना चाहिए 5 और 6. मैं परीक्षण नहीं किया संस्करण 4.

+0

आप Ravello धन्यवाद मिलते हैं! –

+0

वास्तव में, वास्तव में अच्छा - धन्यवाद! – paulsm4

+2

यह एक अच्छा विचार है! मैंने इसे कुछ हार्ड-कोडित रेपो आरपीएम यूआरएल पर निर्भरताओं को तोड़ने के लिए एक उत्तरदायी प्लेबुक के लिए अनुकूलित किया: https://github.com/zigg/octothorpe/commit/c3b0cdf751a6818385925c7b358361e000076daf – zigg

0

सही खोल से इसे अभी करें:

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

मैं CentOS 6.4, 6.5 और 6.6 और RHEL 6.5 और 6.6 पर इस परीक्षण किया है, लेकिन http://dl.fedoraproject.org से /etc/rpm/macros.dist और एचटीएमएल कोड की सामग्री को सभी प्लेटफार्मों पर संगत होना चाहिए, तो यह सभी प्लेटफार्मों पर काम करना चाहिए।

भावी पीढ़ी के लिए, यहाँ इसे और अधिक विस्तार के साथ है:

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