এমন কোনও নাম-পার্সিং সরঞ্জাম রয়েছে যা অফিসিয়াল আরপিএম সরঞ্জাম প্যাকেজের অংশ?
আমার কাছে ফাইলের নামের একটি তালিকা রয়েছে। প্রতিটি হ'ল একটি RPM প্যাকেজের ফাইল নাম। আমার কাছে আসল প্যাকেজ নেই, কেবলমাত্র ফাইলের নাম। প্রত্যেকের জন্য আমার প্যাকেজের নাম এবং সংস্করণটি বের করতে হবে ($ NAME এবং ERS সংস্করণ)। আমার এটির কারণটি হ'ল আমি এমন একটি স্ক্রিপ্ট লিখছি যা তখন নিশ্চিত হয়ে যায় যে "ইয়াম ইনস্টল $ সংস্করণ" ইনস্টল করে $ সংস্করণ। এটি এমন একটি সিস্টেমের অংশ যা প্যাকেজগুলি তৈরি করে এবং সেগুলি সঠিকভাবে আপলোড করা হয়েছে তা যাচাই করে।
ফাইলের নামের তালিকাটি দেখে মনে হচ্ছে:
$ 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
আমি নিম্নলিখিত কোডটি পেয়েছি যা একটি বেস ফাংশন যা কাজটি করে:
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) আরপিএমদেব প্যাকেজে কোনও সরঞ্জাম আছে যা এটি সঠিকভাবে করে। (২) যদি না হয়, তবে আমি ব্যবহার করতে পারি এমন কোনও অফিসিয়াল রেজেেক্স রয়েছে কি? (3) সেই রেজেক্সের অজগর সমতুল্য কী?
আগাম ধন্যবাদ!