How to Resolve “yum update” Failures Due to Coreutils Dependency Conflicts and RPM Database Corruption in RHEL/CentOS


2 views

The error message clearly shows a dependency conflict between coreutils packages:

Error: Package: coreutils-libs-8.4-31.el6_5.2.x86_64 (@updates)
           Requires: coreutils = 8.4-31.el6_5.2
           Removing: coreutils-8.4-31.el6_5.2.x86_64 (@updates)
               coreutils = 8.4-31.el6_5.2
           Updated By: coreutils-8.4-37.el6.x86_64 (base)
               coreutils = 8.4-37.el6

The OOM killer message indicates memory issues, but we should first address the RPM database corruption shown by:

error: db3 error(-30974) from dbenv->failchk: DB_RUNRECOVERY: Fatal error, run database recovery

Here's how to properly rebuild the RPM database:

# Stop any running yum processes
rm -f /var/lib/rpm/__db*
rpm --rebuilddb
yum clean all

The specific version conflict requires manual intervention. First, verify installed versions:

rpm -qa | grep -E 'coreutils|kernel'
rpm -q --qf '%{name}-%{version}-%{release}.%{arch} (%{installtime:date})\n' coreutils coreutils-libs

To resolve, try this sequence:

# Temporarily disable all repositories except base
yum --disablerepo=\* --enablerepo=base update coreutils coreutils-libs

# If still failing, try manual downgrade
yum downgrade coreutils-8.4-31.el6_5.2

When seeing OOM killer messages during yum operations:

# Check available memory during updates
free -m
# Alternative approach for low-memory systems
yum update --disableplugin=fastestmirror --nogpgcheck -x kernel\*

For servers with <4GB RAM, create a swap file:

dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

After resolving dependencies:

rpm -Va coreutils\*
yum check
package-cleanup --dupes
package-cleanup --problems

For persistent issues, this nuclear option may help:

rm -rf /var/lib/yum/*
yum clean all
yum makecache

The primary error you're encountering stems from a version mismatch between coreutils and coreutils-libs packages:

Error: Package: coreutils-libs-8.4-31.el6_5.2.x86_64 (@updates)
       Requires: coreutils = 8.4-31.el6_5.2
       Removing: coreutils-8.4-31.el6_5.2.x86_64 (@updates)
           coreutils = 8.4-31.el6_5.2
       Updated By: coreutils-8.4-37.el6.x86_64 (base)
           coreutils = 8.4-37.el6

Your system logs reveal OOM killer terminating yum processes:

Nov 14 08:19:47 nico kernel: Out of memory: Kill process 30995 (yum-complete-tr) score 149 or sacrifice child

First, repair the RPM database:

# Stop any running yum processes
rm -f /var/run/yum.pid

# Clean up corrupted RPM database
rm -f /var/lib/rpm/__db*
rpm --rebuilddb
yum clean all

Then address the memory constraints:

# Create swap space if needed (adjust size as necessary)
dd if=/dev/zero of=/swapfile bs=1M count=2048
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile

Try forcing the correct version alignment:

# Manual package download and installation
yumdownloader coreutils-8.4-31.el6_5.2 coreutils-libs-8.4-31.el6_5.2
rpm -Uvh --oldpackage coreutils-*.rpm

For stubborn transactions, manually clear them:

# Remove transaction history
rm -f /var/lib/yum/history/*.sqlite

# Alternative cleanup command
package-cleanup --problems
package-cleanup --cleandupes

After all cleanup, run the update with verbose logging:

yum update -v --skip-broken > /var/log/yum-update.log 2>&1

Monitor memory usage during this process with:

watch -n 1 free -m