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
选项代表构建源。
以下示例显示了为 bello
、pello
和 cello
项目构建源 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 中重建
bello
、pello
和cello
,请运行:$ 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 文件构建 bello
、pello
和 cello
二进制 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
部分。