Rebuilding corrupted RPM database

by linuxBot on June 3, 2006 · 10 comments

One of our client reported that he is getting an error and RPM database is corrupted. He is using Red Hat Linux

Sometime it is possible to fix RPM database errors. I am surprised that many admins do not make back up of RPM DB (/var/lib/rpm).

Anyways if you ever messed up with RPM database, here is a quick guide to fix it (you must have rpmdb tools installed):

Take system to single user mode to avoid further damage and to make backup/restore process easy:

# init 1

Method # 1

Remove /var/lib/rpm/__db* files to avoid stale locks:
# cd /var/lib
# rm __db*

Rebuild RPM database:
# rpm --rebuilddb
# rpmdb_verify Packages

Method # 2

If you are still getting errors, then try your luck with following commands:

# mv Packages Packages-BAKUP
# db_dump Packages-BAKUP | db_load Packages
# rpm -qa
# rpm --rebuilddb

Further reading

Featured Articles:

Share this with other sys admins!
Facebook it - Tweet it - Print it -

We're here to help you make the most of sysadmin work. So, subscribe!

{ 9 comments… read them below or add one }

1 Paul Blonde December 5, 2006

Method 2 does not work, as the db_load and db_dump commands were not found. Needless to say if what came before worked I wouldn’t have gotten to 2.

Reply

2 nixcraft December 5, 2006

whereis db_dump db_load
db_dump: /usr/bin/db_dump
db_load: /usr/bin/db_load

These utilities get installed by default using db4-utils package. Above instructions are tested on Fedora Core and RHEL 4 only.

Reply

3 Tapas Mallick August 18, 2008

How to recreate /var/lib/rpm/Packages (If original got deleted/corrupted) ?

Reply

4 James Cassell October 10, 2008

Thank You! you saved my day.

Reply

5 James Cassell October 10, 2008

Thank You! you saved my day

Reply

6 Tapas Mallick October 13, 2008

I found the same post/solution before in nixcraft and it is really a great solution but my question is how to recreate /var/lib/Packages if the original got “DELETED”.

Reply

7 com4host.com September 18, 2009

Thank You! you saved my day.

Reply

8 michael November 8, 2009

first command is cd /var/lib/rpm and not /var/lib

Reply

9 Anonymous May 17, 2010

cd /var/lib/rpm

not #cd /var/lib/

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">
What is 5 + 7 ?
Please leave these two fields as-is:
Are you a human being? Solve the simple math so we know that you are a human and not a bot.



Previous post:

Next post: