有问题的软件包是 samba-3.6.7。我已经成功构建了该软件包,但在尝试安装它时,它返回,
error: failed dependencies:
libtalloc.so.1 is needed by samba-3.6.7
我不知道为什么会发生这种情况。libtalloc.so.1
由我当前的 samba 包(我正在替换它)提供,但这个新的 samba 提供了libtalloc.so
和libtalloc.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'