shi*_*oid 5 compiling rpm dependencies
安装rpm软件包时,它会警告缺少必要的依赖库。事实上,我已经从源代码安装了该库,所以我想rpm只是不知道这一点。
那么我可以让我rpm知道现有的图书馆,以及如何?也许在rpm配置文件中添加一些代码?
顺便说一句,通过(再次)安装丢失的库rpm可能会(快速)解决问题,但有时没有rpm可用的版本。
RPM 依赖数据库无法判断您是否从源代码安装了软件包。RPM 数据库只知道 RPM 包中存在的元数据,从源安装的包不包含此元数据。
一些从源代码构建包的配置脚本会产生pkg-config,这是关于已安装包的元数据。然而,来自pkg-config和 RPM 元数据(或DEB元数据,或pacman元数据)的元数据之间没有明确的集成。打包发行版时,打包者将特定格式的元数据插入到包(例如 RPM 包)中,而该元数据用于确定依赖关系。不是以任何其他形式提供的元数据。
另一方面,您可以在同一系统上拥有不同版本的库。默认情况下(即根据大多数软件包遵循的GNU 编码标准),configure脚本应将其产品安装到/usr/local. 虽然发行版打包的包(例如RPM)应该将它们的内容安装到/usr.
因此,如果按照惯例(称为FHS),并保持从源安装的软件包/库/usr/local,然后通过安装相同的库RPM不会与你的库冲突(因为发行的打包做跟随FHS)。
当没有可用的 RPM 时,您可以自己构建它。为此,您需要从源代码构建包/库并将其安装到一个虚拟位置(构建根)。然后提供RPM包所需的元数据,打包成RPM文件。TLDP 有一份关于构建 RPM的过时但非常全面的指南。
这是坚持使用包管理器的一个很好的理由,例如yum,或者在最坏的情况下rpm避免从源代码安装。
因此,解决方案是使用 RPM 包安装缺少的依赖项。首先从源代码中删除您安装的那个是个好主意,但这有时会有点困难。