आरपीएम के साथ क्या कम हो रहा है, और मैं आरपीएम के बिना उस पाठ को कैसे प्राप्त कर सकता हूं


12

जब मैं निष्पादित करता हूं less package.rpm, तो मुझे पैकेज के बारे में मेटा जानकारी के सभी प्रकार दिखाता है। क्या वास्तव में कम कर रहा है - क्या यह मेटा जानकारी निकालने में सक्षम होने के लिए कोड में बनाया गया है, या एक आरपीएम को इस तरह से संरचित किया गया है कि पहला भाग सिर्फ एक पाठ फ़ाइल की तरह दिखता है?

मैं पूर्व को मानूंगा, क्योंकि headयहां इतना मददगार नहीं है। लेकिन असली सवाल करने के लिए : यदि मैं grepइस मेटा डेटा के माध्यम से कम दिखाऊंगा, तो मैं इसे कैसे पूरा कर सकता हूं?

जवाबों:


23

यदि आप lessमैन पेज के माध्यम से ब्राउज़ करते हैं , तो आपके lessपास एक INPUT PREPROCESSOR फीचर होगा।

echo $LESSOPENइस प्रीप्रोसेसर के स्थान को देखने के लिए, और इसकी सामग्री को देखने के लिए less/ vim/ catका उपयोग करें ।

मेरी मशीन पर यह प्रीप्रोसेसर है /usr/bin/lesspipe.shऔर इसमें rpms के लिए निम्नलिखित शामिल हैं:

*.rpm) rpm -qpivl --changelog -- "$1"; handle_exit_status $?

वास्तव में, lessफ़ाइल को खोलने के लिए हाथ बंद होता है rpm, और आपको इसके आउटपुट का पृष्ठांकन दिखाता है।

जाहिर है, इस जानकारी के माध्यम से, सीधे आरपीएम के उत्पादन को सीधे करने के लिए:

grep "foo" < <(rpm -qpivl --changelog -- bar.rpm)

या सामान्य तौर पर (धन्यवाद ऑरेंजडॉग)

grep "foo" < <(lesspipe.sh bar.rpm)

नोट: $LESSOPEN बस के स्थान को पकड़ नहीं है lesspipe.sh- यह एक के साथ शुरू होता है |और %sइसे सीधे लागू करने के साथ समाप्त होता है जिसके परिणामस्वरूप त्रुटियां होंगी।


1
क्यों नहीं grep "foo" < <($LESSOPEN bar.rpm)? या शायद बस भी $LESSOPEN bar.rpm | grep "foo"
jpmc26

4

अगर मैं इस मेटा डेटा के माध्यम से कम दिखाना चाहूंगा, तो मैं इसे कैसे पूरा कर सकता हूं?

बहुत सरलता से; यदि आप उदाहरण के लिए "संस्करण" पर पकड़ बनाना चाहते हैं:

less your.rpm | grep "Version"

ध्यान दें कि कम rpmकमांड का उपयोग कर रहा है ; तो बेहतर कम का उपयोग कर छोड़ें; और rpmकमांड का उपयोग करें; पसंद:

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