Should RPM check its database?
tonynelson at georgeanelson.com
Sat Nov 18 18:21:55 UTC 2006
At 6:51 PM -0500 11/17/06, Tony Nelson wrote:
>[Check the RPM database.] The following takes well
>under a minute on my old machine:
> # cd /var/lib/rpm ; for name in * ; do echo $name ; /usr/lib/rpm/rpmdb_verify $name ; done
>Note that this appears to only check the individual files' integrity, and
>not for referential integrity.
>It may be necessary to lock the database before checking it; if so,
>whatever in RPM that is supposed to run rpmdb_verify probably already does
>so. (I didn't see anything in man rpm about this, only about verifying
It seems that there is a hidden option to rpm, --verifydb, that does what
is needed (except check for referential integrity?). There are two files
in the rpm source that seem to parse options and print help and usage,
rpm.c and the more complex rpmqv.c; rpmqv.c one seems to be the one in use.
Both /can/ document --verifydb, but rpmqv.c uses rpmdb/poptDB.c, which
marks that option as hidden. I don't know why it is hidden -- possibly it
is a mistake, though it is also missing from "man rpm".
To verify the RPM database:
$ rpm --verifydb
TonyN.:' The Great Writ <mailto:tonynelson at georgeanelson.com>
' is no more. <http://www.georgeanelson.com/>
More information about the users