10.1. 使用 Red Hat 软件包管理器 (RPM)

Red Hat Linux 发行版,包括内核、库和应用程序,均以 RPM 文件的形式提供。RPM 文件,也称为 “软件包”,是一种分发软件的方式,可以轻松地进行安装、升级、查询和删除。RPM 文件包含软件包的名称、版本、其他文件依赖关系信息(如果适用)、平台(例如 Intel 或 Alpha 等)以及默认文件安装位置等信息。

RPM 实用程序最初由 Red Hat 开发,并作为开源产品提供,这在 Linux 社区中很常见。其他开发人员接手并添加了额外的功能。RPM 软件包文件的方法已经变得流行,不仅在 Red Hat 发行版中使用,也在其他一些发行版中使用。

流行的 Linux 应用程序几乎总是以 RPM 文件的形式发布,通常很快就会发布。然而,在 Unix 世界中,软件包分发的实际标准仍然是通过所谓的 “tarballs” 来实现的。Tarballs 只是可以使用 ``tar'' 实用程序读取的文件。与使用 RPM 相比,从 tar 安装通常要繁琐得多。那么人们为什么要这样做呢?不幸的是,有时开发人员需要几周时间才能将软件包的最新版本转换为 RPM 格式(许多开发人员首先以 tarballs 形式发布它们)。

如果您开始使用 tar 安装或升级您的系统或应用程序,您的 RPM 数据库将变得过时且不一致。这实际上没什么大不了的(当我使用 Slackware 时,我完全使用 tar -- 别无选择 -- 也没有太大的不便),但只要有可能,我都会尽量耐心等待 RPM 文件的发布,或者可能向软件包的开发人员发送礼貌的请求。(您还可以构建自己的 RPM 文件并将其分发给其他人,这有时对那些没有能力或时间生成此类文件的开发人员很有帮助。)

检查软件是否以 RPM 形式提供的最佳地点之一是 RPM 仓库,网址为 http://rufus.w3.org/linux/RPM/。该仓库提供了索引类别,这有助于定位给定的 RPM 文件,并包含指向数千个此类文件的指针。

要查询软件包,请使用 ``rpm -q pkg-name'' (例如 ``rpm -q pine''). RPM 将告诉您已安装的软件包版本,或者该软件包未安装。

假设软件包已经安装,并且版本早于您下载的更新软件包(应该是这样),那么您应该能够使用 ``rpm -Uvh pkg-name'' 来应用更新。如果一切顺利,软件包将自动安装并立即可以使用。如果不是,RPM 会给您一个很好的理由(例如,可能需要先升级支持软件包)。这可能需要一些思考,但是诸如此类的问题很容易解决。

另一方面,如果软件包尚未安装,并且您决定要安装它,请键入 ``rpm -ivh pkg-name''. 如果有任何需要的支持软件包,RPM 会告诉您。

有时,您会想要安装一个仅以源代码格式提供的软件包。事实上,除非您是从受信任的来源(例如 Red Hat FTP 站点)安装软件包,否则您应该从源代码安装,以防二进制文件包含木马或其他恶意程序(当然,源代码 RPM 也可能包含此类东西,但它们不太可能包含,因为它们很可能很快被其他开发人员发现)。

从源代码安装软件包的方法是指定 ``rebuild'' 开关到 RPM 实用程序。例如

rpm -ivh --rebuild foo.src.rpm

上面的命令将配置和编译 ``foo'' 软件包,在 ``/usr/src/redhat/RPMS/i386/'' 目录中(假设您在 Intel 平台上使用 Linux)。然后,您可以像往常一样安装软件包。

最后,如果您在编译源代码包时遇到问题(可能需要修改 makefile 或更改配置选项等),您可以使用以下步骤(再次以我们虚构的 ``foo'' 软件包示例为例)来编译源代码、构建新的二进制软件包,然后从二进制软件包安装

rpm -ivh foo.src.rpm
cd /usr/src/redhat/SPECS
pico -w foo.spec

对 ``.spec'' 文件进行您认为需要的任何更改,然后键入

rpm -ba foo.spec

这将使用您对 ``.spec'' 文件所做的任何更改来重建软件包。如上所述,生成的二进制 RPM 文件将位于 ``/usr/src/redhat/RPMS/i386/'', 并且可以像往常一样安装。

您应该查阅 Red Hat 文档以获取有关 RPM 的更多信息。它是一个功能非常强大的工具,值得更详细地学习。关于 RPM 的最佳信息来源是 ``Maximum RPM'',它既有书籍形式,也有 postscript 格式,网址为 http://www.rpm.org/maximum-rpm.ps.gz。(如果您决定打印 postscript 文档,请注意您需要大量纸张!)还有一个较小的指南,``RPM-HOWTO'', 网址为 http://www.rpm.org/support/RPM-HOWTO.html,也可供参考。