我正在创建一个包含以下共享对象的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中丢失的依赖错误。非常感谢您的帮助和时间。
答案 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.html 和http://ftp.rpm.org/max-rpm/s1-rpm-depend-manual-dependencies.html
答案 1 :(得分:0)
我不是专家,但我认为问题在于RPM不知道sonames。如果RPM文件具有依赖关系,则会检查RPM系统。
请参阅my blog post。