RPM 使用教程

RPM 软件包管理器是一套开放的软件包封装机制,除了 Fedora,在其它 Linux 和 Unix 操作系统上同样能够使用 RPM。红帽公司 (Red Hat, Inc.) 及 Fedora 项目组也建议其它软件厂商使用 RPM 来封装它们的产品。

RPM 软件包管理器是一套开放的软件包封装机制,除了 Fedora,在其它 Linux 和 Unix 操作系统上同样能够使用 RPM。红帽公司 (Red Hat, Inc.) 及 Fedora 项目组也建议其它软件厂商使用 RPM 来封装它们的产品。

RPM 基于 GPL (GNU 通用公共许协议) 发布的软件产品。

RPM 软件包管理器只能管理以 RPM 形式封装的软件包,并且 RPM 本身也是一个预先安装好的 rpm 形式的软件包。

对于终端用户而言,RPM 使得系统升级变得十分容易,同时只需要十分简单的命令就能完成 RPM 软件包的安装、卸载和升级。

RPM 为已安装的软件包,以及软件包所包含的文件建立了一份数据库,因此,你能够在系统上使用调用非常强大的请求和验证功能。

如果你更喜欢图形界面而不是命令行,你可以使用 PackageKit,详细信息请参考《PackageKit》

安装软件包之前,请确认所选择的软件包与你的操作系统和处理器平台相兼容。这一工作通常通过查看软件包名称就能完成,例如,为 AMD64/Intel64 平台编译的 RPM 软件包,它们的名称结尾看起来像 x86_64.rpm。

使用 RPM 升级/更新 软件包时,它会小心的处理你的配置文件,从而在软件升级之后依然保持你的自定义配置。而传统的 .tar.gz 软件包,并不能自动完成这项任务,而可能导致你的配置文件被覆盖。

对于开发人员而言,RPM 能够让你将软件源代码封装成源代码软件包和二进制软件包,然后供终端用户使用。这个过程十分简单,并且,RPM 会将单个文件与这个文件的补丁文件分离。通过这种分离结构,开发人员能够简单地创建和维护软件包的新版本。

在使用 rpm 命令安装、删除或升级 .rpm 软件包前,需要切换成 root 身份,可参考《使用 sudo 命令,以根用户身份执行命令

 

RPM 使用教程

RPM 软件包管理工具的设计意图

理解 RPM 的设计意图,有利于帮助你了解如何使用 RPM,以及 RPM 的某些功能是如何实现的,在这个基本上,方便你更好的使用它对系统中的 RPM 软件包进行管理和维护。

理解 RPM 的设计意图,有利于帮助你了解如何使用 RPM,以及 RPM 的某些功能是如何实现的,在这个基本上,方便你更好的使用它对系统中的 RPM 软件包进行管理和维护。

可升级性:
使用 RPM,你能够单独的升级系统上某个单独的组件,而无需重新安装整个软件包或者整个系统。当你取得一个基于 RPM 软件格式的新操作系统 (如 Fedora ) 的发行版时,你无需在机器上重新安装一个 Fedora 操作系统,RPM 能够聪明地、全自动化地为你升级系统。并且,所有软件包配置文件中的自定义设置都将被保留。
RPM 软件包既可用于安装,也可用于升级软件包,如果你要升级某个软件包,只需获得最新的 rpm 软件包就行了。

强大的查询功能:
RPM 被设计成拥有强大的查询功能,你能够通过搜索整个数据库查询软件包或者是软件包中的文件。你能够查询出某个文件属于哪个软件包,或者软件包是从哪里取得的。
RPM 软件包中的所有文件被包含在一个压缩档案中,另外还有一个自定义的二进制头文件,其中包含了软件包的相关信息以及包含的内容。这样一来,查询单个软件包的信息,就变得更快速、更容易了。

系统验证

RPM 的另一个强大的特性就是软件包验证功能。如果你担心自己不小心删除了某个软件包中的重要文件,你能够通过验证软件包得知。如果被通知软件包异常,则可以通过重新安装软件包来解决,并且会保持你的现有的配置文件不被更改。

原软件源 (Pristine sources)
RPM 的另一个重大设计目标是允许使用原软件源 (Pristine Software Source)。RPM 将原软件源与软件的补丁分开。这种机制有几个原因,例如,当某个程序的新版本发布了,你不必重头开始编译整个程序,只需要查看补丁,看看可能需要执行哪些操作对程序进行更新,当然普通用户不太需要关注这一部分特性。
保持原软件源看起来只有软件开发人员很重要,但从结果上来看,它也使得终端用户能够得到更高质量的可用软件包。

取得 RPM 软件包

RPM 一共有五个基本操作模式:安装、卸载、升级、查询和验证 。当然封装也算 RPM 的一大功能,但大众用户很少会用到。从本节开始,将逐个介绍 RPM 的五个基本操作模式。

RPM 一共有五个基本操作模式:安装、卸载、升级、查询和验证 。当然封装也算 RPM 的一大功能,但大众用户很少会用到。从本节开始,将逐个介绍 RPM 的五个基本操作模式。

有关 rpm 命令的用法、选项和参数的作用,可使用 rpm --help 或 man rpm 命令查看。也可以从《有关 RPM 的附加资源》中寻找有关 RPM 的参考信息。

 

获取 RPM 软件包

在使用任何 RPM 软件包之前,你必须先要知道从哪里能够取得它们。除了能从 Fedora 官方的软件包仓库取得由 Fedora 项目组创建的 RPM 软件包,也还能够通过互联网能够找到许多 RPM 软件包仓库,以及一些 RPM 软件包下载站点。
以下是常用来寻找 RPM 软件包的位置:

  • Fedora 安装媒体 (CD 或 DVD) 中有许多 RPM 软件包
  • Yum 软件包管理器提供的默认软件包仓库,有关使用 Fedora 官方软件包仓库的方法请参考《Yum 使用教程
  •  非官方的第三方软件仓库,如 rpmfusion.org
在将第三方软件仓库添加为软件包源之前,花点时间关注来自这个仓库的软件包的兼容性。因为第三方软件仓库所提供的软件包可能与原软件包有所不同,或者不完整。

使用 RPM 命令安装软件包

输入以下命令即可执行软件包的安装了,其中 -i 选择告诉 rpm 执行安装操作,v 和 h 选项不是必须的,它们的功能是用于显示一些输出信息和安装进程。

RPM 软件包的文件名称通常像 tree-1.5.2.2-4.fc12.x68_64.rpm。这个文件名中包含了软件包名称 (tree),版本号 (1.5.2.2),发行版 (4),操作系统主版本 (fc12) 以及 CPU 平台 (x86_64)。假设 tree-1.5.2.2-4.fc12.x86_64.rpm 软件包位于当前目录,在命令行中切换到 root 用户,输入以下命令即可执行软件包的安装了

rpm -ivh tree-1.5.2.2-4.fc12.x86_64.rpm

其中 -i 选择告诉 rpm 执行安装(install)操作,v 和 h 选项不是必须的,它们的功能是用于显示一些输出信息和安装进程。

另外,你也能够使用 -U 选项来升级 (或安装) 软件包

rpm -Uvh tree-1.5.2.2-4.fc12.x86_64.rpm
Preparing...                ########################################### [100%]
   1:tree                   ########################################### [100%]

就如你所看到的, 在执行软件包的安装/升级时,RPM 输出软件包的名称,并在后面打印一连串 # 号表示安装/升级进度。

当安装或升级软件包时,RPM 会自动检查软件包的签名。RPM 通过签名判断软件包是否经由被认可的机构。如果验证签名失败,则会看到以下信息:

error: tree-1.5.2.2-4.fc12.x86_64.rpm: Header V3 RSA/SHA256 signature: BAD,
 key ID d22e77f2

如果你没有安装合适的密钥(key)用于验证软件包的签名,信息中则会包含 NOKEY 字样:

error: tree-1.5.2.2-4.fc12.x86_64.rpm: Header V3 RSA/SHA256 signature: BAD,
key ID d22e77f2

有关验证软件包签名的更多信息,请参考《验证软件包签名》

 如果要安装内核 (Kernel) 软件包,请使用 rpm -ivh 命令,而不是 rpm -Uvh,因为安装内核软件包时, -i 与 -U 选项拥有特殊的含义。详细情况请参考《手动升级系统内核(Kernel)》

使用 RPM 安装软件包的常见问题

使用 RPM 命令安装软件包的常见问题包括:软件包已经被安装、文件冲突,以及未被解析的软件包依赖性。

软件包已经被安装

如果某个名称和版本号都相同的软件包已经被安装在系统中,在使用 rpm 命令进行安装时则会输出以下信息,提示你软件已经被安装 (already installed)

Preparing...                ########################################### [100%]
 package tree-1.5.2.2-4.fc12.x86_64 is already installed

使用 --replacepkgs 选项让 RPM 忽略上述错误信息,执行软件包的覆盖安装。

~]# rpm -ivh --replacepkgs tree-1.5.2.2-4.fc12.x86_64.rpm
通常在修复出问题的软件包时,可以使用覆盖安装

 

文件冲突

当你安装的某个软件包中包含的文件已经通过其它软件包安装到系统中,则会出现以下提示信息

Preparing...                ##################################################
 file /usr/bin/foobar from install of foo-1.0-1.fc12 conflicts
with file from package bar-3.1.1.fc12

使用 --replacefiles 选择能够忽略这个错误

~]# rpm -ivh --replacefiles foo-1.0-1.fc12.x86_64.rpm
注意:使用 --replacefiles 会替换系统中已经安装的相同的文件,除非你清楚这个文件的用途和替换可能产生的影响,否则不要轻易执行文件替换。

 

未被解析的软件包依赖性

RPM 软件包有时候需要依赖于其它的软件包,意思就是说在这个软件包安装之前,必须先安装一些其它的软件包才能保证它的正常运行。如果安装的软件包的依赖性没有被解决,则会显示类似于以下的输出信息

error: Failed dependencies:
 bar.so.3()(64bit) is needed by foo-1.0-1.fc12.x86_64
    Suggested resolutions:
        bar-3.1.1.fc12.x86_64.rpm

以上输出说明 foo-1.0-1.fc12.x86_64 这个软件包依赖于 bar.so.3 这个文件,并且建议你通过安装 bar-3.1.1.fc12.x86_64 软件包来解决这个依赖性问题。这时你只需要找到这个依赖性软件包,并将其安装即可。

但有时 RPM 不会作出以上提示,这时可以使用 --whatprovides 选项加上依赖的文件名进行查找

~]# rpm -q --whatprovides "bar.so.3"
bar-3.1.1.fc12.i586.rpm

由输出结果可知,通过安装 bar-3.1.1.fc12.i586 软件包就能解决这个问题了 :D

注意:通过 --nodeps 选项可以忽略软件包的依赖,让 RPM 强制安装某个软件包。但强制安装的软件包通常都无法正常工作,而且可能导致系统安全以及稳定性等多方面的问题,因此不建议强制安装软件包。
提示:yum 和 PackageKit 都能够自行解析并处理软件包依赖性的问题,并且在条件许可的情况下,建议使用 yum 执行软件包的管理工作。更多有关 yum 的信息可参考《Yum 使用教程

使用 RPM 命令卸载软件包

使用 RPM 卸载软件包十分简单,只需要通过命令行中输入 rpm -e <package_name> 即可,对于未解决依赖性的软件包,可以使用 --provides 选项可以查询文件所需的软件包

使用 RPM 卸载软件包十分简单,只需要通过命令行中输入 rpm -e <package_name> 即可

~]# rpm -e foo
 注意:卸载软件包时,只需要提供软件包的名称即可,即 foo,使用 RPM 软件包的全名 (foo-1.0-1.fc12.x86_64) 则会提示“错误的软件包”。

如果你要卸载的软件包被其它软件包所依赖,系统则会提示"依赖性错误"

~]# rpm -e ghostscript
error: Failed dependencies:
 libgs.so.8()(64bit) is needed by (installed)
 libspectre-0.2.2-3.fc12.x86_64
 libgs.so.8()(64bit) is needed by (installed) foomatic-4.0.3-1.fc12.x86_64
 libijs-0.35.so()(64bit) is needed by (installed)
 gutenprint-5.2.4-5.fc12.x86_64
 ghostscript is needed by (installed) printer-filters-1.1-4.fc12.noarch

在《使用 RPM 安装软件包的常见问题》中提到,对于未解决依赖性的软件包,可以使用 --provides 选项可以查询文件所需的软件包

~]# rpm -q --whatprovides "libgs.so.8()(64bit)"
ghostscript-8.70-1.fc12.x86_64
注意:通过 --nodeps 选项可以忽略软件包的依赖,让 RPM 强制卸载某个软件包。但强制卸载软件包之后可能导致其它依赖于它的软件包都无法正常工作,并可能导致系统安全以及稳定性等多方面的问题,因此不建议强制卸载软件包。
提示:yum 和 PackageKit 都能够自行解析并处理软件包依赖性的问题,并且在条件许可的情况下,建议使用 yum 执行软件包的管理工作。更多有关 yum 的信息可参考《Yum 使用教程

使用 RPM 命令升级软件包

升级软件包与安装软件包的命令十分相似,只是升级使用 -U 选项,而安装是使用 -i 选项。当系统中没有安装先前版本的软件包时,-U 选项则会执行安装的操作。

升级软件包与安装软件包的命令十分相似,只是升级使用 -U 选项,而安装是使用 -i 选项。

假设名为 tree-1.5.3.0-1.fc12.x86_64.rpm 的软件名位于当前目录,并且我们已经在系统中安装了名为 tree-1.5.2.2-4.fc12.x86_64.rpm 的软件包,我们则可以通过以下命令对软件包进行升级

~]# rpm -Uvh tree-1.5.3.0-1.fc12.x86_64.rpm

作为升级软件包进程的一部分,RPM 会自动卸载之前老版本的 tree 软件包。当系统中没有安装先前版本的软件包时,-U 选项则会执行安装的操作。因此使用 -U 选项,即能够安装,也能够升级软件包。

注意:不推荐使用 -U 选项对内核 (kernel) 软件包进行安装,这样做会让 RPM 完全地覆盖先前版本的内核软件包。这个操作不会马上影响当前系统,但如果下次你无法使用新的内核启动系统,你就没有其它可用内核进行启用了。 使用 -i 选项将会将新安装的内核添加到你的 GRUB 启用菜单 (即 /etc/grub.conf 文件)。同样,移除某个内核软件包时,也会从 GRUB 菜单中删除相应内容。使用 yum 升级内核软件包时,它等同于 -i 选择的 rpm 命令,因此可以放心升级。

RPM 会聪明地处理配置文件以名升级过程中出现配置丢失,所以你可能会在升级软件包时看到以下信息

saving /etc/foo.conf as /etc/foo.conf.rpmsave

出现这个消息,则说明新版本软件包中的配置文件不向前兼容(forward-compatible),所以 RPM 为你备份并添加一份最新的配置文件。 你需要了解两份配置文件的不同,并解决其中的问题,从而保证你能够将旧配置文件中的设置过渡到新的软件中。

或者,RPM 不会变更旧的配置文件,而是将新的配置文件保存为 foo.conf.rpmnew。不论是哪种情况,依然建议你查看两份配置的不同,并解决配置方面的问题。比对两个文件,可以使用 diff 程序。

如果你想将软件包更新为版本号更低的软件包,则会得到以下输出

package foo-2.0-1.fc12.x86_64.rpm (which is newer than foo-1.0-1) is already installed

使用 --oldpackage 选项,能够强制地将软件包更新为旧版本的软件包

~]# rpm -Uvh --oldpackage foo-1.0-1.fc12.x86_64.rpm

使用 RPM 命令更新软件包

更新 (Freshening) 选项 与升级 (Upgrading) 选项十分相似,唯一的不同是 -F 选项只会更新系统中已安装的软件包,对于没有安装的软件包,不会像 -U 选项那样,直接对其进行安装。

更新 (Freshening) 选项 与升级 (Upgrading) 选项十分相似,唯一的不同是 -F 选项只会更新系统中已安装的软件包,对于没有安装的软件包,不会像 -U 选项那样,直接对其进行安装。

~]# rpm -Fvh foo-2.0-1.fc12.x86_64.rpm

RPM 的 -F 选项会对比已安装的软件包的版本和要提供的软件包的版本,如果提供的软件包的版本更新,RPM 则执行升级操作。但当系统中没有安装某软件包的老版本时, -F 选项不会安装软件包 (-U 选项会执行安装操作)。

以下是一个使用 -F 选项的场合。比如你得到一张新的软件包光盘,你想对系统中的软件包做一次大面积地更新,却又不想安装那些光盘中有,而系统中没有安装的软件包。使用 -F 选项,就能做到只对安装的软件包进行更新。

~]# rpm -Fvh *.rpm

使用 RPM 命令查询软件包

RPM 数据库中存储了安装在系统中所有软件包的信息,数据库的位置是 /var/lib/rpm/ 使用这个数据库,你能够查询到系统中安装了哪些软件包、软件包的版本号是多少、软件包中的文件自安装之后进行了多少更改,以及其它方面查询。

RPM 数据库中存储了安装在系统中所有软件包的信息,数据库的位置是 /var/lib/rpm/ 使用这个数据库,你能够查询到系统中安装了哪些软件包、软件包的版本号是多少、软件包中的文件自安装之后进行了多少更改,以及其它方面查询。

查询这个数据库,需要使用 -q 选项。例如使用 rpm -q <package_name> 命令查询软件包是否已经安装,对于已安装的软件包,则会返回 rpm 包的全名

~]# rpm -q tree
tree-1.5.2.2-4.fc12.x86_64

在查询时,你还可以通过使用以下选项与 -q 选项配合,加强 RPM 的查询功能 ( rpm 的查询功能十分强大而且有效,更多信息可以参考 man rpm)

  • -a - 查询所有已安装的软件包
  • -f <file_name> - 从 RPM 数据库中查询哪个软件包包含指定的文件,查询时要指定文档的绝对路径,即使用 rpm -qf /bin/ls 而不是 rpm -qf ls
  • -p <package_file> - 对还未安装到系统中的软件包文件进行查询

请求软件包信息 以下选项用于指定以何种形式显示你所搜索的信息,这些选项被称为“软件包查询选项 (Package Query Options)”

  • -i - 显示有关软件包的详细信息,包含软件包名称、描述、发行版、大小、封装日期、安装日期、软件提供商以及其它许多信息
  • -l - 显示软件包所包含的文件列表
  • -s - 显示软件包中所有文件的状态
  • -d - 显示软件包中标识为文档 (如 man 文档,info 文档 和 README 文档) 的文件列表
  • -c - 显示软件包中标识为配置文件的文件列表 (如 smb.conf, passwd, inittab 等文档)

为以上给出文件列表的选项加上 -v 选项,能够显示长文件信息,格式与 ls -l 相似。

使用 RPM 命令验证软件包

验证软件包,通常是指比较安装的文件的信息与原软件包中的信息进行比对。其中包含每个文件的大小、MD5 校验值、权限、类型、用户及用户组的验证。

验证软件包,通常是指比较安装的文件的信息与原软件包中的信息进行比对。其中包含每个文件的大小、MD5 校验值、权限、类型、用户及用户组的验证。

使用 -V 选项对软件包进行验证,例如使用 rpm -V tree 命令,就会将 tree 软件包中的所有文件与它们最开始的安装时的情况进行对比验证。

~]# rpm -V tree

验证指定的文件可以使用以下命令

~]# rpm -Vf /usr/bin/tree
说明:执行指定文件的验证时,需要使用文件的绝对路径。

结合 -a 参数,可以对系统中所有安装的软件包进行验证(所需要时间较长)

~]# rpm -Va

验证已安装的 RPM 软件包

~]# rpm -Vp tree-1.5.2.2-4.fc12.x86_64.rpm

如果验证结果通过,系统则不会给出任何输出。如果验证时发现有差异,则会显示相关文件的验证信息。输出的前8位为验证状态,验证通过的那一位以点 (.) 表示,验证不通过则以相应字符表示,以下为每个字符所表示的含义

  • 5 - MD5 校验值
  • S - 文件大小
  • L - 符号链接
  • T - 文件修改时间
  • D - 设备
  • U - 用户
  • G - 组
  • M - 模式 (包含权限和文件类型)
  • ? - 不可读文件 (如文件权限出错)

当验证的软件包出现问题,并给出以上输出时,请你用你认为最好的方式去处理它,包括移除软件包、重装软件包或者用其它各种方法对问题进行修复

检查 RPM 软件包及签名

如果你希望检查一个软件包是否损坏或者被窜改,你可以通过 RPM 命令检查软件包的 MD5 校验值。并且在成功导入 GnuPG 密钥之后,还能使用 RPM 命令对 RPM 软件包进行签名验证

检查软件包完整性

如果希望检查一个软件包是否损坏或者被窜改,可以通过以下命令检查软件包的 MD5 校验值 (注意将 <rpm_file> 更改为你希望检查的软件包的路径或名称)

~]# rpm -K --nosignature <rpm_file>
<rpm_file>: rsa sha1 (md5) pgp md5 OK

类似于上下输出结果则表示得到的是正确的(未损坏的、未被篡改的)软件包

如果希望看到详细的输出信息,可以使用 -Kvv 选项代替 -K 选项。

~]# rpm -Kvv --nosignature <rpm_file>

另外,怎样辨别软件包的真正开发者是不是可信的呢 ? 如果软件包使用了开发人员的 GnuPG 密钥进行签名,你就能知道谁是真正的软件开发者了。没有 GPG 签名的软件包不一定不可信,但我们更愿意相信有签名的软件包。

通过使用 GnuPG (Gnu Private Guard) 签名的软件包,能够帮助我们确定软件包的可信赖性。

GnuPG 是一个保证传输安全的工具,它是 PGP 加密技术的免费替代程序。使用 GnuPG,你能够确认你从另处所收到的文档、数据的可信赖性和有效性。GnuPG 还支持 PGP 5.x 版本文件的验证。

GnuPG 在系统安装就被默认安装上了,从而保证你能够马上使用它验证下载来的 RPM 软件包。在进行验证之前,还需要导入正确的密钥。

 

导入密钥

Fedora 的 GnuPG 密钥位于 /etc/pki/rpm-gpg/ 目录。以 Fedora 项目组为例,要验证来自 Fedora 项目组的软件包,需要先导入与你处理器平台相应的密钥。

~]# rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64

输入以下命令,则可以查看所以已经安装的密钥

~]# rpm -qa gpg-pubkey*
gpg-pubkey-57bbccba-4a6f97af
...

输出结果中的内容,即是已经安装在系统中的密钥

使用 rpm -qi <key> 则可以查看指定密钥的详细信息

~]# rpm -qi gpg-pubkey-57bbccba-4a6f97af

 

验证软件包签名

成功导入 GnuPG 密钥之后,使用以下命令即可对 RPM 软件包进行签名验证

~]# rpm -K <rpm_file>

如果不出问题,将会显示类似于 “rsa sha1 (md5) pgp md5 OK” 的信息,这说明软件包的签名已经通过验证,软件包完整并能够安全安装。

更多关于 Fedora 项目的密钥的信息,可参考 http://fedoraproject.org/en/keys

RPM 命令常见用法实例

RPM 不仅是管理系统软件包的强力工具,还是论断和修复难题得力助手。通过查看和学习各个选项的实际示例,能让你更好的理解这一点。

RPM 不仅是管理系统软件包的强力工具,还是论断和修复难题得力助手。通过查看和学习各个选项的实际示例,能让你更好的理解这一点。

也许你不小心删除了某个文件,但是又不确定删除的是什么。通过验证整个系统的软件包,RPM 能够帮你找出哪些文件丢失,或者出现了其它问题。

~]# rpm -Va

如果文件丢失,或者不通过验证,你可以考虑重新安装软件包来解决这个问题。

有时你看到某个不认识的文件,可以使用以下命令找出它属于哪一个软件包

~]# rpm -qf /usr/bin/ghostscript
ghostscript-8.70-1.fc12.x86_64

如果你想查看某个程序的更多信息,可以使用以下命令列出与该程序相关的文档资料

~]# rpm -qdf /usr/bin/free
/usr/share/doc/procps-3.2.8/BUGS
/usr/share/doc/procps-3.2.8/FAQ
/usr/share/doc/procps-3.2.8/NEWS
/usr/share/doc/procps-3.2.8/TODO
/usr/share/man/man1/free.1.gz
/usr/share/man/man1/pgrep.1.gz
/usr/share/man/man1/pkill.1.gz
/usr/share/man/man1/pmap.1.gz
/usr/share/man/man1/ps.1.gz
/usr/share/man/man1/pwdx.1.gz
/usr/share/man/man1/skill.1.gz
/usr/share/man/man1/slabtop.1.gz
/usr/share/man/man1/snice.1.gz
/usr/share/man/man1/tload.1.gz
/usr/share/man/man1/top.1.gz
/usr/share/man/man1/uptime.1.gz
/usr/share/man/man1/w.1.gz
/usr/share/man/man1/watch.1.gz
/usr/share/man/man5/sysctl.conf.5.gz
/usr/share/man/man8/sysctl.8.gz
/usr/share/man/man8/vmstat.8.gz

你有一个新的软件包,却不知道它是干什么用的。可以使用以下命令查看软件包的详细信息

~]# rpm -qip crontabs-1.10-31.fc12.noarch.rpm
Name        : crontabs                     Relocations: (not relocatable)
Version     : 1.10                              Vendor: Fedora Project
Release     : 31.fc12                       Build Date: Sat 25 Jul 2009
 06:37:57 AM CEST
Install Date: (not installed)               Build Host:
 x86-6.fedora.phx.redhat.com
Group       : System Environment/Base       Source RPM:
 crontabs-1.10-31.fc12.src.rpm
Size        : 2486                             License: Public Domain and
 GPLv2
Signature   : RSA/SHA1, Tue 11 Aug 2009 01:11:19 PM CEST, Key ID
 9d1cc34857bbccba
Packager    : Fedora Project
Summary     : Root crontab files used to schedule the execution of
 programs
Description :
The crontabs package contains root crontab files and directories.
You will need to install cron daemon to run the jobs from the crontabs.
The cron daemon such as cronie or fcron checks the crontab files to
see when particular commands are scheduled to be executed.  If commands
are scheduled, it executes them.
Crontabs handles a basic system function, so it should be installed on
your system.

如果你想知道 crontabs 软件包向系统中安装了哪些文件,可以使用以下命令查看

~]# rpm -qlp crontabs-1.10-31.fc12.noarch.rpm
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
/etc/crontab
/usr/bin/run-parts
/usr/share/man/man4/crontabs.4.gz

以上只是一些简单的示例,相信你在实际使用 RPM 之后,会发现它更多有用的地方。