我有一个转,我有建设使用的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(确切部位在哪里查找依赖关系)? 有什么事情需要在当转速为建立时指定?
一个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 。