我正在使用专有代码库,所有者希望用户获得有用的堆栈跟踪信息,但无法查看源代码。生成带有调试符号但没有源代码的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,一些小的适当整数)而不是默认值,以生成没有源代码的调试符号。