试图安装一个新build的RPM,但它说它依赖于它不应该依赖的库

有问题的软件包是samba-3.6.7。 我已经成功地构build了这个包,但是当试图安装它时,它会返回,

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

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

使用mock构build您的RPM。 这build立在chroot中,只包含用于构buildRPM的必要软件包,并有助于防止这种情况发生。

编辑spec文件并删除libtalloc.so.1的require条目。 重build,它应该工作。 让这些元数据条目不正确可能很难追查到。

libtalloc.so.1是由自动依赖生成器添加的,这是不可靠的。

另一种可能是你的构build中的某些东西实际上与libtalloc.so.1链接,这就是构build环境很重要的原因。

假设自动依赖关系生成器失败,你想修复它,你可以通过在spec文件中覆盖__perl_requires (取决于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'