यम: मैं $ जारीकर्ता, $ आधार और $ YUM0 जैसे चर कैसे देख सकता हूं?


49

मैं एक yum रिपॉजिटरी की स्थापना कर रहा हूं, और yum.conf फ़ाइल में कुछ URL को डीबग करने की आवश्यकता है। मुझे यह जानने की आवश्यकता है कि वैज्ञानिक लिनक्स इस URL को हथियाने की कोशिश क्यों कर रहा है, जब मैं उम्मीद कर रहा था कि यह किसी अन्य URL को हथियाने के लिए है:

# yum install package 
http://192.168.1.100/pub/scientific/6.1/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: sl. Please verify its path and try again

Yum.conf (5) मैनपेज इन चर के बारे में कुछ जानकारी देता है:

चर

कई प्रकार के चर हैं जिनका उपयोग आप यम की कॉन्फ़िगरेशन फ़ाइलों के रखरखाव में आसानी कर सकते हैं। वे नाम, बेसल और कमांड सहित कई विकल्पों के मूल्यों में उपलब्ध हैं।

$ जारीकर्ता यह distroverpkg में सूचीबद्ध पैकेज के संस्करण के मूल्य से प्रतिस्थापित किया जाएगा। यह 'रेडहैट-रिलीज़' पैकेज के संस्करण में चूक करता है।

$ आर्क इसे आपकी वास्तुकला के साथ बदल दिया जाएगा जैसा कि पायथन में os.uname () [4] द्वारा सूचीबद्ध है।

$ बेसक यह यम में आपकी आधार वास्तुकला के साथ बदल दिया जाएगा। उदाहरण के लिए, यदि आपका $ आर्क i686 है तो आपकी $ basearch i386 होगी।

$ YUM0- $ YUM9 इन्हें उसी नाम के शेल पर्यावरण चर के मान से प्रतिस्थापित किया जाएगा। यदि शेल वातावरण चर मौजूद नहीं है, तो कॉन्फ़िगरेशन फ़ाइल चर को प्रतिस्थापित नहीं किया जाएगा।

yumकमांड लाइन उपयोगिता का उपयोग करके इन चर को देखने का एक तरीका है ? मैं 'रेडहैट-रिलीज़' पैकेज के संस्करण का शिकार नहीं करना पसंद करूंगा, या मैन्युअल रूप से पायथन में os.uname () [4] का मान प्राप्त करूंगा।


'हंट डाउन-वर्जन के संस्करण का शिकार' तुच्छ है। cat /etc/redhat-release वास्तव में, cat /etc/system-releaseइसके बजाय का उपयोग करें , क्योंकि यह / / / redhat-release, / etc / centos-release, / etc / oel-release, / etc / <जो भी वैज्ञानिक Linux का उपयोग करता है, के लिए उपयुक्त है।
Xalorous

3
/etc/redhat-release$releaseverचर के रूप में एक ही बात नहीं है । यहाँ सवाल यह है कि इन चरों के स्थान पर यम सबस्टीट्यूट क्या है? प्रोग्राम क्या हो रहा है?
स्टीफन लासवर्स्की

1
hunt रेडहैट-रिलीज़ के संस्करण का शिकार करना ’भी / बिल्ली / आदि / रेडहैट-रिलीज़’ के समान नहीं है। पूर्व एक संस्करण के लिए पूछता है, जबकि बाद वाला पूरी तरह से अविश्वसनीय और असीम रूप से परिवर्तनशील फ़ाइल को देखता है जिसे कभी भी विश्वसनीय नहीं होना चाहिए। rpm -qf /etc/issueविहित तरीका है, और हो गया होता में LSB को छोड़कर SuSE FSStnd बैठकों में मानने नहीं किया विधि। YARLY।
user2066657 19

जवाबों:


71

यदि आप स्थापित करते हैं yum-utils, तो वह आपको दे देगा yum-debug-dumpजो उन चर और अधिक डीबगिंग जानकारी को एक फ़ाइल में लिख देगा। स्टैडआउट को लिखने का कोई विकल्प नहीं है, यह हमेशा कुछ फ़ाइल को लिखेगा जो वास्तव में उतना उपयोगी नहीं है।

यह स्पष्ट रूप से एक महान समाधान नहीं है, इसलिए यहां एक अजगर वन-लाइनर है जिसे आप कॉपी कर सकते हैं और पेस्ट कर सकते हैं जो उन चरों को stdout में प्रिंट करेगा।

python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'

यह CentOS 5 और 6 पर काम करता है, लेकिन 4. yum अजगर में लिखा है, इसलिए yum python मॉड्यूल पहले से ही आपके सर्वर पर है, कुछ भी एक्स्ट्रा इंस्टॉल करने की आवश्यकता नहीं है।

यहाँ यह कैसा दिखता है CentOS 5:

[root@somebox]# python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
{'arch': 'ia32e',
 'basearch': 'x86_64',
 'releasever': '5',
 'yum0': '200',
 'yum5': 'foo'}
[root@somebox]# 

2
yum-debug-dumpमुझे जो चाहिए वो करने लगता है। ऐसा लगता है कि जानकारी %%%%YUM INFOअनुभाग के अंतर्गत है । मैं चीजों को $YUM0-$YUM9प्रकट नहीं कर सकता , लेकिन मैं कभी भी उन चरों का उपयोग नहीं करता।
स्टीफन लासवर्स्की

2
बैश शेल में $ जारीकर्ता का एक साफ प्रदर्शन प्राप्त करने के लिए , इसका उपयोग करें:/usr/bin/python -c 'import yum;yb=yum.YumBase();yb.doConfigSetup(init_plugins=False);print yb.conf.yumvar["releasever"]'
रॉकलाइट

यह केवल पायथन के सिस्टम संस्करण के लिए काम करता है - आप पायथन के अतिरिक्त "ऑल्ट-इनस्टॉल" संस्करण के लिए यह काम कैसे कर सकते हैं?
15

आप क्या करते हैं यदि रिलीज़ करने वाला वास्तव में $ जारीकर्ता स्ट्रिंग है ....
आलसी कोडर

10

उन सभी को प्राप्त करने के लिए आपको पोस्ट किए गए mmckinst जैसे कोड का उपयोग करना होगा , लेकिन यदि आप केवल जांचना चाहते हैं तो $releaseverआप yum version nogroupsRHEL-6 पर चला सकते हैं ।

आरएचईएल -6 में दूसरी बात यह है कि सिर्फ अपना खुद का निर्माण करना है /etc/yum/vars


क्या आप विस्तार से समझा सकते हैं? क्या /etc/yum/varsउपलब्धि पैदा करता है? इसके अलावा, क्या आपको पता है कि क्या यह आरएचईएल 5 से आरएचईएल 6 में बदल गया है?
स्टीफन लासिवस्की

1
आपको कोड लिखना चाहिए जो बिना किसी समस्या के RHEL-5 और RHEL-6 पर काम करता है। संस्करण कमांड RHEL-5 atm में नहीं है। मेरे पास / etc / yum / var (RHEL-6 केवल) के बारे में क्या मतलब है कि आप बस / a / etc / yum / var / foorelease बना सकते हैं ... जिसमें आपका खुद का रिलीज़ डेटा है, या यहां तक ​​कि सिर्फ़ सिस्टम लीवर को ओवरराइड करें / etc / yum / vars / releasever को लिखकर।
20-21

इसके बारे में अधिक जानकारी access.redhat.com/knowledge/docs/en-US/Red_Hat_Enterprise_Linux/…/etc/yum/vars पर देखी
स्टीफन लासिवस्की

10

बस किसी के यहाँ समाप्त होने पर, मेरी तरह, फेडोरा पर dnf के लिए समान उत्तर की तलाश में, मैंने निम्नलिखित अजगर वन-लाइनर की थाह ली:

python3 -c 'import dnf, pprint; db = dnf.dnf.Base(); pprint.pprint(db.conf.substitutions,width=1)'

फेडोरा 24 पर यह इस तरह दिखता है:

{'arch': 'x86_64',
 'basearch': 'x86_64',
 'releasever': '24'}

1
यह खोज से मिला yum variables repo names। यह अब के लिए प्रश्न का उत्तर देता है, dnf के साथ यम के प्रतिस्थापन के साथ। अच्छा कार्य!
bgStack15

4

और नीचे ड्रिलिंग कैसे $ जारीकर्ता सौंपा है:

समारोह _getsysver आरपीएम डेटाबेस क्वेरी की तरह:

rpm -q --provides $(rpm -q --whatprovides "system-release(releasever)") | grep "system-release(releasever)" | cut -d ' ' -f 3

"सिस्टम-रिलीज़ (रिलीजवर)" मूल्य यहाँ परिभाषित किया गया है , और यह yum.ff में distroverpkg द्वारा ओवरराइड किया जा सकता है

यदि क्वेरी ने कोई मान नहीं लौटाया, तो जारीकर्ता '$ जारीकर्ता' के लिए सेट है (उदाहरण के लिए यदि आपने डिस्ट्रोवर्प किलो = सेंटो-रिलीज़ सेट किया है, लेकिन आरपीएम रेडहैट -रिलीज़-सर्वर स्थापित किया है)


0

चर प्रतिस्थापन के परिणाम देखने का एक और तरीका कुछ इस तरह है:

yum-config-manager -c /etc/reposyncb.conf  | grep -i spacewalk

मैं यम चर के साथ छेड़छाड़ कर रहा था कि स्थानीय रेपो बनाने के लिए कौन से स्पेसवॉक ग्राहक का चयन किया जाए और यह देखने के लिए उपयोगी हो कि चर की व्याख्या कैसे की जा रही है।


कूल, हालांकि यह विधि चर की तरह प्रदान करने के लिए प्रतीत नहीं होती है releasever
स्टीफन लासिवस्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.