Linux RPM 构建错误:空 debugsourcefiles.list文件

最近在学习鸟哥的Linux私房菜基础篇,遇到了一些问题。
环境:CentOS8
在第22章SPRM打包,一个打包自己的软件的范例中,按照鸟哥的配置部署了main.spec,rpmbuild -ba main.spec后,却显示:

[root@zl SPECS]# rpmbuild -ba main.spec
正在执行(%prep):/bin/sh -e /var/tmp/rpm-tmp.weuNRc
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf main-0.1
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/main-0.1.tgz
+ /usr/bin/tar -xof -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd main-0.1
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ echo 'Patch #0 (main_0.1_to_0.2.patch):'
Patch #0 (main_0.1_to_0.2.patch):
+ /usr/bin/patch --no-backup-if-mismatch -p1 --fuzz=0
patching file cos_value.c
patching file main.c
patching file Makefile
patching file sin_value.c
+ exit 0
正在执行(%build):/bin/sh -e /var/tmp/rpm-tmp.PdUJfR
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd main-0.1
+ make clean main
rm -f main main.o haha.o sin_value.o cos_value.o
cc    -c -o main.o main.c
main.c: In function 'main':
main.c:13:2: warning: implicit declaration of function 'haha' [-Wimplicit-function-declaration]
  haha( name );
  ^~~~
main.c:14:2: warning: implicit declaration of function 'sin_value' [-Wimplicit-function-declaration]
  sin_value( angle );
  ^~~~~~~~~
main.c:15:2: warning: implicit declaration of function 'cos_value' [-Wimplicit-function-declaration]
  cos_value( angle );
  ^~~~~~~~~
cc    -c -o haha.o haha.c
cc    -c -o sin_value.o sin_value.c
cc    -c -o cos_value.o cos_value.c
gcc -o main main.o haha.o sin_value.o cos_value.o -lm
+ exit 0
正在执行(%install):/bin/sh -e /var/tmp/rpm-tmp.2FErCw
+ umask 022
+ cd /root/rpmbuild/BUILD
+ '[' /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64 '!=' / ']'
+ rm -rf /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64
++ dirname /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64
+ mkdir -p /root/rpmbuild/BUILDROOT
+ mkdir /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64
+ cd main-0.1
+ rm -rf /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64
+ mkdir -p /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64/usr/local/bin
+ install -m 755 main /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64/usr/local/bin
+ /usr/lib/rpm/find-debuginfo.sh -j2 --strict-build-id -m -i --build-id-seed 0.1-1.el8 --unique-debug-suffix -0.1-1.el8.x86_64 --unique-debug-src-base main-0.1-1.el8.x86_64 --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 110000000 -S debugsourcefiles.list /root/rpmbuild/BUILD/main-0.1
extracting debug info from /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64/usr/local/bin/main
gdb-add-index: No index was created for /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64/usr/local/bin/main
gdb-add-index: [Was there no debuginfo? Was there already an index?]
/usr/lib/rpm/sepdebugcrcfix: Updated 0 CRC32s, 1 CRC32s did match.
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-ldconfig
/sbin/ldconfig: Warning: ignoring configuration file that cannot be opened: /etc/ld.so.conf: No such file or directory
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile 1
+ /usr/lib/rpm/brp-python-hardlink
+ PYTHON3=/usr/libexec/platform-python
+ /usr/lib/rpm/redhat/brp-mangle-shebangs
处理文件:main-0.1-1.el8.x86_64
Provides: main = 0.1-1.el8 main(x86-64) = 0.1-1.el8
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires: libc.so.6()(64bit) libc.so.6(GLIBC_2.2.5)(64bit) libc.so.6(GLIBC_2.7)(64bit) libm.so.6()(64bit) libm.so.6(GLIBC_2.2.5)(64bit) rtld(GNU_HASH)
处理文件:main-debugsource-0.1-1.el8.x86_64
错误:空 %file 文件 /root/rpmbuild/BUILD/main-0.1/debugsourcefiles.list

在网上百度了一下,有人建议在spec文件中%define debug_package %{nil},避免生成debuginfo包,我尝试了一下不行,也有的说%_debugsource_template %{nil}只屏蔽 debugsource 包,还能保留 debuginfo 的分包和 debug 信息的剥离,我的还是不行。。。

直接查找问题没有找到,又看了一些别人汇总的关于rpm打包的问题,在rpm打包问题汇总中我看到涉及到/usr/lib/rpm/macros这个文件,直觉这是rpm打包配置文件,在这篇博客下有这样一句话:在生成rpm包同时,还会生成debuginfo包,如果要避免生成debuginfo包:这个是默认会生成的rpm包。则可以使用下面的命令:
echo ‘%debug_package %{nil}’ >> ~/.rpmmacros
因为我没找到~/.rpmmacros,所以尝试直接在/usr/lib/rpm/macros中添加%debug_package %{nil},再次rpmbuild -ba main.spec,成功。但是相比于鸟哥给出的结果,很明显少了一个debuginfo包的生成:

已写至:/root/rpmbuild/SRPMS/main-0.1-1.el8.src.rpm
已写至:/root/rpmbuild/RPMS/x86_64/main-0.1-1.el8.x86_64.rpm
正在执行(%clean):/bin/sh -e /var/tmp/rpm-tmp.4IBbIR
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd main-0.1
+ /usr/bin/rm -rf /root/rpmbuild/BUILDROOT/main-0.1-1.el8.x86_64
+ exit 0

于是我进一步在/usr/lib/rpm/macros中搜索关于debuginfo的信息,结合之前给出的debugsource.list为空,我猜测是不是我的CentOS8没有安装能够给出debuginfo的服务,然后在macros中有关于一个find-debuginfo.sh,在里面查找到了debugsource.list文件的来源,猜测应该是没有产生debug信息,该文件为空,这一猜想将在之后验证。
新手小白,如有错误,欢迎指正。
参考:
https://blog.csdn.net/u014007037/article/details/78727526 RMP打包遇到问题
http://ask.loongnix.org/?/question/1331 编译 rpm 时,debugsourcefiles.list 为空怎么解决?
http://ask.loongnix.org/?/question/256
debugsourcefiles.list文件为空是什么原因?

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: null 是一个表示值的特殊关键字,它通常用于表示变量或对象没有被赋值或不存在。在程序中,当我们需要清一个变量或对象时,通常会将其设置为 null 值。同时,当我们需要判断一个变量或对象是否为时,也可以使用 null 进行比较。在某些编程语言中,null 值也可以用于表示函数或方法没有返回值。 ### 回答2: RPM构建错误:/var/tmp/rpm-tmp.7UhBP6 (%build) 退出状态不好。这个错误提示表明在RPM构建过程中,在%build阶段遇到了执行命令时的错误,导致构建失败。 造成这个错误的原因可能有很多种。首先,查看具体的错误信息,通常会有更详细的描述,以便更好地定位问题。可以在构建日志中查找关键字,如“error”、“failure”等,以确定失败的具体位置。 常见的引起构建错误的问题有以下几点: 1. 缺少依赖:在%build阶段执行的命令可能需要特定的软件包或库,而这些依赖项可能没有被正确安装。使用"rpm -q"命令检查所需软件包是否已安装,确保它们的版本符合要求。 2. 环境变量问题:某些软件包构建过程可能依赖于特定的环境变量。检查构建命令是否正确设置了必需的环境变量,或者是否需要在.spec文件中设置对应的宏定义。 3. 路径问题:构建过程中涉及到的文件路径可能不存在或无法访问。确保构建命令中使用的路径是正确的,并且当前用户具有足够的权限来访问文件。 4. 构建脚本错误构建脚本中的错误语法或逻辑问题可能导致构建失败。检查.spec文件中%build阶段的命令逻辑是否正确,确保语法没有错误。 解决这个错误的方法取决于具体的原因。一般来说,可以通过检查依赖关系、环境变量、文件路径和构建脚本等方面来确定问题所在,并进行相应的修复。另外,还可以尝试在构建环境中提高日志级别,以便更详细地查看错误信息,帮助定位和解决问题。 ### 回答3: RPM 构建错误: /var/tmp/rpm-tmp.7UhBP6 (%build) 退出状态不好。 在RPM构建过程中,我们可能会遇到各种错误。这个错误提示告诉我们在执行%build阶段时出现了退出状态不好的情况。 要解决这个问题,我们首先需要查看完整的构建日志,以便找到问题所在。我们可以在构建目录中找到/var/tmp/rpm-tmp.7UhBP6文件,该文件包含了%build阶段的日志信息。 打开日志文件后,我们需要仔细查看错误信息,并且对照构建脚本中的代码来定位问题。错误信息通常会告诉我们出现了具体什么错误,例如缺少依赖项、文件权限问题、语法错误等。 一种常见的原因是缺少构建所需的依赖项。在RPM构建中,我们需要确保所有依赖包已经安装,并且在.spec文件中正确地声明了这些依赖项。 另外,构建过程中也可能会发生权限问题。如果构建脚本尝试访问或修改了没有足够权限的文件或目录,那么就会导致退出状态不好的错误。 此外,如果构建脚本中存在语法错误,也会导致构建失败。需要仔细检查构建脚本中的代码,确保没有语法错误或书写错误。 一旦我们找到了错误的原因,我们就可以采取相应的措施来解决。有时,我们可能需要安装缺少的依赖项,或者调整文件或目录的权限。在修复问题后,我们可以重新运行RPM构建过程,以验证问题是否已经解决。 总而言之,RPM构建错误 /var/tmp/rpm-tmp.7UhBP6 (%build) 退出状态不好的含义是构建过程中遇到了错误。通过查看构建日志并定位问题,可以采取适当的措施来解决问题。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值