4.6. 构建 RPM


您可以使用 rpmbuild 命令构建 RPM 软件包。使用此命令时,期望某个目录和文件结构,它们与 rpmdev-setuptree 工具设置的结构相同。

不同的用例和所需结果需要不同的参数组合到 rpmbuild 命令。以下是主要用例:

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

    • 从源 RPM 重新构建二进制 RPM 。
    • spec 文件构建二进制 RPM。

4.6.1. 构建源 RPM

构建源 RPM (SRPM)有以下优点:

  • 您可以保留部署到环境中的 RPM 文件的某些 Name-Version-Release 的确切的源。这包括确切的 spec 文件、源代码以及所有相关的补丁。这对于跟踪和调试目的很有用。
  • 您可以在不同的硬件平台或构架上构建二进制 RPM。

先决条件

流程

  1. 导航到 ~/rpmbuild/SPECS/ 指令,其包含创建的 spec 文件:

    $ cd ~/rpmbuild/SPECS/
  2. 输入 rpmbuild 命令和指定的 spec 文件来构建源 RPM:

    $ rpmbuild -bs <specfile>

    -bs 选项代表 build source

    例如,要为 bellopellocello 程序构建源 RPM,请输入:

    $ rpmbuild -bs bello.spec
    Wrote: /home/admiller/rpmbuild/SRPMS/bello-0.1-1.el8.src.rpm
    
    $ rpmbuild -bs pello.spec
    Wrote: /home/admiller/rpmbuild/SRPMS/pello-0.1.2-1.el8.src.rpm
    
    $ rpmbuild -bs cello.spec
    Wrote: /home/admiller/rpmbuild/SRPMS/cello-1.0-1.el8.src.rpm

验证

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

4.6.2. 从源 RPM 重新构建一个二进制 RPM

要从源 RPM (SRPM)重建二进制 RPM,请使用 rpmbuild 命令和 --rebuild 选项。

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

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

先决条件

  • 您已在系统上安装了 rpmbuild 工具:

    # dnf install rpm-build

流程

  1. 导航到 ~/rpmbuild/SRPMS/ 指令,其包含源 RPM:

    $ cd ~/rpmbuild/SRPMS/
  2. 从源 RPM 重新构建二进制 RPM:

    $ rpmbuild --rebuild <srpm>

    使用源 RPM 文件的名称替换 srpm

    例如,要从其 SRPM 中重新构建 bellopellocello,请输入:

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

调用 rpmbuild --rebuild 涉及以下过程:

  • 将 SRPM 的内容(spec 文件和源代码)安装到 ~/rpmbuild/ 目录中。
  • 使用安装的内容构建一个 RPM。
  • 删除 spec 文件和源代码。

在使用以下任一方法构建后,您可以保留 spec 文件和源代码:

  • 在构建 RPM 时,请使用 rpmbuild 命令和 --recompile 选项,而不是 --rebuild 选项。
  • bellopellocello 安装 SRPM:

    $ 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%]

4.6.3. 从 spec 文件构建二进制 RPM

要从其 spec 文件构建二进制 RPM,请使用 rpmbuild 命令和 -bb 选项。

先决条件

  • 您已在系统上安装了 rpmbuild 工具:

    # dnf install rpm-build

流程

  1. 导航到 ~/rpmbuild/SPECS/ 指令,其包含 spec 文件:

    $ cd ~/rpmbuild/SPECS/
  2. 从其 spec 构建二进制 RPM:

    $ rpmbuild -bb <spec_file>

    例如,要从其 spec 文件构建 bellopellocello 二进制 RPM,请输入:

    $ rpmbuild -bb bello.spec
    
    $ rpmbuild -bb pello.spec
    
    $ rpmbuild -bb cello.spec
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.