Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.3. 构建 RPM

这部分论述了如何在为程序创建 SPEC 文件后构建 RPM。

RPM 使用 rpmbuild 命令构建。此命令需要特定的目录和文件结构,这与 rpmdev-setuptree 程序设置的结构相同。

不同的用例和所需结果需要不同的参数组合到 rpmbuild 命令。本节描述了两个主要用例:

  • 构建源 RPM
  • 构建二进制 RPM

3.3.1. 构建源 RPM

这一段是过程模块简介:对流程的简短描述。

先决条件

我们要打包的程序的 SPEC 文件必须已经存在。有关创建 SPEC 文件的更多信息,请参阅使用 SPEC 文件

流程

以下流程描述了如何构建源 RPM。

  • 使用指定的 SPEC 文件运行 rpmbuild 命令:

    $ rpmbuild -bs SPECFILE

    使用 SPECfile 替换 SPECFILE-bs 选项代表构建源。

以下示例显示了为 bellopellocello 项目构建源 RPM。

为 bello、pello 和 cello 构建源 RPM.

$ cd ~/rpmbuild/SPECS/

8$ rpmbuild -bs bello.spec
Wrote: /home/<username>/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm

$ rpmbuild -bs pello.spec
Wrote: /home/<username>/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm

$ rpmbuild -bs cello.spec
Wrote: /home/<username>/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm

验证步骤

  • 确保 rpmbuild/SRPMS 目录包含生成的源 RPM。该目录是 rpmbuild 所期望的结构的一部分。

3.3.2. 构建二进制 RPM

以下方法可用于构建二进制 RPM:

  • 从源 RPM 重建二进制 RPM
  • 从 SPEC 文件构建二进制 RPM
  • 从源 RPM 构建二进制 RPM

3.3.2.1. 从源 RPM 重建二进制 RPM

以下流程演示了如何从源 RPM(SRPM)重建二进制 RPM。

步骤

  • 要从 SRPMs 中重建 bellopellocello,请运行:

    $ rpmbuild --rebuild ~/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm
    [output truncated]
    
    $ rpmbuild --rebuild ~/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm
    [output truncated]
    
    $ rpmbuild --rebuild ~/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm
    [output truncated]
注意

调用 rpmbuild --rebuild 涉及:

  • ~/rpmbuild/ 目录中安装 SRPM - SPEC 文件和源代码 -。
  • 使用安装的内容进行构建.
  • 删除 SPEC 文件和源代码。

要在构建后保留 SPEC 文件和源代码,您可以:

  • 构建时,使用带有 --recompile 选项而非 --rebuild 选项的 rpmbuild 命令。
  • 使用以下命令安装 SRPMs:

    $ rpm -Uvh ~/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm
    Updating / installing…​
       1:bello-0.1-1.el8               [100%]
    
    $ rpm -Uvh ~/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm
    Updating / installing…​
    …​1:pello-0.1.2-1.el8              [100%]
    
    $ rpm -Uvh ~/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm
    Updating / installing…​
    …​1:cello-1.0-1.el8            [100%]

创建二进制 RPM 时生成的输出是详细的,这对调试非常有用。输出因不同示例而异,并对应于其 SPEC 文件。

如果软件包没有特定架构,生成的二进制 RPM 位于 ~/rpmbuild/RPMS/YOURARCH 目录中(其中 YOURARCH 是您的架构),或位于 ~/rpmbuild/RPMS/noarch/ 目录中。

3.3.2.2. 从 SPEC 文件构建二进制 RPM

以下步骤演示了如何从 SPEC 文件构建 bellopellocello 二进制 RPM。

步骤

  • 使用 bb 选项运行 rpmbuild 命令:

    $ rpmbuild -bb ~/rpmbuild/SPECS/bello.spec
    
    $ rpmbuild -bb ~/rpmbuild/SPECS/pello.spec
    
    $ rpmbuild -bb ~/rpmbuild/SPECS/cello.spec

3.3.2.3. 从源 RPM 构建 RPM

也可以从源 RPM 构建任何类型的 RPM。要做到这一点,请使用以下步骤。

步骤

  • 使用以下选项之一运行 rpmbuild 命令,并使用指定的源软件包:

    # rpmbuild {-ra|-rb|-rp|-rc|-ri|-rl|-rs} [rpmbuild-options] SOURCEPACKAGE

其他资源

有关从源 RPM 构建 RPM 的详情,请查看 rpmbuild (8) 手册页中的 BUILDING PACKAGES 部分。