Resolving “rpmlib(FileDigests) <= 4.6.0-1" Dependency Error When Installing RPMs on CentOS 5


1 views

The error message you're seeing indicates a fundamental version mismatch between your system's RPM capabilities and what the package requires. Let's break down the syntax:

rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadIsXz) <= 5.2-1

This means:

  • rpmlib refers to RPM's internal capabilities (not a separate package)
  • The parentheses indicate specific features (FileDigests and PayloadIsXz)
  • The <= version specifies the maximum required version of these capabilities

CentOS 5 ships with RPM 4.4.2.3, which predates these features. The package was built for systems with:

# Compare versions
$ rpm --version
rpm-4.4.2.3

The key problems:

  • Your RPM version is too old to understand XZ-compressed payloads
  • The FileDigests feature wasn't implemented in your RPM version
  • This is a fundamental incompatibility, not just missing dependencies

Option 1: Find a Compatible Package Version

For EPEL specifically:

# For CentOS 5, use EPEL 5 packages
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm
rpm -ivh epel-release-latest-5.noarch.rpm

Option 2: Manual Package Extraction

If you must use the newer package:

# Extract contents without installing
rpm2cpio epel-release-6-5.noarch.rpm | cpio -idmv

# Then manually place files
cp etc/yum.repos.d/epel.repo /etc/yum.repos.d/
cp etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 /etc/pki/rpm-gpg/

Option 3: RPM Rebuild (Advanced)

Rebuild the package with compatible settings:

# Install rebuild tools
yum install rpm-build

# Rebuild with old compatibility
rpmbuild --rebuild --define "_source_filedigest_algorithm md5" \
--define "_binary_filedigest_algorithm md5" epel-release-6-5.src.rpm

To resolve the NOKEY warning:

# Import the EPEL 6 key (even if you're on CentOS 5)
rpm --import https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6

# Or disable verification (not recommended)
rpm -ivh --nogpgcheck epel-release-6-5.noarch.rpm

While you might consider upgrading RPM, this would require:

  • Replacing core system components
  • Potential system instability
  • Possible incompatibility with other packages

In most cases, finding a compatible package version is safer than trying to force newer packages onto an old system.

After applying any solution, verify EPEL is properly configured:

yum repolist
yum --disablerepo="*" --enablerepo="epel" list available

When you encounter errors like:

rpmlib(FileDigests) <= 4.6.0-1 is needed by package
rpmlib(PayloadIsXz) <= 5.2-1 is needed by package

This indicates your RPM version is too old to handle the package's requirements. The syntax rpmlib(Feature) represents internal RPM capabilities, not separate packages.

CentOS 5 ships with RPM 4.4.2.3, which predates these features:

  • FileDigests: Introduced in RPM 4.6.0 for stronger file verification
  • PayloadIsXz: Added in RPM 5.2 for XZ-compressed payloads

Option 1: Install Compatible EPEL Release

For CentOS 5, use the legacy EPEL package:

wget https://archives.fedoraproject.org/pub/archive/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm

Option 2: Force Installation (Not Recommended)

If absolutely necessary, you can force installation with:

rpm -ivh --nodeps epel-release-6-5.noarch.rpm

Warning: This may cause system instability.

Option 3: RPM Backport (Advanced)

Compile newer RPM tools for CentOS 5:

wget http://rpm.org/releases/rpm-4.6.x/rpm-4.6.1.tar.gz
tar xzf rpm-4.6.1.tar.gz
cd rpm-4.6.1
./configure --prefix=/usr/local/rpm4.6
make
sudo make install

For the "NOkey, key ID 0608b895" warning:

sudo rpm --import https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6

Consider upgrading to a supported OS version. CentOS 5 reached EOL in March 2017 and contains unpatched security vulnerabilities.