यम में पैकेज स्थापित किया गया है, तो सही तरीके से कैसे जांचें?


56

मुझे जवाब मिलते रहे जैसे:

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

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

जवाबों:


61

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

$ yum list installed bind

मैं हो रही है Error: No matching Packages to listऔर $?1 देता है, और जब मैं करने की कोशिश की yum list installed bind-libs, $?रिटर्न 0. कौन सा सही अब तक होना चाहिए। क्या मैं सुरक्षित रूप से यह निष्कर्ष निकाल सकता हूं कि पैकेज स्थापित है या नहीं? मुझे rpm -q bindअभी पता नहीं चला । यह आपकी आज्ञा के बराबर भी है?
चेकसम

यह सही है AFAIK, कोड से बाहर निकलें 0 केवल अगर पैकेज स्थापित है।
plasmid87

मुझे लगता है कि यह काम कर रहा है। और मुझे सिंगल लाइन सॉल्यूशन पसंद हैं ।
D

मुझे लगता है कि सही कमांड एक वाइल्डकार्ड के साथ है: yum list installed bind*
एलेजांद्रो एंजेलिको

2
@NoahSussman आप yum -C list installed bindनेटवर्क से बचने की कोशिश कर सकते हैं । यह सभी प्लगइन्स को सक्षम रखता है (सिर्फ अगर आपके पास कुछ भी विदेशी है जो कि yumdb में लुकअप को प्रभावित करता है) और आपको यह भी बताता है कि रेपो पैकेज
किससे

13

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


4
+1 के लिए rpm -q $packageमेरा मानना ​​है कि यह सबसे तेज़ और समाधान है, क्योंकि कुछ भी करने से yumकैश अपडेट (आमतौर पर धीमा) हो सकता है।
एलेक्स एस

यह समाधान (उपयोग rpm) स्वीकृत उत्तर होना चाहिए क्योंकि यह एक स्वच्छ निकास स्थिति देता है और yumसमाधान के रूप में दूरस्थ URL के एक समूह को कॉल करने की आवश्यकता नहीं होती है।
नूह ससमान

1
के लिए बाहर निकलने के कोड @NoahSussman yumऔर rpmसभी उदाहरणों में एक ही व्यवहार मैं के बारे में सोच सकते हैं (0 = स्थापित, 1 = नहीं स्थापित / त्रुटि) का पालन करें तो यह करता है, तो आप एक अलग से बाहर निकलें कोड देख रहे हैं पता करने के लिए उपयोगी होगा। कृपया नेटवर्क एक्सेस से बचने के लिए कैश का उपयोग करने के संबंध में मेरी प्रतिक्रिया पर एक नज़र डालें
plasmid87

@ plasmid87 मुझे नहीं पता था कि मैं yum -Cयम को नेटवर्क होस्ट से संपर्क करने के लिए अतिरिक्त समय खर्च करने से रोक सकता हूं । धन्यवाद, मैं अब देख रहा हूँ कि यम और आरपीएम का उपयोग कैसे किया जा सकता है?
नूह ससमान

9

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

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.

2
हम्म, यह नहीं बता रहा है कि क्या bindयह उपलब्ध होने के बजाय मुझे उपलब्ध / वैध यम पैकेज है?
चेकसम

2
यह स्पष्ट नहीं है, लेकिन अगर स्थापित रेपो टैग के तहत सूचीबद्ध है, तो यह स्थापित है। अन्यथा यह रेपो को सूचीबद्ध करेगा कि यह कहां से उपलब्ध है।
फ्रेड द मैजिक वंडर डॉग

जब मैं चाहता हूं कि दूरस्थ यम रिपॉज से जुड़ने का यह परिणाम है कि मैं देखना चाहता हूं कि मेरे स्थानीय मशीन पर क्या हो रहा है ।
नूह सुस्मान

1

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

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
@NoahSussman आपके स्थानीय मशीन पर वर्तमान में स्थापित सभी पैकेजों को सूचीबद्ध करने के लिए जिनका आप उपयोग कर सकते हैं yum list installed। वहां से आप जिस grepचीज की तलाश कर रहे हैं, उसके लिए अधिक सटीक उत्तर प्राप्त करने के लिए कमांड का उपयोग कर सकते हैं । इसके अलावा, आप आप अपने आदेश है कि जोड़ सकते हैं एक विशिष्ट पैकेज के लिए जाँच करने के लिए चाहते हैं - उदाहरण के लिए: php70wyum list installed php70wया तो स्थापित पैकेज पर जानकारी को सूचीबद्ध करेगा या फिर वापस लौटेगाNo matching Packages to list
domdambrogia

-1

अजगर का उपयोग करके पैकेज की जाँच करने के लिए अजगर कोड का उपयोग करें:

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

क्या यह नहीं होना चाहिए not in?
इबर रोज

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

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


rpm -q bindजॉन के जवाब में दिखाए गए समाधान की तुलना में यह बहुत धीमा है ।
नूह सुस्मान

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