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

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

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

最佳答案

-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}

在spec文件中,将%{_rpmconfigdir}/find-debuginfo.sh替换为修改/自定义的find-debuginfo.sh脚本。

在规范文件中包括修改后的脚本,例如
SourceN: my-find-debuginfo.sh

然后使用宏
%{SOURCEn}

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

10-08 13:12