RPM打包替换默认打包脚本

最近在制作f31的glib2的rpm包时遇到一个奇怪的问题:打包过程中,依赖检查什么都没有问题,但是打出的rpm包安装会报告依赖缺少libc.so.6(GLIBC_PRIVATE)。

但是使用repoquery或者dnf的whatprovides查找均没有这个符号的提供者,查找了打包日志,确实在处理文件依赖的时候有生成libc.so.6(GLIBC_PRIVATE)的字样。

经过高人指点+Google,找到一点端倪,可能是一个bug,但是不知道是rpm自身的还是glibc的。

https://groups.google.com/forum/#!topic/uk.comp.os.linux/PX3rstGtZRQ

然后经过指点,发现类似问题在17年前就被解决过:

https://valgrind-users.narkive.com/tuzlpRRG/rpm-dependency-problem-red-hat-7-3-failed-dependencies-libc-so-6-glibc-private

照猫画虎,在增加一个脚本为source,然后,在spec中指定此source为__find_requires的值,但是打包过程中发现此脚本未被调用。经google后发现当前的rpm系统应该是优先使用内置的模块来完成这些工作,所以需要显示指定fallback到外部脚本。来源此链接:

https://www.redhat.com/archives/rpm-list/2005-February/msg00004.html

照此操作,打包成功,但是会有一个警告:

warning: Deprecated external dependency generator is used!

此问题应该再做更深一步研究,就是libc.so.6(GLIBC_PRIVATE)出现在依赖列表里的真正原因。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据