rpm:如何禁用 debuginfo

Mar*_*ark 3 rpm specfile

操作系统 红帽 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宏?

chu*_*utz 6

TL;DR:将以下行添加到您的规范文件中:

%global debug_package %{nil}
Run Code Online (Sandbox Code Playgroud)

您没有提到这是什么操作系统,但我的经验是,调试信息是为二进制包自动生成的,并且您必须专门为非 noarch 包禁用它。

如何禁用此处记录:https://docs.fedoraproject.org/en-US/packaging-guidelines/Debuginfo/#_useless_or_incomplete_debuginfo_packages_due_to_other_reasons

如果您希望在等待改进时禁用生成无用的 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)