रेपो "X" से स्थापित सभी RPM संकुल को सूचीबद्ध करें


44

मैं उन सभी RPM पैकेजों की सूची कैसे प्राप्त कर सकता हूं जो किसी विशेष रेपो (उदाहरण के लिए, "एपेल)) से मेरे सिस्टम पर स्थापित किए गए हैं?

जवाबों:


45

सेंटोस / आरएचईएल / फेडोरा 22 या उससे पहले

yum list installed | grep @epel

फेडोरा 23 या बाद का

dnf list installed | grep @epel

8
यह काम नहीं करेगा। यम पाइप को लाइनों का उत्पादन करेगा जो बहुत लंबा होने पर टूट जाएगा। इसलिए grep का इनपुट ज्यादातर प्रति पंक्ति एक लाइन है, लेकिन यह दो लाइनें हो सकती हैं। यम "whizbanger.x86_64 ___ 3.8.4-2.el6 _______________ @ पेपल" पारित कर सकता है। (रिक्त स्थान के रूप में अंडरस्कोर की कल्पना करें।) "@epel" इनपुट grep देखता है की अगली पंक्ति पर है। इसलिए grep उस लाइन को कुछ भी नहीं बल्कि "@epel" के साथ आउटपुट करने जा रहा है, लेकिन पैकेज नाम के साथ पूर्ववर्ती लाइन नहीं।
टोड वाल्टन

Bugzilla.redhat.com/show_bug.cgi?id=1525645 तय होने तक आपको उन कमांड को रूट के रूप में चलाने की आवश्यकता हो सकती है।
१17 बजे

यम कमांड काम नहीं करता है अगर एक रिपोस समस्या है। मुझे यह देखने के लिए इस सूची की आवश्यकता है कि क्या मैं मुद्दों के साथ रेपो को अक्षम करना चाहता था।
Jayen

@ वॉट्सन वाटसन मुझे पता है, यह एक हैक है, लेकिन "एक्सपोर्ट COLUMNS = 999 yum ..." के बारे में क्या है
मैसिमो

क्या वह काम करता है, @ मासीमो? यह एक अच्छा समाधान होगा। मुझे यह Unix StackExchange प्रश्न भी मिला: unix.stackexchange.com/questions/308731/…
Todd Walton

17

RHEL6 के अनुसार, जैसा कि इस स्टैकओवरफ़्लो उत्तर में सुझाया गया है , इसके साथ ऐसा करने का एक अधिक गहन तरीका है yumdb:

yumdb search from_repo REPOID*

रिपॉइड वाइल्ड कार्ड लेता है।

सुंदर प्रिंट

यदि हम आउटपुट को धोखा देने और पाइप करने जा रहे हैं, तो हम सुंदर प्रिंट प्रभाव भी प्राप्त कर सकते हैं। यहाँ एक का उपयोग कर रहा हैawk

yumdb search from_repo REPOID* |awk -F"\n" '{ RS=""; print $1 }'

का उपयोग कर egrepयाgrep -e

yumdb search from_repo REPOID* |egrep -v '(from_repo|^$)'

list_ALL_AVAILABLE_from_repo

एक निर्दिष्ट भंडार में सभी उपलब्ध पैकेजों को सूचीबद्ध करने के लिए , यह करें:

repoquery -a --repoid=REPONAME

बस एक साइड-नोट: निर्दिष्ट रेपो से सभी पैकेजों को सूचीबद्ध करने के लिए,repoquery -qa --repoid=REPONAME
ILMostro_7

2
यह भी एक बेहतरीन जवाब है। आउटपुट स्वीकृत उत्तर से अधिक लंबा है, लेकिन इसे अच्छे तरीके से स्वरूपित किया गया है।
रॉटिनेटर

सरल किया जा सकता है repoquery -a --repoid=REPONAMEक्योंकि मैन पेज -qविकल्प के अनुसार rpmquery संगतता के लिए है, कुछ भी नहीं करता है।
रॉकलाईट

@Rockallite सही है; dnf के लिए, -qaवास्तव में विफल रहता है। मैं टिप्पणी को पहले से हटाए जाने के कारण नहीं बढ़ा सकता :( मैं यह प्रतिबिंबित करने के लिए उत्तर अपडेट कर रहा हूं।
ILMostro_7

11
dnf repo-pkgs <repoid> list installed

टिप्पणियाँ

ऊपर दिए गए कमांड, डीएनएफ का उपयोग करने वाले पैकेजों को सूचीबद्ध करने के लिए करता है <repoid>। नोट repo-pkgsसिर्फ एक उपनाम है repository-packages

से manपृष्ठों:

man dnf | grep "repository-packages.*list.*installed" -A 1

आगे की पढाई:

man dnf

3

ग्रीम्पिंग यम का उत्पादन सबसे स्पष्ट तरीका है:

yum list installed | grep @epel

हालाँकि, आप अतिरिक्त पैकेज गुण प्रदर्शित नहीं कर सकते हैं और स्क्रिप्ट के साथ पार्स करना मुश्किल है। उपकरण repoqueryपैकेज से yum-utilsउपकरण है, लेकिन यह डिफ़ॉल्ट रूप से स्थापित नहीं है।

repoquery -a --installed --qf "%{ui_from_repo} %{name}" | grep '^@epel'

और अधिक जटिल उदाहरण:

repoquery -a --installed --qf "%-20{ui_from_repo} %-30{name} %-7{arch} %{epoch}:%-12{version} %-4{release}" | grep '^@epel'

2

आरएचईएल सर्वर 7.5 (मैपो)

yum repo-pkgs <repoid> list installedके रूप yumdb search from_repo <repoid>में एक ही जानकारी को पुनः प्राप्त करने के लिए इस्तेमाल किया जा सकता है , लेकिन एक अलग प्रारूप में।

# yum help repo-pkgs
repo-pkgs <repoid> <list|info|install|remove|upgrade|reinstall*|remove-or-*> [pkg(s)]

Treat a repo. as a group of packages, so we can install/remove all of them

aliases: repo-packages, repository-pkgs, repository-packages

नमूना epelआउटपुट:

# yumdb search from_repo epel
htop-2.2.0-1.el7.x86_64
    from_repo = epel

supervisor-3.1.4-1.el7.noarch
    from_repo = epel


# yum repo-pkgs epel list installed
Installed Packages
htop.x86_64            2.2.0-1.el7          @epel
supervisor.noarch      3.1.4-1.el7          @epel

1

आप Vendorस्थापित आरपीएम के हेडर की जांच कर सकते हैं ।

यह उदाहरण वीडियोलैन भंडार से सभी पैकेजों को सूचीबद्ध करता है:

 rpm -q -a --qf "%{Name}:%{Vendor}\n" \
     | grep -F ":VideoLAN Project (http://www.videolan.org)"

जाहिर है, आपको यह निर्धारित करने की आवश्यकता है कि क्या Vendorआपकी रिपॉजिटरी का हेडर विभिन्न रिपॉजिटरी के बीच अद्वितीय है।


3
वेंडर और रेपो के बीच एक-से-एक मैपिंग नहीं है, और कुछ मामलों में, वेंडर स्ट्रिंग रिक्त है।
लोरिन होचस्टीन

1

उन लोगों के लिए जो केवल लापता रिपोजिटरी ढूंढना चाहते हैं:

yum list installed | awk '{print $3}' | sort | uniq

आपको उन सभी रिपॉजिटरी को वापस करना चाहिए जहां आपके पास पैकेज स्थापित हैं।

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