rpm -ivh,已安装失败的依赖项

我无法安装一组自定义生成rpms。 spec文件产生7个二进制rpms。 我用rpm -ivh安装了5个,然后决定我还需要剩下的两个。 当我尝试安装这些,rpm抱怨:

# sudo rpm -ivh foo-lib-cpp-devel-0.7.0-1.x86_64.rpm error: Failed dependencies: foo = 0.7.0-1 is needed by foo-lib-cpp-devel-1:0.7.0-1.x86_64 

然而,这个确切的依赖关系已经安装:

 # rpm -q foo foo-0.7.0-1.x86_64 

我发现'rpm -R',它提供了有关软件包的更多细节:

 # rpm -qvRp foo-lib-cpp-devel-0.7.0-1.x86_64.rpm auto: /usr/bin/pkg-config manual: boost-devel manual: libevent-devel >= 1.2 auto: libfoo.so.0()(64bit) auto: libfootnb.so.0()(64bit) auto: libfooz.so.0()(64bit) auto: pkgconfig(foo) = 0.7.0 rpmlib: rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib: rpmlib(FileDigests) <= 4.6.0-1 rpmlib: rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib: rpmlib(VersionedDependencies) <= 3.0.3-1 manual: foo = 0.7.0-1 manual: zlib-devel rpmlib: rpmlib(PayloadIsXz) <= 5.2-1 

唯一可以看到的是lib-cpp-devel软件包中的'-1:'标记,我无法解释。

什么是'-1:'可能与这个问题有关? 我怎样才能进一步debugging或解决它呢? 这是所有发生在一个相对新鲜的CentOS 6安装。

谢谢!

-1:标记是Epoch标记,所以看起来你的RPM可能是用Epoch等于1构build的。如果是这样的话, foo-lib-cpp-develfoo的依赖必须包含Epoch ,就像这样:

 Requires: foo = 1:0.7.0-1 

或者,使用macros:

 Requires: foo = %{epoch}:%{version}-%{release} 

如果您确定这两个软件包是兼容的,则可以执行以下操作之一:

  1. 使用rpm上的–nodeps开关删除当前的foo-lib-cpp-devel软件包。

1A。 使用rpm安装新的foo-lib-cpp-devel软件包(可能必须使用–nodeps或–force开关)

 OR 
  1. 在rpm上使用–force –nodeps开关安装新的foo-lib-cpp-devel软件包。