src.rpmとrpmの対応表
src.rpmから(バイナリ)rpmが生成されるがその対応は1:1とは限らない。仕事上この対応表が必要になったのでそれを自動生成するスクリプトを書いた。last_srpm はよーするに uniq するためのフラグだ。
#!/bin/sh rpm -qa --qf "%{SOURCERPM} %{NAME} \n" | sort -k1 | while read srpm rpm; do if [ "$last_srpm" = "$srpm" ]; then rpmlist="$rpmlist $rpm" else echo "$last_srpm $rpmlist" rpmlist="$rpm" last_srpm=$srpm fi done
$ ./this.sh | grep tcpdump tcpdump-3.9.4-8.1.src.rpm arpwatch libpcap tcpdump
この出力をハッシュとして読み込む perl スクリプトも作成した。キーが src.rpm で値が(バイナリ)rpm の配列へのリファレンスとしている。foreach の中で様々な処理が可能なので、今後重宝するだろう。
#!/usr/bin/perl %rpmmap =(); while (<>) { @array = split; $srcrpm = shift @array; @{$rpmmap{$srcrpm}} = @array; } foreach $key (keys(%rpmmap)) { print "source = $key : binary = @{$rpmmap{$key}} \n"; }
$ ./this.sh > pkg.txt $ ./that.pl pkg.txt | grep tcpdump source = tcpdump-3.9.4-8.1.src.rpm : binary = arpwatch libpcap tcpdump