読者です 読者をやめる 読者になる 読者になる

/var/lgo/mudatisiki.log

人によってはムダ知識でも自分にとっては有用かもしれない情報を書き込みたいですね。Linuxを仕事で使っているので、それに関してが多いかもです。

rpmコマンドでアーキテクチャ名を表示する

概要

サーバーにインストールされているパッケージを比較する際にハマったのでメモ。

結論: --qfオプションを付けて書式を設定してあげる

rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n'

以下詳細

#rpm -qa でパッケージ一覧を取得し行数を取得します
#970パッケージインストールされてます
[root@centos53 ~]# rpm -qa | wc -l
970

#どんなパッケージがあるかサラッと見てみます
#GConf2-2.14.0-9.el5 や ImageMagick-6.2.8.0-15.el5_8 重複しているように見えます
[root@centos53 ~]# rpm -qa | sort | head
Cluster_Administration-ja-JP-5.8-1.el5.centos
Deployment_Guide-en-US-5.8-1.el5.centos
Deployment_Guide-ja-JP-5.8-1.el5.centos
GConf2-2.14.0-9.el5
GConf2-2.14.0-9.el5
Global_File_System-ja-JP-5.8-1.el5.centos
ImageMagick-6.2.8.0-15.el5_8
ImageMagick-6.2.8.0-15.el5_8
MAKEDEV-3.23-1.2

#重複をカウントすると175行も出てきてしまいした……
[root@centos53 ~]# rpm -qa | sort | uniq -d | wc -l
175

#--qf(queryformat) オプションを使用し、フォーマット書式を指定します
#%{arch}がアーキテクチャー(i368とかx86_64)
[root@centos53 ~]# rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n' |
grep "GConf2-2.14.0-9.el5"
GConf2-2.14.0-9.el5.i386.rpm
GConf2-2.14.0-9.el5.x86_64.rpm

#重複がない事を確認します
[root@centos53 ~]# rpm -qa --qf '%{name}-%{version}-%{release}.%{arch}.rpm\n' \
| sort | uniq -d | wc -l
0

rpm -qa だけですと、アーキテクチャが表示されないため同じパッケージが複数存在するように見えてしまうので注意が必要です。