सवाल यम में पैकेज स्थापित होने पर सटीक रूप से जांच कैसे करें?


मुझे जवाब मिलते रहेंगे:

yum list installed | grep bind

या

rpm -qa | grep bind

लेकिन यह सटीक नहीं है क्योंकि मुझे इन जैसे कुछ अन्य बाध्य पैकेजों की सूची मिल रही है:

bind-utils-9.8.2-0.17.rc1.el6_4.5.x86_64
rpcbind-0.2.0-11.el6.x86_64
bind-libs-9.8.2-0.17.rc1.el6_4.5.x86_64
samba-winbind-3.6.9-151.el6.x86_64
samba-winbind-clients-3.6.9-151.el6.x86_64
ypbind-1.20.4-30.el6.x86_64

वह मैं नहीं चाहता था। इसके बजाय मैं सटीक रूप से जांचना चाहता हूं कि बाइंड कोर पैकेज स्थापित किया गया है या नहीं। उदाहरण के लिए। bind.x86_64 32:9.8.2-0.17.rc1.el6_4.6

मैं कुछ ऐसा करने की उम्मीद कर रहा था:

yum check installed bind

लेकिन उम्मीद है कि कोई प्रकाश ला सकता है।


50
2017-12-03 15:18


मूल




जवाब:


क्या आपने यह कोशिश की है?

$ yum list installed bind

53
2017-12-03 15:24



मैं ला रहा हूँ Error: No matching Packages to list तथा $? 1 लौटाता है, और जब मैंने कोशिश की yum list installed bind-libs, $? रिटर्न 0. जो अब तक सही होना चाहिए। क्या मैं सुरक्षित रूप से निष्कर्ष निकाल सकता हूं कि आपका आदेश सटीक रूप से एक पैकेज स्थापित है निर्धारित है? मुझे पता चला rpm -q bind अभी। यह आपके आदेश के बराबर भी है? - checksum
यह सही AFAIK है, अगर पैकेज स्थापित है तो बाहर निकलें कोड 0। - plasmid87
मुझे लगता है कि यह काम कर रहा है। और मुझे एकल लाइन समाधान पसंद हैं .: डी - checksum
मुझे लगता है कि सही आदेश वाइल्डकार्ड के साथ है: yum list installed bind* - Alejandro Angelico
@ नोहाससमैन आप कोशिश कर सकते हैं yum -C list installed bind नेटवर्क से बचने के लिए। यह सभी प्लगइन्स सक्षम करता है (बस अगर आपके पास कुछ विदेशी है जो yumdb में लुकअप को प्रभावित करता है) और आपको यह भी बताता है कि पैकेज को रेपो से इंस्टॉल किया गया था - plasmid87


इस क्वेरी को जारी करने का एक आसान तरीका है: rpm -qa | grep bind या rpm -q bind। यदि आप पैकेज नाम के बारे में पूरी तरह से सुनिश्चित नहीं हैं तो पूर्व सबसे अच्छा है।


12
2017-12-03 15:36



के लिए +1 rpm -q $package मेरा मानना ​​है कि यह सबसे तेज़ और समाधान है, जैसा कि कुछ भी कर रहा है yum एक कैश अपडेट को मजबूर कर सकता है (आमतौर पर धीमा)। - Alex S
यह समाधान (उपयोग कर रहा है rpm) स्वीकार्य उत्तर होना चाहिए क्योंकि यह एक साफ निकास स्थिति देता है और दूरस्थ URL के समूह को कॉल करने की आवश्यकता नहीं होती है yum समाधान करते हैं। - Noah Sussman
@NoahSussman के लिए बाहर निकलने के कोड yum तथा rpm उन सभी उदाहरणों में एक ही व्यवहार का पालन करें जो मैं सोच सकता हूं (0 = स्थापित, 1 = स्थापित / त्रुटि नहीं) इसलिए यह जानना उपयोगी होगा कि आप एक अलग निकास कोड देख रहे हैं या नहीं। नेटवर्क पहुंच से बचने के लिए कैश का उपयोग करने के संबंध में उपर्युक्त मेरी प्रतिक्रिया देखें - plasmid87
@ plasmid87 मुझे नहीं पता था कि मैं उपयोग कर सकता था yum -C नेटवर्क होस्ट्स से संपर्क करने वाले सभी अतिरिक्त समय खर्च करने से रोकने के लिए। धन्यवाद, अब मैं देखता हूं कि कैसे यम और आरपीएम का उपयोग एक दूसरे के रूप में किया जा सकता है !! - Noah Sussman


इस आदेश के परिणामों को पार्स करना सबसे पूरा उत्तर है। आपको सटीक पैकेज नाम जानने की आवश्यकता होगी।

yum info bind

Loaded plugins: refresh-packagekit, rhnplugin
This system is receiving updates from RHN Classic or RHN Satellite.
Installed Packages
Name        : bind
Arch        : x86_64
Epoch       : 32
Version     : 9.8.2
Release     : 0.17.rc1.el6_4.6
Size        : 7.3 M
Repo        : installed
From repo   : rhel-x86_64-workstation-6
Summary     : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) server
URL         : http://www.isc.org/products/BIND/
License     : ISC
Description : BIND (Berkeley Internet Name Domain) is an implementation of the DNS
        : (Domain Name System) protocols. BIND includes a DNS server (named),
        : which resolves host names to IP addresses; a resolver library
        : (routines for applications to use when interfacing with DNS); and
        : tools for verifying that the DNS server is operating properly.

9
2017-12-03 15:27



हम्म, वह मुझे नहीं बता रहा है bind यह स्थापित करने के बजाय मुझे यह कहने के बजाय उपलब्ध / वैध यम पैकेज है? - checksum
यह स्पष्ट नहीं है, लेकिन अगर स्थापित रेपो टैग के तहत सूचीबद्ध है, तो यह स्थापित है। अन्यथा यह रेपो सूचीबद्ध करेगा जो यह उपलब्ध है। - Fred the Magic Wonder Dog
इसके परिणामस्वरूप रिमोट यम रिपोज़ से जुड़ने के परिणामस्वरूप जब मैं चाहता हूं कि मेरे साथ क्या हो रहा है स्थानीय मशीन। - Noah Sussman


सबसे अच्छा एक लाइनर मैं ऐसा करने के लिए आया हूं (जो स्क्रिप्ट में तेज़ी से उपयोग करने के लिए बहुत अच्छा है) है:

yum info <package_name> | grep Repo | awk '{ print $3 }'

उदाहरण के लिए: यदि मेरे पास वर्तमान में है git स्थापित:

yum info git | grep Repo | awk '{ print $3 }'

यह वापस आ जाएगा installed

अगर मैं वर्तमान में हूं नहीं है git स्थापित किया गया है कि पिछला कमांड वापस आ जाएगा: base/7/x86_64 जो वर्तमान के लिए उपलब्ध स्थापना है git


1
2018-01-11 18:38



इसके परिणामस्वरूप रिमोट यम रिपोज़ से जुड़ने के परिणामस्वरूप जब मैं चाहता हूं कि मेरे साथ क्या हो रहा है स्थानीय मशीन। - Noah Sussman
@NoahSussman वर्तमान में आपके स्थानीय मशीन पर स्थापित सभी संकुल सूचीबद्ध करने के लिए आप उपयोग कर सकते हैं yum list installed। वहां से आप इसका उपयोग कर सकते हैं grep आप जो खोज रहे हैं उसके लिए एक और सटीक उत्तर पाने के लिए आदेश। इसके अलावा यदि आप एक विशिष्ट पैकेज की जांच करना चाहते हैं तो आप इसे अपने आदेश में जोड़ सकते हैं - पूर्व: php70w। yum list installed php70w या तो स्थापित पैकेज या वापसी पर जानकारी सूचीबद्ध करेगा No matching Packages to list - domdambrogia


पाइथन कोड का प्रयोग यह जांचने के लिए करें कि यम का उपयोग करके अजगर में एक पैकेज स्थापित है या नहीं:

def is_installed(package_name):
    return "not installed" in commands.getstatusoutput("rpm -q " + package_name)[1]

0
2017-09-01 18:38



यह नहीं होना चाहिए not in ? - Inbar Rose


yum list installed bind >/dev/null ; echo $?

यदि परिणाम 0 (शून्य) है तो पैकेज स्थापित है


-2
2018-04-26 20:25



यह तुलना में बहुत धीमी है rpm -q bind जॉन के जवाब में दिखाया गया समाधान। - Noah Sussman
हालांकि शायद उपयोग कर रहे हैं yum -C ... तेज़ होगा - Noah Sussman