Linux系统中的RPM简说
发布时间:2006-12-15 10:38:37来源:红联作者:asiaec
在安装 Linux 时,您或许会注意到关于正在安装的 RPM 的许多信息。RPM 代表 Redhat Package Manager(Redhat 包管理器),这是 Redhat 的贡献,现在已成为管理 Redhat 和 UnitedLinux 以及其他许多发行版本上的软件的标准。RPM 本质上就是一个包,包含可以立即在特定机器体系结构上安装和运行的 Linux 软件。例如,我们通过一个 RPM 安装了 Webmin 包。最初加载到发行版本中的所有软件都是通过一个 RPM 来安装的。
RPM 剖析 RPM 是文件包。它包括的 .spec 文件提供了关于包及其功能和依赖关系(即在该包能够运行之前必须安装其他哪些包)的信息。.spec 还包含包中的文件清单,指定这些文件必须加载到系统中的何处,以及它们的初始权限如何。RPM 还包含安装前脚本,这是由包开发人员编写的。RPM 其次还包含已编译的二进制文件。最后,RPM 包含了安装后脚本。
RPM 结构 .spec / 安装前脚本 / 二进制文件 / 二进制文件 ... / 二进制文件 / 安装后脚本 /在安装 RPM 时,系统首先检查该包的依赖关系是否得到满足。如果不满足, 安装过程就会终止,除非您指定了迫使安装无论如何都要继续的选项。如果一切顺利,安装前脚本就会运行。这个脚本可以做任何事情。它通常创建用户和目录。然而,它可以做许多类型的动态配置,甚至以自定义的方式编译运行系统的源代码。如果安装前脚本成功完成,二进制文件将依照清单被复制到系统上。在复制完所有的文件和设置了它们的权限之后,安装后脚本就会运行。同样,这个脚本几乎能够做任何事情。一旦完成所有这些步骤,关于包的信息就被添加到 RPM 数据库,安装过程就完成了。使用这种简单的机制,您能够执行通过更完善的商业安装程序所能执行的所有功能。
RPM 数据库 RPM 的优雅之处是 RPM 数据库。这个数据库通常位于 /var/lib/rpm 目录,它包含关于系统上已安装的每个 RPM 的信息。这个数据库知道包之间的依赖关系,当删除某个包将导致其他包无法工作时,它将发出警告。这个数据库知道最初随某个包安装的每个文件以及这些文件在系统上的最初状态。它还知道每个包的文档和配置文件的位置。这听起来好像是大量的信息,事实上确实如此。但它并不是过多而庞大的。在一个包含 1,066 个包、由 203,272 个文件组成的系统上,数据库文件仅有 45 MB!在加载和卸载包时,RPM 使用这个数据库来检查依赖关系。用户还可以在这个数据库中查询关于包的信息。
了解 RPM 来自何处 RPM 在安装时将文件复制到您的系统上,并执行脚本。由于 RPM 是以 root 身份运行的,因此所有这些功能都以 root 身份执行。因而在将某个 RPM 安装到系统之前,知道它的由来是很重要的。就像许多 Windows 软件一样,恶意的代码可以像包含在其他包中一样容易地包含在 RPM 中。来自厂商的 RPM 一般都是安全的,但是要对从未知来源随机下载和安装的内容保持警惕。