微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

rpm在哪里寻找依赖项?

我有一个使用rpmbuild构建的rpm.让我们说它是sample.rpm.
它成功构建. rpm具有可执行文件(让我们称之为init).

当我尝试使用rpm -ivh sample.rpm安装它时,它显示我失败的依赖项.

假设错误是失败的依赖关系:example.so这意味着rpm无法找到此共享对象文件. (即使so文件存在于同一目录中).

所以,我将rpm安装为rpm -ivh sample.rpm –nodeps(因为我知道我有所需的so文件).

为什么rpm无法安装那些rpms呢?
它在哪里寻找目标文件? (linux加载器是否会查找这些.so).我有LD_LIBRARY_PATH来包含这些.so的路径,所以当我从rpm运行安装的文件(init)时,它运行.

那么为什么rpm无法安装sample.rpm(它究竟在哪里寻找依赖项)?
是否需要在构建rpm时指定某些内容

RPM文件的依赖项在“Requires:”行的.spec文件中指定.

示例SPEC文件

Summary: <Summary for my Linux project>
Name: <Name for my Linux project>
Version: 2.5.1
Release: GA
Requires: libx1.so >= 2.6.3
BuildArch: i586
Group: System / Applications
License: GPL 2.0
vendor: <my organization>

您还可以运行此命令以确定需要哪些依赖项:

$rpm -q --requires <my_rpm>
libx1.so.2
$

应该通过RPM安装依赖项libx1.so本身,以便将其存在输入RedHat Package Manager维护的数据库中.换句话说,文件系统上libx1.so的物理存在不是依赖性测试的标准.

要找出哪个包提供依赖项,请运行以下命令:

$rpm -q --whatprovides libx1

如果没有软件包提供libx1.so,则除非从“Requires:”行中删除libx1.so,否则RPM将继续显示依赖项错误.

要禁用自动检测依赖项,可以将其添加到.spec文件中:

AutoReqProv: no

更多信息是在rpm.orgrpm5.org.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐