2008年7月5日土曜日

ホスト間のRPMパッケージのインストール差異を知る

Linuxで2台以上のRPMパッケージの差分を調べるときは、以下のコマンドが便利です。


 rpm -qa --qf "%{NAME}\n"


このコマンドではRPMバージョンを含まない、RPMのパッケージ名のみが標準出力に出力されます。



■ rpm -qa --qf "%{NAME}\n" | sort の出力例
4Suite
Canna
Canna-libs
FreeWnn
FreeWnn-libs
GConf2
MAKEDEV
NetworkManager
ORBit2
Omni

■ rpm -qa | sort の出力例
4Suite-1.0-3
Canna-3.7p3-7.EL4
Canna-libs-3.7p3-7.EL4
FreeWnn-1.10pl020-5
FreeWnn-libs-1.10pl020-5
GConf2-2.8.1-1.el4
MAKEDEV-3.15.2-3
NetworkManager-0.3.1-4.el4
ORBit2-2.12.0-3
Omni-0.9.1-7.1

2ホスト間のパッケージ差異を、RPMバージョンを無視して比較したい場合は、例えばSSHを使って以下のように作業します。

node1$ rpm -qa --qf "%{NAME}\n" | sort > rpms.node1
node1$ ssh node2 'rpm -qa --qf "%{NAME}\n" | sort' > rpms.node2
node1$ diff -u rpms.node[12]

node2には入っているけどnode1に入っていないパッケージをyumで追加する場合は

diff -u rpms.node2 rpms.node1 | grep '+' | grep -v ' ' | echo xargs yum install

としてコマンドラインを生成し、確認後 echo を外すと yum でパッケージをまとめて install できます。

0 件のコメント:

コメントを投稿