我有两个RPMS(lib.rpm和program.rpm),一个包含共享库,例如。 libtest.so,libtest.so.1,libtest.so.1.0。另一个包含链接到共享库的单个二进制文件,例如。 test_program。
我在没有问题的新机器上安装了lib.rpm。复制test_program并运行正常。然后我构建包含test_program的program.rpm,再次没有问题。但当我做rpm -ivh program.rpm时,我得到了:
error: Failed dependencies:
libtest.so.1() (64bit) is needed by test_program-0.1-1.x86_64
然而,当在test_program上执行ldd时,它清楚地找到了/usr/lib64/libtest.so.1中的文件。
我的spec文件都是最低限度的。除了包描述之外,我只添加了%files下的条目和AutoReqProv设置为no。
那是什么给了什么?
答案 0 :(得分:1)
在pastebin_link中,我注意到了
AutoReqProv: no
我认为这会导致不填充rpm的Provides
数据 - 因此有关文件的信息不会转到rpm数据库。
解决方案可能是删除AutoReqProv
或将其设置为yes
。
编辑: 根据Nghia的评论,它无济于事:
不确定为什么需要这个,但如果你真的这样做,请明确提及
Provides: /usr/lib64/libtest.so /usr/lib64/libtest.so.1 /usr/lib64/libtest.so.1.0
可能会解决您的问题。