我在安装一组自定义构建的 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-devel
则foo
必须包括时代,像这样:
Requires: foo = 1:0.7.0-1
或者,使用宏:
Requires: foo = %{epoch}:%{version}-%{release}
答案2
如果您非常确定这两个包兼容,您可以执行以下操作之一:
- 使用 rpm 上的 --nodeps 开关删除当前的 foo-lib-cpp-devel 包。
1a. 使用 rpm 安装新的 foo-lib-cpp-devel 包(可能必须使用 --nodeps 或 --force 开关)
OR
- 使用 rpm 上的 --force --nodeps 开关安装新的 foo-lib-cpp-devel 包。