Linux Troubleshooting GuideLinux Tutorials

How to Fix Transaction Check Error with DNF on RHEL: Step-by-Step Troubleshooting Guide

Encountering a “Transaction Check Error” while managing packages with DNF on Red Hat Enterprise Linux (RHEL) can interrupt your system updates and installations, causing frustration and delays. This error usually indicates conflicts or broken dependencies in the package management system, often related to repository inconsistencies, file overlaps, or database corruption. In this comprehensive guide, we will explore practical solutions to diagnose and resolve these errors effectively. Whether you are a system administrator or a Linux enthusiast, these step-by-step instructions will help you maintain a stable, conflict-free package environment on RHEL, ensuring your system stays up-to-date and reliable.

Understanding the Transaction Check Error on RHEL

The “Transaction Check Error” is reported by DNF when it detects problems during the pre-installation checking phase. This usually happens when packages have conflicting files, unmet dependencies, obsoletes, or corrupted RPM databases. Typical error messages can look like:

# Example error messages from a failed transaction check due to file and dependency issues dnf install httpd

Error: Transaction check error: file /usr/lib64/libfoo.so conflicts between attempted installs of foo-1.2-3.el8.x86_64 and bar-2.0-1.el8.x86_64

This error indicates two packages are trying to install the same file, causing a conflict. Understanding the error helps in choosing the right fix.

Step 1: Diagnose Dependency Conflicts

Dependency conflicts are the most common cause of transaction check errors. DNF provides tools to identify and attempt repairs for broken dependencies.

sudo dnf check

Error: Some packages have unmet dependencies.

Please check the output above for details.

The dnf check command scans for dependency issues. If unresolved, synchronize your installed packages with the versions in enabled repositories.

sudo dnf distro-sync

Dependencies resolved. Nothing to do.

The dnf distro-sync command tries to align installed packages with repository versions, potentially fixing conflicts by downgrading or upgrading packages. If problems persist, installing with the option –allowerasing lets DNF replace conflicting packages during installation.

sudo dnf install --allowerasing package-name

Dependencies resolved.
======================================================================================================================
 Package                            Arch                          Version                              Repository          Size
======================================================================================================================
Removing:
 conflicting-package                x86_64                        1.0-1.el8                           @installed         5.0 M
Installing:
 package-name                      x86_64                        2.0-1.el8                           baseos             3.5 M
Transaction Summary
======================================================================================================================
Remove  1 Package
Install 1 Package
Total download size: 3.5 M
Is this ok [y/N]: y
...

The –allowerasing flag enables removal of packages that block the installation, resolving conflicts automatically.

Step 2: Identify and Resolve File Conflicts

File conflicts occur when multiple packages attempt to install the same files, which is not allowed. To resolve this, identify the owner of conflicting files and remove or replace the conflicting package.

rpm -qf /usr/lib64/libfoo.so

foo-1.2-3.el8.x86_64

The rpm -qf command shows which installed package owns the specified file. If it conflicts with another package, remove the problematic package first before installation.

sudo dnf remove conflicting-package

Dependencies resolved.
Removing:
 conflicting-package                x86_64                        1.0-1.el8                           @installed         5.0 M
Transaction Summary
======================================================================================================================
Remove  1 Package
Is this ok [y/N]: y
...
sudo dnf install desired-package

This process ensures no package overlap occurs on shared files.

Step 3: Clean DNF Cache and Refresh Metadata

A cluttered or corrupted DNF cache can cause transaction errors. Cleaning caches and rebuilding metadata helps eliminate issues from stale data.

sudo dnf clean all

Cleaning repos: baseos appstream extras
Cleaning up everything
sudo dnf makecache

Metadata cache created.

dnf clean all removes all cached repository data including headers and packages. dnf makecache regenerates the metadata cache to ensure up-to-date information for package handling.

Step 4: Rebuild Corrupted RPM Database

The RPM database is critical for package management. Corruption in this database frequently leads to transaction check errors. Rebuilding it can restore normal functionality.

sudo rpm --rebuilddb

sudo rpm -qa | wc -l
1532

The rpm –rebuilddb command reconstructs the RPM database indexes, fixing corruption problems. Counting installed packages after confirms database integrity.

Step 5: Remove Duplicate Packages to Avoid Conflicts

Duplicate installed packages (same name and version) can cause conflicts during transactions. Identify and clean duplicates using these commands.

sudo dnf list --duplicates

Installed Packages
package-name.x86_64    1.0-1.el8          @baseos
package-name.x86_64    1.0-1.el8          @updates
sudo dnf remove --duplicates

Dependencies resolved.
Removing duplicate for package-name.x86_64
Is this ok [y/N]: y

Alternatively, use the package-cleanup utility from the dnf-utils package:

sudo dnf install -y dnf-utils

sudo package-cleanup --dupes

Found duplicate: package-name-1.0-1.el8.x86_64
sudo package-cleanup --cleandupes

Cleaning all duplicate packages

This step removes older duplicate packages, reducing conflicts.

Step 6: Use Force Overwrite as a Last Resort

If none of the above methods work and the conflict stems from a stubborn file collision, you can force installation with file overwrites directly using rpm. This method should be used cautiously.

sudo rpm -ivh --replacefiles /path/to/package.rpm

Preparing packages...
package-name-1.2-1.el8.x86_64.rpm
package package-name-1.2-1.el8.x86_64 is already installed, skipping
warning: /usr/lib64/libfoo.so: replacing file from package old-package-1.0-1.el8.x86_64
Installing : package-name-1.2-1.el8.x86_64 1/1
Verifying  : package-name-1.2-1.el8.x86_64 1/1

Installed:
  package-name.x86_64 1.2-1.el8

The –replacefiles flag allows overwriting conflicting files during RPM installation, but excessive use may destabilize your system.

Preventive Tips for Avoiding Transaction Check Errors

To minimize transaction errors in the future, adhere to these best practices:

  • Stick to official and compatible repositories like the default RHEL repos and EPEL.
  • Verify package updates before installation with dnf check-update.
  • Use dnf history commands to audit and undo recent package transactions:
dnf history list

ID     | Command line             | Date and time    | Action(s)      | Altered

------------------------------------------------------------------------------

15     | install httpd            | 2026-03-10 08:30 | Install       | 1

14     | update                   | 2026-03-09 12:00 | Update        | 15

dnf history undo 14

Undoing transaction 14
Running transaction
Transaction done.

Using these tools supports safer package management and rollback capabilities in case of errors.

Conclusion

Transaction Check Error” messages during DNF operations on RHEL highlight critical conflicts or integrity issues within the package ecosystem. By systematically diagnosing dependency problems, file conflicts, duplicates, cache issues, and database corruption, you can quickly restore smooth package management workflows. Always prioritize safe methods like cleaning caches and syncing package versions before resorting to force commands. Maintaining repository discipline and leveraging DNF’s history features will help prevent future errors, ensuring your RHEL environment remains stable, secure, and up-to-date.

Leave a Reply

Your email address will not be published. Required fields are marked *