RPM 查询

使用 -q 选项, rpm 将初始化查询,使查看 RPM 存档(通过添加选项 -p)并查询已安装包的 RPM 数据库成为可能。可以使用多个开关指定所需信息的类型。请参见表 16.1 “最重要的 RPM 查询选项”

表 16.1. 最重要的 RPM 查询选项

-i

包信息

-l

文件列表

-f FILE

查询包含文件 FILE 的包(必须使用 FILE 指定完整路径)

-s

带有状态信息的文件列表(间接指定 -l

-d

仅列出文档文件(间接指定 -l

-c

仅列出配置文件(间接指定 -l

--dump

带有完整详细信息的文件列表(将用于 -l-c-d

--provides

列出包中可被另一个包通过 --requires 请求的功能

--requires, -R

包需要的功能

--scripts

安装脚本(预安装、后安装、卸载)


例如,命令 rpm -q -i wget 显示 例 16.1 “rpm -q -i wget” 中所示的信息。

例 16.1. rpm -q -i wget

Name        : wget                         Relocations: (not relocatable)
Version     : 1.9.1                             Vendor: SUSE LINUX AG, Nuernberg, Germany
Release     : 50                            Build Date: Sat 02 Oct 2004 03:49:13 AM CEST
Install date: Mon 11 Oct 2004 10:24:56 AM CEST      Build Host: f53.suse.de
Group       : Productivity/Networking/Web/Utilities   Source RPM: wget-1.9.1-50.src.rpm
Size        : 1637514                          License: GPL
Signature   : DSA/SHA1, Sat 02 Oct 2004 03:59:56 AM CEST, Key ID a84edae89c800aca
Packager    : http://www.suse.de/feedback
URL         : http://wget.sunsite.dk/
Summary     : A tool for mirroring FTP and HTTP servers
Description :
Wget enables you to retrieve WWW documents or FTP files from a server.
This can be done in script files or via the command line.
[...]

只有当您指定带有完整路径的完整文件名时,选项 -f 才起作用。根据需要提供任意多个文件名。例如,以下命令

rpm -q -f /bin/rpm /usr/bin/wget

产生:

rpm-4.1.1-191
wget-1.9.1-50

如果只知道部分文件名,则可以使用壳层脚本,如例 16.2 “搜索包的脚本”所示。当运行所显示的脚本时,将部分文件名以参数的形式传递给该脚本。

例 16.2. 搜索包的脚本

#! /bin/sh
for i in $(rpm -q -a -l | grep  $1); do
    echo "\"$i\" is in package:"
    rpm -q -f $i
    echo ""
done

命令 rpm -q --changelog rpm 按照日期显示有关特定包更改信息的详细列表。此示例显示有关包 rpm 的信息。

借助已安装的 RPM 数据库,可以进行校验检查。使用 -V-y--verify 对其进行初始化。使用此选项,rpm 显示安装后已被更改的包中的所有文件。rpm 使用 8 个字符符号给出有关以下更改的一些提示:

表 16.2. RPM 校验选项

5

MD5 校验和

S

文件大小

L

符号链接

T

修改时间

D

主要和次要设备编号

U

拥有者

G

M

方式(权限和文件类型)


对于配置文件,将输出字母 c。例如,对于 /etc/wgetrc (wget) 的更改:

rpm -V wget
S.5....T c /etc/wgetrc

RPM 数据库的文件被放置在 /var/lib/rpm 中。如果分区 /usr 的大小为 1 GB,则此数据库可能会占用将近 30 MB,特别是在完全更新之后。如果数据库比预期大得多,则最好使用选项 --rebuilddb 重构建数据库。在执行此操作之前,制作旧数据库的备份。cron 脚本 cron.daily 每天制作数据库的副本(用 gzip 打包)并将这些副本储存在 /var/adm/backup/rpmdb 中。副本的数目是由 /etc/sysconfig/backup 中的变量 MAX_RPMDB_BACKUPS(默认值为 5)控制的。对于 1 GB 的 /usr,单个备份的大小大约为 1 MB。