RPM निर्भरता कैसे सूचीबद्ध करें?


36

हमारा प्रोडक्शन सर्वर CentOS रिलीज़ 5.2 (फाइनल) चला रहा है।

मैं पहले से स्थापित RPM पैकेज की सभी निर्भरताओं को कैसे देख / प्राप्त / सूची कर सकता हूँ ?

उदाहरण के लिए: SQLite v3.3.6 पहले से ही सर्वर में स्थापित है। मैं इस विशेष पैकेज की सभी निर्भरताएँ देखना चाहता हूँ।

यहाँ कमांड का आउटपुट है: rpm -qa |grep sqlite

python-sqlite-1.1.7-1.2.1
sqlite-3.3.6-2
sqlite-3.3.6-2

इसके अलावा, sqlite-3.3.6-2यहां 2 प्रविष्टियों की सूची क्यों है?

जवाबों:


28
  1. rpm -q --requires somepackagehere

  2. एक i?86पैकेज है, दूसरा x86_64पैकेज है।


मेरा OS 64-बिट है। क्या 2 आर्किटेक्चर पैकेज एक ही सर्वर में मौजूद हो सकते हैं? एक ही समय में 2 आर्किटेक्चर पैकेज होने का उद्देश्य / आवश्यकता क्या है?
ज्ञानम

2
आरएच- / फेडोरा-व्युत्पन्न डिस्ट्रोस मल्टीकार का समर्थन करते हैं , जिससे "अलग-अलग-समान-समान-पर्याप्त" आर्क से संबंधित कई पैकेज किसी भी आर्क के लिए बनाए गए निष्पादनयोग्य को चलाने की अनुमति देने के लिए सह-अस्तित्व में हो सकते हैं।
इग्नासियो वाज़केज़-अब्राम्स

दुर्भाग्य से इसके लिए पैकेज की आवश्यकता पहले से ही स्थानीय रूप से स्थापित की जानी चाहिए: \
rogerdpack

@rogerdpack: ठीक है, हाँ। ठीक यही सवाल पूछा गया।
इग्नासियो वाज़केज़-अब्राम्स

हाँ दुर्भाग्य से Google "हर कोई सीधे यहाँ" भेजता है यदि आप Google "RPM निर्भरता" की सूची बनाते हैं - तो Google ने इस प्रश्न को समाप्त कर दिया है! भले ही, किसी भी अनुयायी के लिए davey का जवाब देखें कि वह कार्यक्षमता चाहता है।
रोज़गार पैक

34

yum deplistआदेश तुम्हें दिखाता हूँ जो आरपीएम की निर्भरता कर रहे हैं, यहाँ के लिए एक उदाहरण है expect(यह भले ही आप अभी तक पैकेज स्थानीय रूप से स्थापित नहीं है काम करेंगे) पैकेज:

# yum deplist expect
..
..
package: expect.i386 5.43.0-5.1
 dependency: libc.so.6
  provider: glibc.i686 2.5-49
  provider: glibc.i686 2.5-49
 dependency: libtcl8.4.so
  provider: tcl.i386 8.4.13-4.el5

यह कमांड काम नहीं कर रहा है। क्या मुझे कुछ याद आ रहा है या आपकी आज्ञा में कुछ कमी है?
ज्ञानम

क्षमा करें कि एक स्थान गायब था, कमांड yum deplist पैकेज है।
davey

1
+1 यहाँ YUM का उपयोग अच्छा है, यह पुनरावर्ती है और 'perl (COnfig :: Tiny)' या 'libc.so (64bit)' जैसी चीजों को हल करता है।
djhaskin987

6

इग्नासियो के जवाब के बाद, आप निम्नलिखित करके संकुल की विशिष्ट वास्तुकला देख सकते हैं:

$ rpm -qa --queryformat "%{NAME} %{ARCH}\n" sqlite
sqlite i686

मेरे मामले में, मेरे पास केवल एक है, i686 पैकेज ... लेकिन आप इस तरह से पैकेज के साथ जुड़े आर्किटेक्चर प्राप्त कर सकते हैं। यदि आप रुचि रखते हैं कि आप - thequeryformat से और क्या प्राप्त कर सकते हैं, तो rpm --querytagsउपलब्ध चर की सूची देखने के लिए जारी करें ।


1
+1 आर्किटेक्चर-वार द्वारा लिस्टिंग पर आपकी कमांड भी मददगार है।
ज्ञानम nan

3

मेरे पास त्वरित शेल स्निपेट है जो सभी स्थापित पैकेजों को उनकी निर्भरता के साथ प्रिंट करता है:

for i in `rpm -qa` ; do echo "Package [$i]:"; rpm -q --requires $i ; echo ; done

3

लोगों ने पहले ही जवाब दे दिया है:

  1. rpm -q --requires PKG
  2. yum -q deplist PKG

हाँ, या तो rpmया yumकाम करता है और सही ढंग से सवाल का जवाब। के बीच मुख्य अंतर rpmऔर yumहै कि यम भी पता चलता है क्या संकुल आप स्थापित कर सकते हैं पुस्तकालय और / या फ़ाइल की आवश्यकताओं को पूरा करने के लिए है। दुर्भाग्य से, यदि पैकेज स्थापित नहीं है, तो इनमें से कोई भी तरीका उपयोगी नहीं है। चूंकि मूल पोस्टर ने पहले से ही निर्दिष्ट किया था कि आप जिस पैकेज की जांच कर रहे हैं वह स्थापित है, यह एक म्यूट बिंदु है।

यदि आपके पास पैकेज स्थापित नहीं है तो क्या होगा? yumअभी भी इस्तेमाल किया जा सकता है, लेकिन अप्रत्यक्ष रूप से। आप इंस्टॉल ऑपरेशन रद्द करके मॉक इंस्टॉल कर सकते हैं।

printf n  |  yum install PKG  |  grep -- "---> Package"

यहाँ एक उदाहरण है:

printf n  |  yum install php  |  grep -- "---> Package"
---> Package php.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-cli.x86_64 0:5.4.16-45.el7 will be installed
---> Package php-common.x86_64 0:5.4.16-45.el7 will be installed
---> Package libzip.x86_64 0:0.10.1-8.el7 will be installed

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