RPM无法从另一个RPM中找到共享库

时间:2013-02-19 05:29:11

标签: shared-libraries rpm

我有两个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。

那是什么给了什么?

1 个答案:

答案 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

可能会解决您的问题。