कैसे पता करें कि किस यम भंडार से एक पैकेज स्थापित किया गया है?


152

यम द्वारा पैकेज स्थापित करने के बाद (कई रिपॉजिटरी कॉन्फ़िगर किए गए) के साथ, मैं कैसे पता लगा सकता हूं कि यह किस रिपॉजिटरी से स्थापित किया गया है?

यदि मैं चलाता हूं yum info package-name(या yum list package-name), मैं केवल यह देख सकता हूं कि पैकेज "इंस्टॉल" है।


1
बड़ा अच्छा सवाल! मैंने यम-बर्तन स्थापित किए और एक कोशिश की कि इसे रेपोक्वेरी कहा जाए, लेकिन भाग्य नहीं।
शॉन स्टैट

यह भी देखें serverfault.com/questions/90409/… :)
वॉरेन

@warren आपका लिंक उपयोगी नहीं है क्योंकि आपका लिंक "रेपो क्या एक आरपीएम में संग्रहित है" के बारे में एक प्रश्न है, लेकिन यह प्रश्न पूछता है कि "रेपो क्या एक से स्थापित आरपीएम है"। अलग सवाल।
ट्रेवर बॉयड स्मिथ

यदि आप करने के लिए अभ्यस्त हैं, rpm -qa|grep NAMEतो आप यह पता yum list installed|grep NAMEलगाने के लिए कर सकते हैं कि आरपीएम क्या है
ट्रेवर बॉयड स्मिथ

@TrevorBoydSmith - 7 साल पहले, यह करीब था। आज भी ऐसा ही है। कभी नहीं कहा कि यह वही था । बस वह संबंधित था।
वॉरेन

जवाबों:


81

यम-बर्तन स्थापित होने के साथ, रिपॉक्वेरी आपके द्वारा मांगी गई जानकारी प्रदान करेगा (यहाँ 'रिपॉजिटरी होने के नाते')।

└─[$]> repoquery -i cherokee

Name        : cherokee
Version     : 0.99.49
Release     : 1.el5
Architecture: i386
Size        : 8495964
Packager    : Fedora Project
Group       : Applications/Internet
URL         : http://www.cherokee-project.com/
Repository  : epel
Summary     : Flexible and Fast Webserver
Description :
Cherokee is a very fast, flexible and easy to configure Web Server. It supports
the widespread technologies nowadays: FastCGI, SCGI, PHP, CGI, TLS and SSL
encrypted connections, Virtual hosts, Authentication, on the fly encoding,
Apache compatible log files, and much more.

2
रेपोक्वेरी सही काम नहीं करती है, मुझे अलग-अलग पैकेज संस्करण मिलते हैं yum info package_name, फिर यह रिपॉजिटरी को यम के रूप में उसी क्रम में क्वेरी नहीं करता है।
माइक मिलर

कुछ सर्वरों पर यहाँ भी। yum info package_nameस्पष्ट रूप से रेपोक्वेरी की तुलना में अधिक परिणाम देता है। यही कारण है कि स्टैक एक्सचेंज को वोट में लॉक नहीं करना चाहिए।
रिफ्लेक्सिव

8
मुझे Xiong Chiamiov का जवाब सही नहीं लगा। repoquery -i $pkgरेपो देता है जिसमें $pkgसे उपलब्ध है, न कि रेपो जिसमें से $pkgस्थापित किया गया था। मैंने वह कमांड किया और rpm -qi $pkgविभिन्न संस्करण संख्याएँ प्राप्त कीं । rpmकी तुलना में एक पूर्व संस्करण संख्या में हुई repoquery

यह संभव है कि आपकी स्थानीय प्रति आउट-ऑफ-डेट हो, या इसे यम (जैसे --use-mirror) के लिए अतिरिक्त कमांड के साथ स्थापित किया गया था । मुझे नहीं लगता कि हमेशा सही उत्तर मिलना संभव है ।
Xiong Chiamiov

user158844 सही है। यह आपको बताएगा कि किसी दिए गए पैकेज में रिपॉज क्या प्रदान करता है, लेकिन ऐसा नहीं है कि रेपो किसी विशिष्ट पैकेज से आया है। यदि आपने एक निश्चित रेपो से एक पैकेज स्थापित किया है, तो उस रेपो को हटा दिया है, फिर एक और रेपो स्थापित किया है जो समान नाम के साथ एक पैकेज प्रदान करता है, 'रेपोक्वेरी -आई' इस तरह से चल रहा है कि आप नए इंस्टॉल किए गए रेपो को सूचीबद्ध करने वाले पैकेजों में वापस आएंगे, कि वह आपने वास्तव में पैकेज स्थापित किया है। पूछने वाला जानना चाहता है कि स्थापित सॉफ्टवेयर वास्तव में किस पैकेज से आया है। ऐसा नहीं है कि वर्तमान रिपॉजिट समान नाम वाले पैकेज हैं।
टोड वाल्टन

43

यम का क्या संस्करण?

वर्तमान संस्करण पर यदि स्थापित पैकेज सबसे हाल ही में उपलब्ध एक ही संस्करण है, तो जिस रेपो से इसे स्थापित किया गया था वह दिखाया गया है।

$ yum info irssi
Installed Packages
Name       : irssi
Arch       : i586
Version    : 0.8.14
Release    : 1.fc11
Size       : 2.3 M
Repo       : installed
From repo  : updates
Summary    : Modular text mode IRC client with Perl scripting
URL        : http://irssi.org/
License    : GPLv2+
Description: Irssi is a modular IRC client with Perl scripting. Only text-mode
           : frontend is currently supported. The GTK/GNOME frontend is no
           : longer being maintained.

$ yum --version
3.2.23

यदि कोई नया पैकेज उपलब्ध है, तो उसे अलग से दिखाया जाएगा, जिसके नए संस्करण में रेपो दिखाया गया है।


मैं सेंटो 5.3 पर yum 3.2.19 का उपयोग कर रहा हूं और "रेपो से" पंक्ति मौजूद नहीं है।
एल जी।

हां ... मैं इसे 3.2.21 पर परीक्षण कर रहा था, जिसमें कहीं भी यह जानकारी नहीं है। जब मैंने इसे अपने बॉक्स पर किया, जिसमें 3.2.23 था, तो इसने काम किया।
एलेक्स

अब यह सबसे अच्छा समाधान है, लेकिन आरएचईएल / सेंटोस 5.3 के लिए लागू नहीं है। मैं इस समाधान को स्वीकार करता हूं, लेकिन मैं एक और जवाब चुनने के लिए तैयार हूं अगर यह आरएचईएल / सेंटोस 5.3 के लिए भी लागू होगा।
एल जी।

2
यह या तो CentOS 5.5 में एक नहीं है।
माइक मिलर

"प्रतिनिधि से" centos में भी उपलब्ध नहीं है 5.8
sepehr

22

देर से आने पर लेकिन (कम से कम फेडोरा 15 पर) एक ही तरह के प्रश्नों के लिए yumdb का उपयोग कर सकते हैं:

yumdb info 'python*'

और मुझे वास्तव में दिए गए रेपो से पैकेजों को सूचीबद्ध करने के लिए क्या चाहिए:

yumdb search from_repo 'my-*-repo'

यह फेडोरा 14
lg


8

यदि अन्य सभी विफल होते हैं, तो आप मैन्युअल रूप से yumdb का निरीक्षण कर सकते हैं। यह स्थित है /var/lib/yum/yumdbऔर हर स्थापित पैकेज पर विस्तृत जानकारी शामिल है। आप विशेष रूप से में दिलचस्पी होगी from_repo। उदाहरण के लिए, bind-utilsपैकेज के लिए:

# for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i`; done
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_data: 39f7840f93d3d76825a9e8da79cfe0366f7fad68f018a273477aee62cccfa3f4
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/checksum_type: sha256
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/command_line: install bind-utils
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo: updates
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_revision: 1397654451
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/from_repo_timestamp: 1397654759
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/installed_by: 0
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/reason: user
/var/lib/yum/yumdb/b/73ea08770fa666e18c59842bf65fa0f3a0b103d8-bind-utils-9.8.2-0.23.rc1.el6_5.1-x86_64/releasever: 6

केवल अपनी इच्छित जानकारी प्राप्त करने के लिए:

# cat /var/lib/yum/yumdb/b/*bind-utils*/from_repo
updates

बाद के संस्करण और भी अधिक डेटा प्रदान करेंगे; उदाहरण के लिए, EL 7 में सटीक दर्पण और URL जिसमें से पैकेज डाउनलोड किया गया था, यहाँ संग्रहीत है।


+1। लेकिन ऐसा कुछ करना बेहतर है: for i in /var/lib/yum/yumdb/b/*bind-utils*/*; do echo $i: `cat $i` | grep -oP 'from_repo:\ \K.*'; doneजो उपरोक्त उदाहरण में देता है: updates- बहुत अधिक पठनीय!
ग्रेग डबकी

1
@GregDubicki कमांड का उद्देश्य यह था कि क्या चल रहा है और कैसे चीजों को संग्रहीत किया जाता है। यह स्पष्ट रूप से ऐसा करने में विफल रहा: यहां grepकुछ भी करने की आवश्यकता नहीं है, और आप लूप को भी छोड़ सकते हैं। एक बहुत ही सरल cat /var/lib/yum/yumdb/b/*bind-utils*/from_repoआप सभी की जरूरत है।
माइकल हैम्पटन


5

यह देखने के लिए कि रेपो एपल से क्या इंस्टॉल किया गया है: (सेंटोस 5.5 के तहत काम करना चाहिए), अगर आपके पास एपो नाम का कोई रेपो नहीं है, तो यह इंस्टॉल की गई हर चीज को थूक देगा।

repoquery --repoid = epel -a | xargs yum सूची स्थापित की गई


1
यह तब तक काम करता है जब तक कि रिपॉजिटरी में अपडेटेड पैकेज नहीं है। इसलिए आपको इसे इस्तेमाल करने से ठीक पहले yum अपडेट चलाना होगा।
कोडवर्ड

4

यदि पैकेज हाल ही में स्थापित किया गया था, तो आप / var / cache / yum में देख सकते हैं।

उस निर्देशिका के भीतर, प्रत्येक रेपो के लिए एक निर्देशिका होती है, और उस पैकेज निर्देशिका में। तो, आप कुछ ऐसा करेंगे:

find /var/cache/yum -name [package-name]*

हालाँकि, कैश को आपकी /etc/yum.conf फ़ाइल में सक्षम किया जाना है:

cachedir=/var/cache/yum
keepcache=1

ध्यान दें कि yum clean [packages|all]कैशे डायरेक्टरी को स्पष्ट करेगा।

यदि कैश डायरेक्टरी खाली है, तो एक वैकल्पिक तरीका है। द्वारा पढ़ी जाने वाली जानकारी / yum info [package]var/cache/yum/ Isrepoades/primary.xml.gz से आती है

आप फ़ाइल को दर्ज करके देख सकते हैं:

gunzip -d -c /var/cache/yum/[repo]/primary.xml.gz | grep '<name>[package]'

हालांकि, उन मशीनों पर जहां yum info [package]"रेपो:" से प्रदर्शित नहीं होता है, जैसा कि 'थियोथेरेसिव' द्वारा इंगित किया गया है, ऐसा इसलिए है क्योंकि यह फ़ाइल में नहीं है। प्राथमिक रूप से, इसलिए उस जानकारी को प्राप्त करने का कोई तरीका नहीं होगा। इसलिए, यदि पैकेज दो या अधिक प्राथमिक। Xml फ़ाइलों में है, तो आपको सिस्टम पर रेपो प्राथमिकता निर्धारित करनी होगी।


यह समाधान शायद एक विकल्प है (मैं इसे वोट देता हूं), लेकिन मैं एक निश्चित जवाब की तलाश में हूं।
एल जी।

4

Swoogan
On RedHat और CentOS के आधार पर और उत्तर एक कर सकता है

sudo grep -ir PACKAGE_NAME /var/cache/yum/

परिणाम कुछ इस तरह दिखना चाहिए

Binary file /var/cache/yum/REPOSITORY_NAME/primary.xml.gz.sqlite matches

जहाँ रिपॉजिटरी_नाम वह रिपॉजिटरी है जहाँ आपका पैकेज मिल सकता है, और यह शायद पहले एक सूची में स्थापित किया गया था (yum रिपोलिस्ट देखें)


1

क्या वह जानकारी कहीं भी कैद है? पैकेज में वह जानकारी नहीं है, और पैकेज मिलने के बाद यम को इसकी परवाह नहीं है। आप शायद यह पता लगा सकते हैं कि किस पैकेज में क्या है और फिर यह निर्धारित करें कि किसकी प्राथमिकता है।


यह समाधान शायद एक विकल्प है (मैं इसे वोट देता हूं), लेकिन केवल हाल ही में स्थापित पैकेज के लिए, क्योंकि मैं रिपॉजिटरी और उनकी प्राथमिकता को बदल सकता हूं।
एल जी।

1

एक महान समाधान नहीं है, लेकिन मैंने पाया कि यम सूची उपलब्ध आपको दिखाएगी कि प्रत्येक पैकेज का सबसे अद्यतित संस्करण कहां उपलब्ध है, उदाहरण के लिए:

यम सूची उपलब्ध | grep gstreamer

PackageKit-gstreamer-plugin.x86_64 0.3.16-1.fc10          updates               

Bluez-gstreamer.i386 4.30-2.fc10 अपडेट
gstreamer.i386 0.10.21-2.fc10 फेडोरा
gstreamer-devel.i386 0.10.21-2.fc10 फेडोरा
gstreamer-devel.x86_64 0.10.21-2.fc10 फेडोरा
gstreamer- प्लग-इन-बुरा-devel.i386 0.10.9-1.fc10 rpmfusion मुक्त
gstreamer-प्लगइन्स-बुरा-devel.x86_64 0.10.9-1.fc10 rpmfusion मुक्त

तो आप अपने पैकेज पर उपलब्ध एक यम सूची बना सकते हैं, फिर अपने इंस्टॉल किए गए संस्करण की तुलना यम सूची स्थापित करने के लिए कर सकते हैं, और इसका एक अच्छा विचार है कि यह किस रेपो से आया है यदि संस्करण मेल खाते हैं।


यह सच है केवल पैकेज अभी तक स्थापित नहीं है।
एल जी।

हालांकि यह ठीक से ओपी प्रश्न का उत्तर नहीं देता है, यह मेरे लिए बहुत उपयोगी था क्योंकि यह सेंटमॉस 5.5 में सिर्फ यम और कोई अन्य बर्तन के साथ काम नहीं करता है, और आप कर सकते हैं: 1. पैकेज को अनइंस्टॉल करें फिर यह देखने के लिए कि रेपो फिर से कहाँ पुनर्स्थापित हुआ है , या 2. स्थापित पैकेज के बिना एक अलग मशीन पर क्वेरी।
प्रजनक

1

आप वर्बोज़ फ़्लैग को "yum info" में जोड़ सकते हैं:

yum info -v <package_name>

इंस्टॉलेशन रिपॉजिटरी "रेपो से" आउटपुट के तहत होगी।


यह एकमात्र समाधान प्रतीत होता है जिसमें यम-बर्तन स्थापित करने की आवश्यकता नहीं होती है।
मार्क एडिंगटन

यह केवल मेरे लिए "इंस्टॉल" को सूचीबद्ध करता है।
मेंढकश्रृंग

1

इसलिए मुझे पता है कि यह एक पुराना सवाल है - लेकिन यह Google खोज पर आता है कि मैं क्या देख रहा था।

उपयोग किए गए रेपो की एक अद्वितीय सूची प्राप्त करने के लिए एक विधि भी है:

# repoquery -ai | grep 'Repository  : ' | sort | uniq

यह उन रिपॉजिटरी को सूचीबद्ध करेगा जिनके पास पैकेज स्थापित हैं।


1

किसी भी अतिरिक्त उपकरण को स्थापित किए बिना सबसे सरल और सबसे सरल दृष्टिकोण, एक्सट्रूज़न की जानकारी को निकालना या आउटपुट करना बस है:

yum list installed [package name]

तीसरा कॉलम उस रिपॉजिटरी की आईडी प्रदान करेगा जिसे पैकेज से स्थापित किया गया था।

यह grep का उपयोग करते हुए मूल प्रश्न पर एक टिप्पणी में उल्लेख किया गया था, लेकिन यह आवश्यक नहीं है। आप yumफ़िल्टर करने के लिए सीधे पैकेज का नाम दे सकते हैं ।



-1

सबसे आसान तरीका यह है:

rpm -qa --qf '%{NAME} %{VENDOR}\n'

अधिक टिप्स और ट्रिक्स यहाँ उपलब्ध हैं: http://wiki.centos.org/TipsAndTricks/YumAndRPM


2
इस तरह (एक पाइप whith grep -i पैकेज नाम जोड़कर) मैं विक्रेता को खोजता हूं, लेकिन रिपॉजिटरी को नहीं।
एल जी।

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