System Administration & Network Administration
Updated Sun, 05 Jun 2022 00:59:39 GMT

rpm -ivh, failed dependency already installed

I'm having trouble installing a set of custom build rpms. The spec file produces 7 binary rpms. I installed 5 of them using rpm -ivh and then decided that I also needed the remaining two. When I try to install those, rpm complains:

# 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

Yet that exact dependency is already installed:

# rpm -q foo

I discovered 'rpm -R', which provides more details on the package:

# 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: 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

The only suspicious thing I see is the '-1:' token in the lib-cpp-devel package, which I can't explain.

What is the '-1:' and could that be related to this issue? How can I debug this further or workaround it? FWIW this is all occuring on a relatively fresh install of CentOS 6.



The -1: token is the Epoch tag, so it looks like your RPM may have been built with an Epoch equaling 1. If that's the case, foo-lib-cpp-devel's dependency on foo must include the Epoch, like so:

Requires: foo = 1:0.7.0-1

Or, using macros:

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