操作系统 红帽 8.4
我知道%debug_package
在文件中包含宏spec
将为包生成调试信息,并生成mypackage-debuginfo-<VERSION>.<ARCH>
rpm。然而有趣的是,我的规范文件没有这个宏,但调试信息却已构建。
然而,在文件的顶部spec
有一些全局变量:
%global _hardened_build 1
%global sysrepo 0
%undefine _missing_build_ids_terminate_build
%define _unpackaged_files_terminate_build 0
Run Code Online (Sandbox Code Playgroud)
我想知道其中之一是否启用%debug_package
宏?
TL;DR:将以下行添加到您的规范文件中:
%global debug_package %{nil}
Run Code Online (Sandbox Code Playgroud)
您没有提到这是什么操作系统,但我的经验是,调试信息是为二进制包自动生成的,并且您必须专门为非 noarch 包禁用它。
如果您希望在等待改进时禁用生成无用的 debuginfo 包
find-debuginfo.sh
,或者不太可能增强它来为您的包生成良好的 debuginfo(例如,没有体系结构相关文件,但由于安装而包不是 noarch)它使用的路径),%global debug_package %{nil}
在规范文件中使用,并确保在其旁边添加注释,解释这样做的原因。
如果它在您的版本上不起作用,您可以深入研究以下命令的输出:
rpm --showrc
Run Code Online (Sandbox Code Playgroud)
在我的 Rocky 8.5 版本上,我看到该debug_package
宏是定义额外包的宏,因此将其设置为%{nil}
有效禁用它。您还可以看到noarch
软件包如何没有调试信息。
$ rpm --showrc| sed -ne '/^-13: debug_package/,/^-/p'
-13: debug_package
%ifnarch noarch
%global __debug_package 1
%_debuginfo_template
%{?_debugsource_packages:%_debugsource_template}
%endif
%{nil}
-13: defined %{expand:%%{?%{1}:1}%%{!?%{1}:0}}
Run Code Online (Sandbox Code Playgroud)