rpm database corrupted, how to recover?

Torrey Hoffman thoffman at arnor.net
Wed Nov 12 21:39:27 UTC 2003


While installing some rpms from FreshRPMs.net on my system, rpm
segfaulted.  It seems to have corrupted the database in the process, and
now all rpm commands hang.

How can I recover without reinstalling Fedora?

Here's what it looks like when it hangs:

[root at moria rpm]# rpm -v -v --rebuilddb
D: rebuilding database /var/lib/rpm into /var/lib/rpmrebuilddb.2274
D: creating directory /var/lib/rpmrebuilddb.2274
D: opening old database with dbapi 3
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages rdonly mode=0x0

(Nothing happens for a long time.  Killed with -9)

So I moved /var/lib/rpm/Packages to /var/lib/rpm/Packages.corrupt
and then:

[root at moria rpm]# rpm -v -v --rebuilddb
D: rebuilding database /var/lib/rpm into /var/lib/rpmrebuilddb.2334
D: creating directory /var/lib/rpmrebuilddb.2334
D: opening old database with dbapi 3
D: opening  db environment /var/lib/rpm/Packages joinenv
D: opening  db index       /var/lib/rpm/Packages create mode=0x0
D: locked   db index       /var/lib/rpm/Packages
D: opening new database with dbapi 3
D: opening  db environment /var/lib/rpmrebuilddb.2334/Packages
create:mpool
D: opening  db index       /var/lib/rpmrebuilddb.2334/Packages create
mode=0x42
D: closed   db index       /var/lib/rpm/Packages
D: closed   db environment /var/lib/rpm/Packages
D: closed   db index       /var/lib/rpmrebuilddb.2334/Packages
D: closed   db environment /var/lib/rpmrebuilddb.2334/Packages
D: removing directory /var/lib/rpmrebuilddb.2334

But the resulting Packages list is NOT actually rebuilt, it is empty!

[root at moria rpm]# ll Packages*

-rw-r--r--    1 root     root        12288 Nov 12 13:19 Packages
-rw-r--r--    1 rpm      rpm      58630144 Nov 12 12:50 Packages.corrupt

This has been filed in Bugzilla as bug #109913.

-- 
Torrey Hoffman <thoffman at arnor.net>





More information about the fedora-test-list mailing list