哪里转寻依赖呢?(Where does rpm look for dependencies?)

2019-07-30 08:48发布

我有一个转,我有建设使用的rpmbuild。 可以说,这是sample.rpm。 它成功生成。 转速有和可执行(姑且称之为INIT)。

当我尝试使用安装它rpm -ivh sample.rpm它让我依赖失败。

比方说,错误是Failed dependency for: example.so这意味着RPM无法找到此共享对象文件。 (即使这样的文件在同一目录下存在)。

所以,我安装rpm的rpm -ivh sample.rpm --nodeps (因为我知道我所需要这样的文件)。

为什么是rpm无法安装这些rpm呢? 它在哪里查找目标文件? (不Linux加载寻找这些的.so)。 我有LD_LIBRARY_PATH当我运行从它运行的rpm安装文件(INIT),包括路径这些。所以等。

那么,为什么是rpm无法安装sample.rpm(确切部位在哪里查找依赖关系)? 有什么事情需要在当转速为建立时指定?

Answer 1:

一个RPM文件的相关性在其指定.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
$

依赖libx1.so本身应通过RPM安装,因此它的存在是由RedHat的软件包管理器维护的数据库输入。 换言之,物理存在libx1.so文件系统上不适合的依赖性测试的标准。

要找出哪些软件包提供的依赖,运行以下命令:

$ rpm -q --whatprovides libx1

如果没有包提供libx1.so ,您的RPM将继续呈现依赖错误,除非你删除libx1.so从“要求:”行。

要禁用依赖自动检测,你可以添加到您.spec文件:

AutoReqProv: no

多很多的信息在rpm.org和rpm5.org 。



文章来源: Where does rpm look for dependencies?