- - PR -
RPMファイル名からパッケージ名・バージョンを抽出
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-01-18 15:42
お世話になっております。
1年ほど疎遠になっておりましたが、最近またちょくちょく参加させて頂いております。 さて、質問ですが、現在 RedHat Enterprise Linux の RPMファイル名のリストから、パッケージ名とバージョン情報を解析・抽出しようと目論んでいます。 ( 実際やりたいのは、RedHat Network上のerrata 情報 → 更新RPMファイル一覧抽出 → 更新パッケージ・バージョンの抽出、という流れでの解析 ) ところが、パッケージ名とバージョンの区切りが曖昧なため、全てのパッケージを網羅する解析ルールがつかめずにいます。 大抵は、Perl正規表現 /^(.*?)-(\d.*?)\.\w+\.rpm$/ ( 初めて「ハイフン-数字」の組み合わせが出たら、そこからがバージョン ) で対処できるのですが、例えば、 jisksp16-1990-0.1-16.noarch.rpm というRPMファイルがあったとして、 パッケージ名:jisksp16 バージョン:1990-0.1-16 … × パッケージ名:jisksp16-1990 バージョン:0.1-16 … ○ となりますから、誤認識を起こしてしまいます。 この辺りのルール等ご存知であったり、何か良いアイデアがあれば、是非ご教示をお願いします。 | ||||
|
投稿日時: 2007-01-18 16:27
こんにちは。
今、更新RPMファイル一覧抽出までやれてないので、rpmfind.netの適当なリストを確認してみましたが、 パッケージ名とバージョン区切りを初回のハイフンではなく、 最初に出現する「メジャーバージョン.マイナーバージョン」の前後で区切るのではどうでしょうか? angel様風に記載すると、 /^(.*?)-(\d\..*?)\.\w+\.rpm$/ な感じですしょうか。 パッケージ名に「数字.数字」が入っているものがあったらアウトですが。。。 | ||||
|
投稿日時: 2007-01-18 18:19
明確なルールってあるんでしょうか?ファイル名だけでは難しい気がします。 やっぱりパッケージ取ってきて # rpm -q --qf=%{NAME} -p rpmファイル # rpm -q --qf=%{VERSION} -p rpmファイル # rpm -q --qf=%{RELEASE} -p rpmファイル とかやるのが確実かと。 _________________ 桃李不言 下自成蹊 | ||||
|
投稿日時: 2007-01-18 20:20
ありがとうございます。
既存のパッケージを全て洗うしかないかな…、と思っていたら、お二人の回答で閃きました。 試したのは Cent4.4 ですが、
のようになりました。( rpmdb を入れていたので、インストールされていないパッケージの分も調査可能 ) fonts関係、gcc,g++,java(gcj)のcompat関係、jisksp が特殊なようです。 なお、一部のパッケージは、「メジャー番号.マイナー番号」という書式になっていないので、その線も厳しそうです。( tzdata とか ) 規則に当てはまらないパッケージだけ、特別扱いするしかない感じですかね…。 [ メッセージ編集済み 編集者: angel 編集日時 2007-01-18 20:32 ] |
1