有时候你会发现系统上居然有两个一模一样的rpm包,
[root@localhost ~]# rpm -q zlib
zlib-1.2.3-7.el5
zlib-1.2.3-7.el5
[root@localhost ~]#
还有这操作,这肯定是rpm的数据库文件异常了吧。
坐下坐下,这只是正常操作,是rpm查询命令搞的鬼。我们使用yum命令看下具体信息,
[root@localhost ~]# yum info zlib-1.2.3-7.el5
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
Installed Packages
Name : zlib
Arch : i386
Version : 1.2.3
Release : 7.el5
Size : 77 k
Repo : installed
Summary : The zlib compression and decompression library.
URL : http://www.gzip.org/zlib/
License : BSD
Description: Zlib is a general-purpose, patent-free, lossless data compression
: library which is used by many different programs.
Name : zlib
Arch : x86_64
Version : 1.2.3
Release : 7.el5
Size : 87 k
Repo : installed
Summary : The zlib compression and decompression library.
URL : http://www.gzip.org/zlib/
License : BSD
Description: Zlib is a general-purpose, patent-free, lossless data compression
: library which is used by many different programs.
[root@localhost ~]#
这下应该清楚了,是安装了两个不同架构的rpm包,一个是i386,另一个是x86_64。
那有没有办法获取rpm包的完整名称呢? of course !
使用大杀器,rpm –qf,注意是两个-,命令全称是,
rpm --queryformat [QUERYFMT]
其中QUERYFMT是一系列rpm的查询标志,可以通过以下命令查询有哪些标志可以使用,
[root@localhost ~]# rpm --querytags
ARCH
ARCHIVESIZE
BASENAMES
BUGURL
BUILDARCHS
BUILDHOST
BUILDTIME
C
CHANGELOGNAME
CHANGELOGTEXT
CHANGELOGTIME
....
默认情况下,rpm -q 的格式为,
[root@localhost ~]# rpm -q --qf '%{name}-%{version}-%{release}\n' zlib
zlib-1.2.3-7.el5
zlib-1.2.3-7.el5
[root@localhost ~]#
不带有架构信息,因此觉得有两个相同版本的包。所以我们可以在查询格式中定义架构信息,这样就能区分出两个包。
[root@localhost ~]# rpm -q --qf '%{name}-%{version}-%{release}.%{arch}\n' zlib
zlib-1.2.3-7.el5.x86_64
zlib-1.2.3-7.el5.i386
[root@localhost ~]#
人生不止,踩坑不停。