【发布时间】:2013-02-28 18:35:42
【问题描述】:
我制作了两个 RPMS(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。
那是什么?
【问题讨论】:
-
'rpm -q --provides lib_rpm_name' 有什么作用?
-
ldd看到它并不意味着 RPM 数据库知道它。rpm -qlp lib.rpm将显示libRPM 正在安装的文件(RPM 知道)。例如,如果你正在做一些事情来生成或链接libtest.so.1到%post,那么你做错了。 -
'rpm -q --provides lib.rpm' 给出
test = 1.0.0-1。 rpm -qlp lib.rpm 给出/usr/lib64/libtest.so /usr/lib64/libtest.so.1 /usr/lib64/libtest.so.1.0。 -
您可以尝试在您的 program.rpm 规范中添加“Requires: lib.rpm”以查看会发生什么吗?
-
@Nghia lib 编译的是 64 位还是 32 位?您的应用似乎在寻找 64 位,但 rpm 似乎提供 32 位
标签: shared-libraries rpm