प्रारूप "यम प्रदान करता है" आउटपुट


1

मैं एक छोटा सा प्रोग्राम लिख रहा हूं, जो कॉन्फ़िगरेशन फ़ाइलों को rpm के रूप में पैकेज करता है, और यह उन पैकेजों की स्थापना / उन्नयन को संभालने के लिए% ट्रिगर की एक श्रृंखला डालता है जो एक ही फ़ाइल की प्रतिलिपि / संस्करण लाते हैं।

मैं अटक रहा हूँ कि yum आउटपुट देने की कोशिश कर रहा है। डिफ़ॉल्ट आउटपुट है:

# yum provides */named.conf -q
32:bind-chroot-9.8.2-0.17.rc1.el6_4.6.i686 : A chroot runtime environment for the ISC BIND DNS server, named(8)
Repo        : base
Matched from:
Filename    : /var/named/chroot/etc/named.conf


sblim-cmpi-dns-test-1.0-1.el6.i686 : SBLIM WBEM-SMT Dns - Testcase Files
Repo        : base
Matched from:
Filename    : /usr/share/sblim-testsuite/named.conf

लेकिन मुझे केवल पैकेज नाम की आवश्यकता है। का उपयोग करना cutएक अच्छा विचार नहीं लगता है। सीमांकक होगा - लेकिन पैकेज नाम के बीच में - के साथ कई पैकेज हैं।

आदर्श रूप में, मुझे rpm प्रश्नों के लिए आउटपुट की आवश्यकता होती है

rpm -qa --queryformat "%{NAME}\n"
make
rubygem-multi_json
attr
ncurses-base
rubygem-rack-test
strace
rubygem-polyglot
gpg-pubkey
rubygem-journey
tzdata
...

ऐसा लगता है कि बिल्कुल उपलब्ध नहीं है। न ही यह फेडोरा के लिए प्रतिस्थापन है, dnf।
वॉनब्रांड

जवाबों:


0

यदि आप पैकेज से कमांड के yumपक्ष में खाई करते हैं तो आप अधिक खुश होंगे । इसके साथ, आप बस चलाते हैं:repoqueryyum-utils

$ repoquery --whatprovides '*/named.conf' --qf '%{NAME}'

जो, मेरे सिस्टम पर, रिटर्न:

bind
sblim-cmpi-dns-test
bind
bind-chroot
rubygem-openshift-origin-dns-bind
system-config-bind
logwatch
bind-chroot

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

0

मैंने कई यम आदेशों, sed, grep और cut का उपयोग करके इस समस्या के लिए एक बदसूरत समाधान तैयार किया है:

PKLIST=`yum provides -q */$FILE | grep -v 'Repo\|Matched\|Filename' | sed "s/32://g" | cut -d':' -f1 | sed "s/ //g" | grep -e '^$' -v`
array=($PKLIST)
arr2=()
for i in "${array[@]}"
do
        x=`yum info -C $i | grep "Name        :" | sed "s/Name        : //g"`
        arr2+=($x)
done

फिर मैंने सरणी से डुप्लिकेट हटा दिए

arr3=$(echo "${arr2[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' ')

मेरे वर्तमान बैश ज्ञान के साथ यह सबसे अच्छा मैं कर सकता था।

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