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
    Copy to Clipboard Toggle word wrap

    使用 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
Copy to Clipboard Toggle word wrap

验证步骤

  • 确保 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]
    Copy to Clipboard Toggle word wrap
注意

调用 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%]
    Copy to Clipboard Toggle word wrap

创建二进制 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
    Copy to Clipboard Toggle word wrap

3.3.2.3. 从源 RPM 构建 RPM

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

步骤

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

    # rpmbuild {-ra|-rb|-rp|-rc|-ri|-rl|-rs} [rpmbuild-options] SOURCEPACKAGE
    Copy to Clipboard Toggle word wrap

其他资源

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat