操作系统 RedHat 8.4
我知道文件%debug_package
中的宏spec
会为软件包生成调试信息,并生成mypackage-debuginfo-<VERSION>.<ARCH>
rpm。但有趣的是,我的 spec 文件没有这个宏,但调试信息却被生成了。
但是,文件顶部spec
有几个全局变量:
%global _hardened_build 1
%global sysrepo 0
%undefine _missing_build_ids_terminate_build
%define _unpackaged_files_terminate_build 0
我想知道其中一个是否启用了%debug_package
宏?
答案1
TL;DR: 将以下行添加到您的 specfile 中:
%global debug_package %{nil}
你没有提到这是什么操作系统,但我的经验是,二进制包会自动生成 debuginfo,你必须具体来说对非 noarch 软件包禁用它。
如果您希望在等待改进时禁用无用的调试信息包的生成,
find-debuginfo.sh
或者如果不太可能对其进行增强以为您的包生成良好的调试信息(例如,没有体系结构相关文件,但是包不是 noarch,因为它使用的安装路径),请%global debug_package %{nil}
在 specfile 中使用,并确保在其旁边添加注释,解释这样做的原因。
如果它在您的版本上不起作用,您可以查阅以下命令的输出:
rpm --showrc
在我的 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}}