RPM 说缺少依赖项,但我已经安装了该库(来自源代码)

RPM 说缺少依赖项,但我已经安装了该库(来自源代码)

安装rpm软件包时,它会警告缺少必要的依赖库。事实上,我已经从源代码安装了该库,所以我想rpm只是不知道这一点。

那么我可以让我rpm知道现有的图书馆吗?如何?也许在配置文件中添加一些代码rpm

顺便说一句,(再次)安装缺少的库rpm可能会(快速)解决问题,但有时没有rpm可用的版本。

答案1

RPM 依赖项数据库无法判断您是否从源安装了软件包。 RPM 数据库仅了解 RPM 包中存在的元数据,从源安装的包不包含此元数据。

一些从源代码构建包的配置脚本会生成pkg-config,这是有关已安装包的元数据。然而,来自pkg-configRPM 元数据(或DEB元数据,或pacman元数据)的元数据之间没有明确的集成。当打包发行版时,打包者将特定格式的元数据插入到包(例如 RPM 包)中,并且该元数据用于确定依赖性。不以任何其他形式提供元数据。

另一方面,您可以在同一系统上拥有不同版本的库。默认情况下(即根据GNU 编码标准大多数软件包都遵循)configure脚本应将其产品安装到/usr/local.虽然发行版(例如)打包的软件包RPM应将其内容安装到/usr.

因此,如果您遵循约定(称为FHS)并保留从源代码安装的包/库/usr/local,然后通过安装相同的库RPM不会与您的库冲突(因为发行版的打包程序确实遵循 FHS)。

当没有可用的 RPM 时,您可以自己构建它。为此,您需要从源代码构建包/库并将其安装到虚拟位置(构建根)。然后提供RPM包所需的元数据,并将其打包成RPM文件。 TLDP 有一个过时但非常彻底的构建 RPM 的指南

答案2

这是坚持使用包管理器(例如 )的一个很好的理由yum,或者在最坏的情况下rpm避免从源安装。

因此,解决方案将使用 RPM 包安装缺少的依赖项。首先从源代码中删除您安装的版本是一个好主意,但这有时会有点困难。

相关内容