|
RPM 是 Red Hat Package Manager 的缩写。由 Red Hat Linux 首先引入(显而易见;)),现在已经被一些主要的 Linux 发行商采用,如 SuSE、Caldera、Conectiva ,当然,还有 Mandrakesoft 。
什么是‘Package’?‘package’就是归档包(archive):其中包含了属于该应用程序或程序库的所有文件。这有点类似于 ZIP 或 TAR 。但除了压缩功能,这个包里还有控制脚本(control scripts)。这些脚本可以被本地的安装程序读出,执行,并存储。可以进行安装、卸载、状态检查、依赖检查等。 管理者通过一个说明文件('specfile':specification file)来控制软件包。这个说明文件明确了相应包中的文件将被安放到哪里,软件正确运行要依赖哪些其他程序,安装卸载前后要执行哪些程序,是谁在什么时候建立的这个包,还有一段包内容的描述,等等。
为了有效地工作,RPM 需要记录系统都安装了哪些软件。这个资料库在‘/var/lib/rpm’。通过这个资料库,您可以了解许多已安装的软件的信息。
section index top
RPM 包及其维护者能完成下面的事情:
-
编译和修补程序源代码. 这对初学者来讲特别方便。编译源码并打补丁 需要更多的知识,although it's by no means black magic。如果觉得编译太枯燥,或者源码太多,甚至有点难以处理,RPM 是好帮手。
-
依赖处理. 不象有些系统铁板一块(如Windows),Linux 系统可以进行不同大小的安装,这取决于系统的用途、个人的喜好等。 没有必要安装所有东西,您可以选择想要的文件、程序及程序库。当您安装新程序时,RPM 会检测您是否已安装新程序所依赖的软件。正是这种处理机制,能防止您意外删除一些其他软件包依赖的程序。
-
提供文件的状态信息. RPM 可以告诉您某个包是否已安装。在安装新的软件包前,您可以进行整合性检查,安装后可以瞧瞧是否正确安装。您还可以查看某个包是什么时候安装的,占了多大空间,包含哪些文档和配置文件,软件包维护者最近做了哪些改动,等等。
-
安全检查. RPM 提供了对软件进行 PGP 或 GPG 签名 的机制,这样可以保证软件包没有被篡改。
-
自动化. RPM 能在许多脚本中用作自动维护的任务。而且还是一些很好的 RPM 图形工具,一些扩展如‘rpmfind’,及 Mandrake Linux 自己的‘urpmi’系统的基础。
-
绿色卸载. 要卸载某 RPM 包,只需一个命令。该命令将删除 RPM 包,但保留一些改动过的文件(主要是一些配置文件和 spool 文件)。
-
保护配置文件. 软件包的维护者能选择如何处理旧版软件的配置文件。要么保留旧文件,将新版软件中的创建为‘rpmnew’文件;要么告诉 RPM 将旧的配置文件重命名为‘rpmsave’文件,并安放新的配置文件。
-
区分运行和编译时需要的文件. 软件包被分割为运行时(runtime)和编译时(compile time,‘devel’)两种。如果您自己不编译源代码,那就不需要安装‘devel’包。或者您也可以在编译软件时安装,完成后再删除。
-
网络功能. 只要您提供文件的完整路径,RPM 并不介意软件包是在本地系统,NFS,还是在 FTP 服务器上。
-
重建简单. 每个自由软件或开源软件的 RPM 包都源于‘Source RPM’(即SRPM 或 'src.rpm')。这些 SRPM 包能用来建立相应的 RPM 软件包。 如果您想在编译时选不同的参数,或将该软件包移到特殊的系统环境(包括不同的系统、内核、库等的版本),或打补丁时,RPM 的这个特性会很有帮助。
section index top
与其他工具一样,RPM 也有些不足:
-
无法自动解决依赖问题. RPM 会告诉您缺什么,但不能自己去抓取、安装。这个主要的不足基本上可以由一些其他工具来弥补,如 Mandrake Linux 的‘urpmi’、脚本程序‘rpmfind’。
-
没有交互式地配置. 软件包通常都包含配置文件和安装后可运行的脚本,但这种配置只能在安装后单独进行。
-
难以预防包中的错误. 每个人都会犯错误,包维护者也不例外。安装了说明文件有误的包,可能导致无法运行程序。甚至在理论上,可以通过 RPM 包安装,有目的地破坏系统(只有‘root’才能安装 rpm 包)。所以,您最好从可信赖的地方获取包。
-
缺乏兼容性保证. 有很多 Linux 发行商和独立的个人在使用 RPM 。不同的打包策略可能导致软件包无法安装,或即使安装了也无法运行(比如将可执行的文件放到了其他目录下)。建议选用您系统的发行商的软件包。
-
最优化. 通过带合适的参数编译源程序,RPM 包可以在相应的处理器下的运行达到最优化。Mandrake Linux 针对奔腾级(Pentium-class,i586)处理器,正是用了这样的办法。 但实际上,这些参数只是很多编译设置中的一小部分。 通常,打包者会启用尽量多的参数,但这导致包变得更大,含的文件数也更多,有时也会受影响速度。当然,如果您想要最好的,就得 自己编译源码。
尽管 RPM 不是最最佳的,但却是很实用的工具,‘urpmi’作为 rpm 的扩展,提供了更多功能。
section index top
RPM 基本处理
|