1

我制作了两个 RPM(lib.rpm 和 program.rpm),一个包含共享库,例如。libtest.so、libtest.so.1、libtest.so.1.0。另一个包含链接到共享库的单个二进制文件,例如。测试程序。

我在没有问题的新机器上安装了 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 中找到了该文件。

我的两个规格文件都是最低限度的。除了包描述之外,我只在 %files 下添加了一个条目,并将 AutoReqProv 设置为 no。

那么给了什么?

4

1 回答 1

1

在您提供的pastebin_link中,我注意到

AutoReqProv: no

我认为这会导致不填充Providesrpm 的数据 - 因此有关文件的信息不会进入 rpm 数据库。

解决方案可能是将其删除AutoReqProv或设置为yes.

编辑: 根据 Nghia 的评论,它没有帮助:

不知道你为什么需要这个,但如果你真的需要,明确提及

Provides: /usr/lib64/libtest.so /usr/lib64/libtest.so.1 /usr/lib64/libtest.so.1.0

可能会解决你的问题。

于 2013-02-21T11:27:05.990 回答