如何在没有源代码的情况下构建debuginfo RPM?

Guy*_*ter 5 packages rpm debug-symbols rpmbuild

我正在使用专有代码库,所有者希望用户获得有用的堆栈跟踪信息,但无法查看源代码。生成带有调试符号但没有源代码的Debian dbg软件包很简单,但是Redhat debuginfo RPM是自动使用源代码创建的。

有没有一种方法可以配置rpmbuild来构建不带源代码的debuginfo RPM?

如果不是,从debuginfo包中删除源代码的最佳方法是什么?有人有脚本吗?

小智 5

-debuginfo 包只是一个子包,可以在没有源代码的情况下手动创建。自动生成将必要的语法添加到规范文件中,但您也可以手动执行此操作,在规范文件中添加调试信息包。

禁用*-debuginfo.rpm 的自动生成,find-debuginfo.sh在 末尾运行%install,然后删除源文件。

另一个(更简单/更干净)的方法是删除源文件覆盖这个宏

%__debug_install_post   \
   %{_rpmconfigdir}/find-debuginfo.sh %{?_missing_build_ids_terminate_build:--strict-build-id} %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}
Run Code Online (Sandbox Code Playgroud)

在规范文件中,替换%{_rpmconfigdir}/find-debuginfo.sh为修改/定制的find-debuginfo.sh脚本。

在规范文件中包含修改后的脚本,如

SourceN: my-find-debuginfo.sh
Run Code Online (Sandbox Code Playgroud)

然后使用宏

%{SOURCEn}
Run Code Online (Sandbox Code Playgroud)

(其中 N == n,一些适当的小整数)而不是默认生成没有源代码的调试符号。