尝试安装一个新构建的 RPM,但它说它依赖于一个不应该依赖的库

尝试安装一个新构建的 RPM,但它说它依赖于一个不应该依赖的库

有问题的软件包是 samba-3.6.7。我已经成功构建了该软件包,但在尝试安装它时,它返回,

error: failed dependencies:
libtalloc.so.1 is needed by samba-3.6.7

我不知道为什么会发生这种情况。libtalloc.so.1由我当前的 samba 包(我正在替换它)提供,但这个新的 samba 提供了libtalloc.solibtalloc.so.2。 为什么它仍然依赖于libtalloc.so.1以及我该如何修复它?

答案1

使用 构建您的 RPM mock。这将在 chroot 中构建,其中仅包含构建 RPM 所需的软件包,并有助于防止出现此类情况。

答案2

编辑 spec 文件并删除 libtalloc.so.1 的需要条目。重建它,它应该可以工作。如果这些元数据条目不正确,则很难追踪。

答案3

libtalloc.so.1是由自动依赖生成器添加的,但它并不是绝对可靠的。

另一种可能性是,您的构建中的某些内容实际上与之相关,libtalloc.so.1 这就是构建环境如此重要的原因。

假设自动依赖项生成器失败并且您想要修复它,您可以通过__perl_requires在 spec 文件中覆盖(取决于 rpm 的版本)来实现:

source1: %{name}-filter-requires.sh
%define __perl_requires %{SOURCE1}

然后%{name}-filter-requires.sh是:

#!/bin/sh

/usr/lib/rpm/perl.req $* |\
  sed -e '/libtalloc.so.1/d'

相关内容