ऑफ़लाइन उपयोग के लिए, सभी आरपीएम को प्राप्त करने के लिए यम का उपयोग कैसे करें?


30

मेरे पास नेट कनेक्टिविटी के साथ एक सर्वर है, जहां मैं "yum इंस्टॉल $ पैकेज" का उपयोग कर सकता हूं।
मैं कुछ yum कमांड चाहता हूं, yum cache-rpms $PACKAGE $DIRECTORYजैसे कि सभी आवश्यक RPM फाइल को $ DIRECTORY में डाउनलोड किया जाएगा, जिसमें एक फाइल भी होगी ( Install.sh) जिसमें कहा गया है कि इन RPM को स्थापित करने के लिए, नेट कनेक्टिविटी के बिना कई अन्य सर्वरों पर।
Install.shयहां तक ​​कि एक शेल स्क्रिप्ट भी हो सकती है, जिसमें समान व्यवहार है yum install $PACKAGE, सिवाय इसके कि वह नेटवर्क का उपयोग नहीं करेगी, लेकिन केवल उपयोग करेगी $DIRECTORY

मुमकिन?

मैं एक सामान्य समाधान ढूंढ रहा हूं जहां yum और RPM उपलब्ध हैं, लेकिन विशिष्टता के लिए: यह CENTOS 6.7 सर्वर के एक सेट पर है।


मैं कुछ समाधानों के बारे में सोच सकता हूं - जो आपके लिए बेहतर काम करता है? (1) एकल पैकेज दृष्टिकोण। यह कम डाउनलोड करता है, लेकिन इसके लिए अधिक मैनुअल काम की आवश्यकता होती है। या ... (2) संपूर्ण रेपो दृष्टिकोण। यह बहुत सारे डाउनलोड करता है , लेकिन अधिक स्वचालन के साथ किया जा सकता है।
स्टीव बॉन्ड्स

@SteveBonds, मैं (1) "सिंगल पैकेज" पसंद करूंगा, क्योंकि (2) "पूरे रेपो" को डाउनलोड करने और बहुत अधिक स्थान लेने में समय लगेगा।
प्रेम

क्या आपने स्पेसवॉक पर ध्यान दिया है?
fpmurphy

जवाबों:


40

यहां एक विशिष्ट उदाहरण "httpd" का उपयोग करके पैकेज को डाउनलोड करने और स्थापित करने के लिए है। इस प्रक्रिया को CentOS6 और CentOS7 दोनों पर परीक्षण किया गया था।

अपनी ज़रूरत का सामान स्थापित करें और डाउनलोड किए गए RPM को रखने के लिए जगह बनाएं:

# yum install yum-plugin-downloadonly yum-utils createrepo
# mkdir /var/tmp/httpd
# mkdir /var/tmp/httpd-installroot

RPM डाउनलोड करें। यह सभी खाली जगह में कुछ भी स्थापित नहीं होने के बाद से सभी निर्भरता के पूर्ण डाउनलोड के लिए मजबूर करने के लिए यहां दिए गए इंस्ट्रोटोट ट्रिक का उपयोग करता है । यम वहाँ कुछ मेटाडेटा बनाएगा, लेकिन हम इसे दूर फेंकने जा रहे हैं। ध्यान दें कि CentOS7 के releaseverलिए "7" होगा।

# yum install --downloadonly --installroot=/var/tmp/httpd-installroot --releasever=6 --downloaddir=/var/tmp/httpd httpd

हाँ, वह था छोटा संस्करण। आपने पूर्ण-रेपो डाउनलोड का आकार देखा होगा!

RPMs के हमारे नए ढेर को YUM रेपो में बदलने के लिए आवश्यक मेटाडेटा उत्पन्न करें और उस सामान को साफ़ करें जो हमारे पास अब नहीं है:

# createrepo --database /var/tmp/httpd
# rm -rf /var/tmp/httpd-installroot

रेपो के रूप में डाउनलोड निर्देशिका को कॉन्फ़िगर करें। ध्यान दें कि CentOS7 के लिए gpgkey का नाम "6" के बजाय "7" होगा:

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

गुम निर्भरता की जाँच करने के लिए:

# repoclosure --repoid=offline-httpd

मैं पता लगा नहीं किया है क्यों की तरह CentOS7 इस रिपोर्ट चीजों पर libssl.so.10(libssl.so.10)(64bit)से लापता httpd-toolsहै जब openssl-libs-1.0.1e-51.el7_2.2.x86_64.rpm(कि पुस्तकालय के प्रदाता) निर्देशिका में स्पष्ट रूप से मौजूद है। फिर भी, यदि आप कुछ स्पष्ट रूप से गायब देखते हैं, तो यह वापस जाने और yum install --downloadonlyऊपर उसी पद्धति का उपयोग करके इसे जोड़ने का एक अच्छा मौका हो सकता है ।

जब ऑफ़लाइन या /var/tmp/httpdरेपो डायरेक्टरी की नकल करने के बाद दूसरे सर्वर को रेपो सेट करते हैं:

# vi /etc/yum.repos.d/offline-httpd.repo
[offline-httpd]
name=CentOS-$releasever - httpd
baseurl=file:///var/tmp/httpd
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
# yum --disablerepo=\* --enablerepo=offline-httpd install httpd

उम्मीद है कि कोई लापता निर्भरता नहीं है!


3
मैंने सेंटोस 7 पर फ़ोल्डर बनाने और रेड हैट 7 पर स्थापित करने के लिए आपके गाइड का अनुसरण करने की कोशिश की, यह सभी त्रुटियों के बिना काम करता है
पीआईएन

1
जबकि दो OS के बीच संगतता काफी अच्छी है कि RedHat समर्थन सुनिश्चित करने के लिए, उस काम जैसी चीजें, आपको RedHat के सॉफ्टवेयर को RedHat के सर्वर से एक समान प्रक्रिया का उपयोग करके डाउनलोड करना चाहिए।
स्टीव बॉन्ड्स

1
हाँ तुम सही हो। लेकिन इस मामले में यह नेटवर्क नियमों के साथ एक करीबी माहौल था जिसे मैं बदल नहीं सकता था। जैसे कुछ कहते हैं: "ग्राहक हमेशा सही होता है"
पियिन

1
Centos 7 में बहुत अच्छा काम कर रहा है, धन्यवाद!
कार्लोस वेगा

4

ऐसा लगता है कि आप yumdownloaderपैकेज में सम्‍मिलित हैं yum-utils। इस बारे में पहले से ही कुछ सवाल और जवाब हैं, उदाहरण के लिए yumdownloader के साथ सभी निर्भरताएं डाउनलोड करें, भले ही पहले से इंस्टॉल हो? या मैं यम के साथ पैकेज URL कैसे मिल सकती है?

yumdownloaderसंकुल को डाउनलोड करेगा, हालाँकि यह एक फ़ाइल उत्पन्न नहीं करेगा, Install.shक्योंकि आदेश यम द्वारा निर्धारित किया जा सकता है, इसलिए आप
yum install ./*rpmअपने डाउनलोड किए गए पैकेजों के साथ फ़ोल्डर के माध्यम से लक्ष्य बॉक्स पर पैकेजों को स्थापित कर सकते हैं (जिसमें सभी निर्भरता शामिल करने की आवश्यकता है एक की तुलना में आधार स्थापना - उपरोक्त पहला लिंक देखें repotrack)


+1, जैसा मैं चाहता हूं, वैसा ही लगता है! मैं प्रयोग करूँगा और अपडेट करूँगा कि यह क्या चाहता है!
प्रेम

4

मुझे कई बार इसकी आवश्यकता थी, इसलिए मैंने @Steve Bonds के उत्तर को स्वचालित कर दिया। बस सुनिश्चित करें कि PKGदोनों मशीनों पर स्थापित करने के लिए पैकेज के रूप में परिभाषित करें (अस्वीकरण: CentOS 7 के लिए। CentOS 6 के लिए, स्थान --releaseverऔर CentOS-7स्थान बदलें ।

ऑनलाइन मशीन

PKG=... # NAME OF THE PACKAGE TO INSTALL ON OFFLINE MACHINE
yum install --downloadonly --installroot=/tmp/$PKG-installroot --releasever=7 --downloaddir=/tmp/$PKG $PKG
createrepo --database /tmp/$PKG
rm -rf /tmp/$PKG-installroot
rsync -arv /tmp/$PKG/ [IP of the machine]:/tmp/$PKG

ऑफ़लाइन मशीन पर:

PKG=... # NAME OF THE PACKAGE
echo "[offline-$PKG]
name=CentOS-\$releasever - $PKG
baseurl=file:///tmp/$PKG/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7" >  /etc/yum.repos.d/offline-$PKG.repo

# install package offline:
yum --disablerepo=\* --enablerepo=offline-$PKG install --nogpgcheck $PKG

1
आप -yपृष्ठभूमि में चलने पर पैकेजों की स्थापना की पुष्टि करने के लिए अंतिम आदेश में जोड़ना चाह सकते हैं ।
टोनीटॉराडो

यह बहुत अच्छा है कि आप इसे विवरण से स्वचालित प्रक्रिया में ले गए। अच्छा काम!
स्टीव बांड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.