How to fix a corrupted RPM Database

Meher Askri
4 min readAug 2, 2024

--

Hello and welcome again,

In today tutorial , I’ll show you how to fix an RPM database ,

As you know RPM package manager is used to manage packages on RedHat system .

When a new package is installed or removed , local RPM database get updated , this database serves as record of installed packages storing information about their names, versions, dependencies and various metadata.

This make the RPM database plays a crucial role in enabling the package manager to manage software packages efficiently and accurately.

Can the RPM database broke ??

The short answer is yes. However, I would say it happen occasionally .

Can it be fixed ??

Of course , and that’s what I’m going to share with you today .

Before , we start fixing the problem , we need to create it first ( I’m joking 😁😁 , but that’s what I’m going to do because my RPM database is not corrupted ).

OK , let me start by login to my server and install a package called hexedit which is a hexadecimal file editor .

Next , I’m going to modify the /var/lib/rpm/Packages , which is the file that contain metadata about all the packages installed on the system . ( notice that this file contain binary data which why you cannot modify it using a normal text editor , that’s why I installed hexedit tool ) .

OK , now let’s break it using the hexaedit tool by changing some digits .

It doesn’t matter which number you choose as long from (0–9 && A-F , base 16 numbering system). and Finally let’s remove all the db files , which are used for indexing and caching data .

let’s test it using the “ rpm -qa “ command to list the installed packages and as you can see my RPM database is corrupted and I can no longer install or update or remove anything .

Until this point , I only created the problem and I haven’t fix anything yet 😁😁 , If you’re looking for the solution you may start reading from here 👍 .

We can also verify that the RPM database is corrupted using the “ rpmdb_verify “ command as you can see :

OK , Let’s start by renaming the Packages file using the mv command and call it “packages.bad” because it is a bad file 😂😂 ( no , I’m joking the extension here doesn’t matter , you can name it whatever you want ) .

Next , let’s create a new Packages file using the rpmdb_dump command to dump the information from the bad file and let’s use also the rpmdb_load command which will restore a new Packages file.

Finally , let’s rebuild the RPM database indexes using the rpm — rebuilddb command ( you can use -vv for extra verbose to see the output ).

Now, let’s verify and see if it’s work by trying to remove some package.

And voilà as you can see , the corrupted database is fixed .

I hope you enjoyed this short tutorial, Please like and share if you find it helpful . Thank you for your support and I’ll see you in a next one .

--

--

Meher Askri
Meher Askri

Written by Meher Askri

Linux System Engineer || RHCA

No responses yet