RPM

RPM 命令常见用法实例

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

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

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

~]# rpm -Va

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

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

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

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

检查 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 命令验证软件包

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

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

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

~]# rpm -V tree

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

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

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

~]# rpm -Va

验证已安装的 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)

使用 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 命令升级软件包

升级软件包与安装软件包的命令十分相似,只是升级使用 -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 选项,即能够安装,也能够升级软件包。

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

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

软件包已经被安装

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

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

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

使用 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 命令安装软件包

输入以下命令即可执行软件包的安装了,其中 -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 软件包

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

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

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

 

获取 RPM 软件包

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

页面