rpmbuild 中文手册

发布于 2021-07-15 12:42:11 字数 3438 浏览 1526 评论 0

原文:http://www.jinbuguo.com/pkgmanager/redhat/rpmbuild.html

名字

rpmbuild - 创建 RPM 包

语法

创建包

rpmbuild {-ba|-bb|-bp|-bc|-bi|-bl|-bs} [rpmbuild-options] SPECFILE ...
rpmbuild {-ta|-tb|-tp|-tc|-ti|-tl|-ts} [rpmbuild-options] TARBALL ...
rpmbuild {--rebuild|--recompile} SOURCEPKG ...

其他

rpmbuild --showrc

rpmbuild-options

[--buildroot DIRECTORY] [--clean] [--nobuild]
[--rmsource] [--rmspec] [--short-circuit]
[--noclean] [--nocheck] [--target PLATFORM]

描述

rpmbuild 用于创建软件的二进制包和源代码包。
一个"包"包括文件的归档以及用来安装和卸载归档中文件的元数据。
元数据包括辅助脚本、文件属性、以及相关的描述性信息。
软件包有两种:

  • 二进制包,用来封装已经编译好的二进制文件;
  • 源代码包,用来封装源代码和要构建二进制包需要的信息。

必须选择下列"模式"之一:
(1)从 spec 构建, (2)从 Tar 构建, (3)重新构建, (4)重新编译, (5)显示配置

通用选项

下列选项可以用于所有不同的模式。

-?, --help
打印详细的帮助信息

--version
打印一行详细的版本号信息

--quiet
输出尽可能少的信息,通常只有错误信息才会显示出来。

-v 输出冗余信息,例如进度之类的信息。

-vv 输出大量冗长的调试信息

--rcfile FILELIST
FILELIST 中冒号分隔的每个文件都被 rpm 按顺序读取,从中获得配置信息。
只有列表中的第一个文件必须存在,波浪线将被替换为 $HOME 。默认值是:
/usr/lib/rpm/rpmrc:/usr/lib/rpm/redhat/rpmrc:/etc/rpmrc:~/.rpmrc

--pipe CMD
将 rpm 的输出通过管道送到 CMD 命令。

--dbpath DIRECTORY
使用 DIRECTORY 中的数据库,而不是默认的 /var/lib/rpm

--root DIRECTORY
以 DIRECTORY 作为根文件系统进行操作。这意味着将使用 DIRECTORY 中的数据库来进行依赖性检测,
并且任何操作(比如安装时的 %post 和构建时的 %prep)都将 chroot 到 DIRECTORY 下执行。

-D, --define='MACRO EXPR'
将 MACRO 宏的值定义为 EXPR

(1,2)构建选项

构建命令的一般形式是

rpmbuild -bSTAGE|-tSTAGE [rpmbuild-options] FILE ...

如果需要根据某个 spec 文件构建,那么使用 -b 参数。
如果需要根据某个 tar 归档(可能是压缩过的)中的 spec 文件构建,那么使用 -t 参数。
STAGE 指定了要完成的构建和打包的阶段,必须是下列其中之一:

a 构建二进制包和源代码包(在执行 %prep, %build, %install 之后)
b 构建二进制包(在执行 %prep, %build, %install 之后)
p 执行 spec 文件的"%prep"阶段。这通常等价于解包源代码并应用补丁。
c 执行 spec 文件的"%build"阶段(在执行了 %prep 之后)。这通常等价于执行了"make"。
i 执行 spec 文件的"%install"阶段(在执行了 %prep, %build 之后)。这通常等价于执行了"make install"。
l 执行一次"列表检查"。spec 文件的"%files"段落中的宏被扩展,检测是否每个文件都存在。
s 只构建源代码包

此外,还可以使用下列选项:

--buildroot DIRECTORY
在构建时,使用 DIRECTORY 目录覆盖默认的 BuildRoot 值

--clean
在打包完成之后删除构建树

--nobuild
不执行任何实际的构建步骤。可用于测试 spec 文件。

--noclean
不执行 spec 文件的"%clean"阶段(即使它确实存在)。

--nocheck
不执行 spec 文件的"%check"阶段(即使它确实存在)。

--nodeps
不检查编译依赖条件是否满足

--rmsource
在构建后删除源代码(也可以单独使用,例如"rpmbuild --rmsource foo.spec")

--rmspec
在构建之后删除 spec 文件(也可以单独使用,例如"rpmbuild --rmspec foo.spec")

--short-circuit
直接跳到指定阶段(也就是跳过指定阶段前面的所有步骤),只有与 c 或 i 或 b 连用才有意义。
仅用于本地调试。以此种方法构建出的包将被标记为"依赖关系不满足",以阻止其被正常使用。

--target PLATFORM
在构建时,将 PLATFORM 解析为 arch-vendor-os ,并以此设置宏 %_target, %_target_cpu, %_target_os 的值。

(3,4)重新构建和重新编译选项

有两种构建方法:

rpmbuild --rebuild|--recompile SOURCEPKG ...

使用 --recompile 的话,rpmbuild 将安装指定的源代码包(SOURCEPKG),然后进行准备、编译、安装。
而使用 --rebuild 的话,还会在 --recompile 的基础上再额外构建一个新的二进制包。
在构建结束时,构建目录将被删除(就好像用了 --clean),源代码和 spec 文件也将被删除。

(5)显示配置

rpmbuild --showrc

将显示 rpmbuild 使用的、在 rpmrc 和 macros 配置文件中定义的选项的值。

文件

rpmrc 配置文件

/usr/lib/rpm/rpmrc
/usr/lib/rpm/redhat/rpmrc
/etc/rpmrc
~/.rpmrc

Macro 配置文件

/usr/lib/rpm/macros
/usr/lib/rpm/redhat/macros
/etc/rpm/macros
~/.rpmmacros

临时文件

/var/tmp/rpm*

参见

gendiff(1),
popt(3),
rpm(8),
rpm2cpio(8),
rpmkeys(8)
rpmspec(8),
rpmsign(8),

rpmbuild --help

http://www.rpm.org/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

JSmiles

生命进入颠沛而奔忙的本质状态,并将以不断告别和相遇的陈旧方式继续下去。

0 文章
0 评论
84961 人气
更多

推荐作者

已经忘了多久

文章 0 评论 0

15867725375

文章 0 评论 0

LonelySnow

文章 0 评论 0

走过海棠暮

文章 0 评论 0

轻许诺言

文章 0 评论 0

信馬由缰

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文