rpmでパッケージのバージョンとか
rpmで,パッケージのバージョンを知る方法は無いかと,これまたid:hakobe932と悩んでた.で,rpmの--helpを見たらそれとなくわかって,ググったらその通りだった.
$ rpm -q --qf="%{VERSION}-%{RELEASE}\n" rpm 4.8.5-1vl8
こんなかんじ.まず-qでクエリオプションを渡してやるところがポイント?qfはqueryformatの略.--qfが気に食わなければ*1--queryformatでも良い.
そこで,Rubyのリハビリがてら,入ってる全部のパッケージのバージョンをサクッと求めるスクリプトでも書くかーと.
pkgs = Hash.new `rpm -qa`.each_line do |pkg| name, ver = `rpm -q --qf="%{NAME} %{VERSION}-%{RELEASE}" #{pkg}`.split(/\s/) # "rpm 4.8.5-1vl8"みたいになる pkgs[name] = ver end
あとはもう,煮るなり焼くなり.うちのFMVでやってみたところ,終わる気配がなかったので10個だけやった.ちゃんと動いた.
追記
id:znzさんにコメントを頂き,上の方法では効率が悪いっちゅーことがわかりました.書き直すとすれば,こんな感じなのかな?
pkgs = Hash.new `rpm -qa --qf="%{NAME} %{VERSION}-%{RELEASE}"`.each_line do |pkg| name, ver = pkg.split(/\s/) pkgs[name] = ver end
動かしてないので確証はありませんが,動くとは思う.
*1:なんか,qオプションとfオプションの合わせ技に見える