首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图

施用 RPM 打包软件,第 1 部分: 构建和分发包

2014-11-10 来源:读书人网 【读书人网(Reader8.cn):综合教育门户网站】
使用 RPM 打包软件,第 1 部分: 构建和分发包顾名思义,开源软件的主要优势就是允许了解应用程序的内部工作

使用 RPM 打包软件,第 1 部分: 构建和分发包

顾名思义,开源软件的主要优势就是允许了解应用程序的内部工作原理。有了源代码,您可以研究应用程序的工作原理,更改、改进和扩展其操作,(在应用程序许可允许下)借鉴代码并将其用于其他用途,以及将应用程序移植到新平台上。

然而,这种自由访问并不总是我们所需要的。例如,用户可能不希望从源代码进行构建。相反,他或她可能只想像传统 “紧凑包装” 的应用程序一样安装该软件:插入媒体、运行安装程序、回答一系列提示,然后运行应用程序。确实,对于大部分计算机用户来说,这种预构建的软件是他们最希望得到的。预构建代码对系统特性不那么敏感,因此更统一且可预测。

通常,预构建的开源应用程序称为,捆绑了运行应用程序所需的所有二进制文件、数据和配置文件。包还包括将应用程序部署到系统上所需的所有步骤,这些步骤通常以脚本形式提供。脚本可以生成数据,启动和停止系统服务,或者操作文件和目录。脚本还可以执行操作来将现有软件升级到新版本。

由于每个操作系统都具有自己的独特特性,所以包通常仅适用于特定系统。而且,每个操作系统提供了自己的包管理器,一个用于在系统中添加和删除包的特殊实用程序。例如,基于 Debian Linux? 的系统使用 Advanced Package Tool (APT),而 Fedora Linux 系统使用 RPM Package Manager。包管理器通过添加和删除包中的各个文件来来预防不完整和错误的安装,以及 “卸载” 应用程序。包管理器还维护着系统上安装的所有包的清单,可以预先检查前提条件和辅助条件是否满足。

如果您是一名软件开发人员或系统管理员,以包的形式提供应用程序可以使安装、升级和维护更加轻松。在本文中,您将了解到如何使用流行的 RPM Package Manager 捆绑实用程序。作为演示,您将捆绑网络实用程序?wget,该程序用于从 Internet 下载文件。wget?实用程序很有用,但在标准的系统分发版中很难找到它。(而类似的?curl?通常包含在系统分发版中。)您将发现,您可以使用 RPM 分发几乎所有内容(脚本、文档和数据),以及执行几乎所有维护任务。

手动构建 wget

wget?实用程序,与其他许多开源应用程序一样,可以手动构建。要将?wget?捆绑在一个包中,首先需要了解构建过程。根据一般约定,构建?wget?需要 4 个步骤:

  1. 下载并解压源代码。
  2. 配置构建版本。
  3. 编译代码。
  4. 安装软件。

您可以从 ftp.gnu.org 下载?wget?源代码的最新版本(参见 参考资料 获取链接,截至 2009 年 9 月末,wget?的最新版本为 1.12)。其余步骤需要在命令行操作,如 清单 1 所示。


清单 1. 安装 wget
回页首

构建您的第一个 RPM

在继续之前,需要注意一点。在过去,包只能由根用户和超级用户构建,因为只有根用户才能访问系统源代码库。但是,此方法具有一定的冒险性。因为根用户可以更改系统上的任何文件,它可以在临时构建 RPM 期间随意添加外部文件或删除重要文件,从而更改正在运行的系统。最近,RPM 系统经过了更改,允许任何用户在主目录中构建 RPM。不需要根用户特权就能构建 RPM,这可以阻止更改核心系统文件。下面介绍了这种更加现代的方法。

要构建 RPM,必须:

  • 依照?rpmbuild?规范设定一个目录结构。
  • 将源代码和附带文件放在目录中合适的位置。
  • 创建 spec 文件。
  • 编译 RPM。可以选择编译源 RPM,以与其他人共享您的源代码。

    首先,构建目录。在主目录下的一个子目录中,假设为 $HOME/mywget,创建 5 个子目录:

    • BUILD。BUILD 用作实际编译软件的暂存空间。
    • RPMS。RPMS 包含?rpmbuild?所编译的二进制 RPM。
    • SOURCES。SOURCES 存储源代码。
    • SPECS。SPECS 包含您的 spec 文件,您想要构建的一个 RPM 对应一个 spec 文件。
    • SRPMS。SRPMS 包含在这个过程中构建的源 RPM。

      您至少需要 SOURCES 中的源代码和 SPEC 中的一个 spec 文件。

      将源代码(理想情况下应捆绑为一个 tarball 压缩文件)复制到 SOURCES 目录,如?清单 2?所示。如果有必要,重命名 tarball 压缩文件,以包含应用程序的版本号,便于与其他文件区分开。约定的命名格式为包-版本.tar.gz。对于?wget,您可以使用:


      清单 2. 复制源代码
      回页首

      构建 RPM

      现在您的文件已经就绪,spec 文件也已经定义了,接下来就可以构建实际的 RPM 文件了。要构建它,使用适当命名的?rpmbuild?实用程序:

      回页首

      RPM 的其他用途

      这篇简短介绍文章只触及了 RPM 的用途的表面。尽管它最常用于安装软件和附带文件,但您几乎可以打包任何内容,从系统脚本到源代码到文档。在本系列第二期中您将会看到,还可以使用 RPM 修补源代码,以及重新构建和重新安装软件。RPM 分发格式可以在许多 Linux 系统上找到,是在 Red Hat 和 Fedora 等系统中安装二进制软件的首选方法。

      如果您使用 RPM 构建和打包软件,那么也将能够体验到 RPM 的这些其他用途。