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。
先决条件
您已在系统上安装了
rpmbuild
工具:# dnf install rpm-build
以下
Hello World!
实现已放入~/rpmbuild/SOURCES/
目录中:-
您要打包的程序的
spec
文件已存在。
流程
导航到
~/rpmbuild/SPECS/
指令,其包含创建的spec
文件:$ cd ~/rpmbuild/SPECS/
输入
rpmbuild
命令和指定的spec
文件来构建源 RPM:$ rpmbuild -bs <specfile>
-bs
选项代表 build source。例如,要为
bello
、pello
和cello
程序构建源 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
流程
导航到
~/rpmbuild/SRPMS/
指令,其包含源 RPM:$ cd ~/rpmbuild/SRPMS/
从源 RPM 重新构建二进制 RPM:
$ rpmbuild --rebuild <srpm>
使用源 RPM 文件的名称替换 srpm。
例如,要从其 SRPM 中重新构建
bello
、pello
和cello
,请输入:$ 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
选项。 为
bello
、pello
和cello
安装 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
流程
导航到
~/rpmbuild/SPECS/
指令,其包含spec
文件:$ cd ~/rpmbuild/SPECS/
从其
spec
构建二进制 RPM:$ rpmbuild -bb <spec_file>
例如,要从其
spec
文件构建bello
、pello
和cello
二进制 RPM,请输入:$ rpmbuild -bb bello.spec $ rpmbuild -bb pello.spec $ rpmbuild -bb cello.spec