我有一系列 RPM 规范文件,但其中未设置任何 debuginfo 指令。当我运行 rpmbuild 时,有些软件包会生成 debuginfo rpm,有些则不会。rpm 决定是否生成 debuginfo 的标准是什么?在我看来:
- 只有 arch 软件包会生成调试信息(noarch 软件包不会)
- 仅规范中的主包会生成调试信息(子包不会)
有人可以确认这些规则是否有效以及是否还有其他规则?
我已经安装了 redhat-rpm-config,根据https://fedoraproject.org/wiki/Packaging:Debuginfo?rd=Packaging/Debuginfo。
答案1
为了生成 debuginfo RPM,%debug_package
需要将指令添加到 .spec 文件中(通常,在所有包和子包定义之后和该%prep
部分之前,被空行包围)。
参考:https://trac.netlabs.org/rpm/wiki/RpmHowToPackagers#Generatingdebuginfopackages
另一个很好的博客:https://distracted-it.blogspot.com/2014/08/building-rpm-debuginfo-package-not.html
答案2
2022 年更新答案。
Debuginfo 是针对二进制文件自动生成的(架构是不是 noarch
) 软件包,除非使用以下方法禁用:
%global debug_package %{nil}
参考https://docs.fedoraproject.org/en-US/packaging-guidelines/Debuginfo/#_missing_debuginfo_packages
noarch 软件包构建不生成 debuginfo 软件包是正常的。如果在其他情况下(未明确禁用)缺少该软件包,则说明存在问题。其中一种情况是 缺少 %build 部分带有一些 rpmbuild 版本。
答案3
%debug_package
必须包含在.spec
文件中。我以前在阶段之前写过
%prep
。另外,__debug_package
宏必须是 1。