RPM缺少依赖性

时间:2012-10-09 23:30:48

标签: dependencies rpm

我正在创建一个包含以下共享对象的RPM:

libexample.so --> libexample.so.1.0.1
libexample.so.1.0.1

当我使用rpmbuild创建RPM时,我看到rpm提供libexample.so.1.0.1。 但是,在要求部分,我看到libexample.so

在项目的makefile中,我引用libexample.so

当我尝试安装rpm时,它会出现错误"Missing dependency: libexample.so",即使它被打包为指向libexample.so.1.0.1的链接文件

所以问题是某种方式RPM不考虑我打包libexample.so(这是libexample.so.1.0.1的链接)

但是,我使用--nodeps选项安装了rpm,一切正常。

所以,我的问题是我应该如何修改以避免错过依赖的错误。

为了验证缺少的依赖性是由链接文件引起的,我将libexample.so从链接文件更改为实际的共享对象(cp libexample.so.1.0.1 libexample.so),并且rpm没有给出缺少的依赖性错误。< / p>

有人可以帮忙告诉我我错过了什么,以及如何修复RPM中丢失的依赖错误。非常感谢您的帮助和时间。

2 个答案:

答案 0 :(得分:1)

尝试运行

rpm -q --requires _your_rpm_name_

看看它是否会返回与你期望的不同的东西。我怀疑自动依赖脚本可能会将依赖项设置为您期望的其他内容。您可以通过将以下标记添加到spec文件中来禁用自动依赖项,然后手动调出所需的包:

AutoReqProv: no
Requires: _rpm_providing_libexample.so_

参见http://ftp.rpm.org/max-rpm/s1-rpm-depend-auto-depend.htmlhttp://ftp.rpm.org/max-rpm/s1-rpm-depend-manual-dependencies.html

答案 1 :(得分:0)

我不是专家,但我认为问题在于RPM不知道sonames。如果RPM文件具有依赖关系,则会检查RPM系统。

请参阅my blog post