公式のRPMツールパッケージの一部である名前解析ツールはありますか?
ファイル名のリストがあります。それぞれが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)そうでない場合、使用できる公式の正規表現はありますか。(3)その正規表現に相当するpythonは何ですか?
前もって感謝します!