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

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

我在安装一组自定义构建的 rpm 时遇到了麻烦。 spec 文件生成了 7 个二进制 rpm。我使用 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:” 是什么?这可能与这个问题有关吗?我该如何进一步调试或解决它?FWIW 这一切都发生在相对较新的 CentOS 6 安装上。

谢谢!

答案1

-1:令牌是 Epoch 标签,因此您的 RPM 可能以等于 1 的 Epoch 构建。如果是这样,foo-lib-cpp-develfoo 必须包括时代,像这样:

Requires: foo = 1:0.7.0-1

或者,使用宏:

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

答案2

如果您非常确定这两个包兼容,您可以执行以下操作之一:

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

1a. 使用 rpm 安装新的 foo-lib-cpp-devel 包(可能必须使用 --nodeps 或 --force 开关)

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

相关内容