本节接着介绍rpm的查询功能,查询是我们最常用的功能,例如查询一个包里包含哪些文件、一个文件属于哪个包、以及包之间的依赖关系等等。
rpm的-q参数是用来进行查询的,需要明确的是rpm既可以对安装在系统上的包进行查询,也可以对一个未安装的rpm包进行查询。当一个rpm包安装到系统上之后,安装信息通常会保存在本地的/var/lib/rpm/目录下,数据会以berkeley DB的方式保存。查看/var/lib/rpm/Packages文件的类型可以验证这一点。
[leconte@localhost rpm]$ file /var/lib/rpm/Packages /var/lib/rpm/Packages: Berkeley DB (Hash, version 8, native byte-order)
这种情况下的查询其实就是对bdb的读访问。而对一个未安装的rpm包进行查询,则是通过解读rpm包本身而获取信息,这一点是首先需要明确的。
下面我就简单罗列一下rpm最常用的几个查询功能
1.rpm -qa 用来查询系统安装的所有包,a代表all
2.rpm -ql [包名] 用来查询某个包里的文件列表,例如查询包passwd里包含的内容
[leconte@localhost rpm]$ rpm -ql passwd /etc/pam.d/passwd /usr/bin/passwd /usr/share/man/man1/passwd.1.gz
3.rpm -qi [包名] 用来查询包信息,其中包含包的介绍,作者,打包日期等重要信息。
4.rpm -qf [文件名] 用来查询一个文件所属的rpm包,例如:
[leconte@localhost rpm]$ rpm -qf /etc/passwd setup-2.5.58-4.el5
系统配置文件/etc/passwd是属于setup这个包的。
5.rpm -qV [包名] 用来验证某个包中安装的各文件的状态,如果当前文件的大小、md5和安装时数据库里保存的信息不一致,该命令则会将不一致的文件列出来。该命令对于系统出问题的情况下的故障排查很有帮助。
上面是几个最常用的查询命令,都是针对查询系统rpm包情况的。如果要查询未安装的rpm包则只需要加上p参数和包路径即可。例如查询包perl-Git-1.5.5.6-4.el5.i386.rpm的信息:
[leconte@localhost soft]$ rpm -qip perl-Git-1.5.5.6-4.el5.i386.rpm warning: perl-Git-1.5.5.6-4.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 217521f6 Name : perl-Git Relocations: (not relocatable) Version : 1.5.5.6 Vendor: Fedora Project Release : 4.el5 Build Date: 2009年06月19日 星期五 21时28分05秒 Install Date: (not installed) Build Host: xenbuilder2.fedora.redhat.com Group : Development/Libraries Source RPM: git-1.5.5.6-4.el5.src.rpm Size : 24878 License: GPL Signature : DSA/SHA1, 2009年06月20日 星期六 04时07分18秒, Key ID 119cc036217521f6 Packager : Fedora Project URL : http://kernel.org/pub/software/scm/git/ Summary : Perl interface to Git Description : Perl interface to Git.