क्या एक नाम-पार्सिंग टूल है जो आधिकारिक आरपीएम टूल पैकेज का हिस्सा है?
मेरे पास फ़ाइलनामों की एक सूची है। प्रत्येक RPM पैकेज का फ़ाइल नाम है। मेरे पास वास्तविक पैकेज नहीं हैं, सिर्फ फ़ाइल नाम हैं। प्रत्येक के लिए मुझे पैकेज का नाम और संस्करण ($ NAME और $ VERSION) निकालने होंगे। मुझे इसकी आवश्यकता है क्योंकि मैं एक ऐसी स्क्रिप्ट लिख रहा हूं जो तब सुनिश्चित करती है कि "yum install $ VERSION" $ VERSION स्थापित करता है। यह एक प्रणाली का हिस्सा है जो पैकेज बनाता है और सत्यापित करता है कि वे ठीक से अपलोड किए गए हैं।
फ़ाइल नाम की सूची इस प्रकार है:
$ cat /tmp/packages.txt
/home/builder/packages/testing-dev/CentOS/6/x86_64/emacs-mercurial-2.8-3.el6.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/emacs-mercurial-el-2.8-3.el6.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/mercurial-2.8-3.el6.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/mercurial-hgk-2.8-3.el6.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/python-redis-2.8.0-2.el6.noarch.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/redis-2.6.16-1.el6.1.x86_64.rpm
/home/builder/packages/testing-dev/CentOS/6/x86_64/sei_dnsmaster-1.0-99.el6.x86_64.rpm
मुझे निम्नलिखित कोड मिला जो BASH फ़ंक्शन है जो कार्य करता है:
function parse_rpm() { RPM=$1;B=${RPM##*/};B=${B%.rpm};A=${B##*.};B=${B%.*};R=${B##*-};B=${B%-*};V=${B##*-};B=${B%-*};N=$B;echo "$N $V $R $A"; }
for i in $(</tmp/packages.txt) ; do
parse_rpm $i
done
यह काम करता हैं। अधिकतर। कुछ अपवाद हैं:
$ parse_rpm CentOS/6/x86_64/sei_dnsmaster-1.0-99.el6.x86_64.rpm
sei_dnsmaster 1.0 99.el6 x86_64
ध्यान दें कि इसे संस्करण ठीक से नहीं मिला (यह 1.0-99 होना चाहिए)
मैं सोच रहा हूँ (1) अगर वहाँ rpmdev पैकेज में एक उपकरण है जो यह सही ढंग से करता है। (2) यदि नहीं, तो क्या मैं आधिकारिक रीजेक्स का उपयोग कर सकता हूं। (३) अजगर उस रेगेक्स के बराबर क्या है?
अग्रिम में धन्यवाद!