-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Wednesday 01 January 2003 06:57 pm, Cliff Wells wrote:
> I seem to have lost my rpm database. After upgrading a couple of rpms,
> rpm would fail, telling me to run recover (whatever the hell that is -
> couldn't find any reference to such a thing in the rpm man page).
> Anyway, tried rpm --rebuilddb which also failed the first time, but
> seemed to work the second time I ran it. However, I then checked with
> rpm -qa and there was only a single package listed. I looked in
> /var/lib and found a directory called rpmrebuilddb.1908. I moved
> /var/lib/rpm to a safe place and copied the rpmrebuilddb.1908 directory
> to /var/lib/rpm. Ran rpm --rebuilddb again. Now I have a rpm database
> with plenty 'o stuff in it, but I'm sure it's out of date. No problem,
> I think, I'll just run apt-get upgrade and bring it back into sync
> (probably with some missing packages that I'll worry about later).
> Unfortunately apt-get reports a bunch of unmet dependencies and refuses
> to fix them (even using -f).
Well, it depends on how daring you want to get.... ;)
The version of RPM included with the 8.0 release is prone to getting hung,
and leaving the database in need of repair.
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=73097
Generally, it is easily repaired with:
rm -f /var/lib/rpm/__db*
rpm --rebuilddb
What you can try is:
Download and install the test release of rpm, which has been working here
for about a month without problems.
ftp://people.redhat.com/jbj/test-4.1/
If you look in /var/log/rpmpkgs, you should have a complete list of all
the packages instaled on your system as of 4:00 AM today. If you have the
install CD's, you have access to most of the packages you have installed.
If you've kept the updated packages around as well, you're in excellent
shape.
Then, grab my quick hack of a script to rebuild the database. It's not
pretty, but should help. For each package listed in the given file
(/var/log/rpmpkgs) it will search the given paths for matching rpms, and
run 'rpm -ivh --justdb --force --nodeps $package'.
http://www.tuxfan.homeip.net:8080/hacks/recover_rpm_db.sh
Move your existing rpm database out of the way.
# mv /var/lib/rpm /var/lib/rpm.save
Initialize a new rpm database:
# rpm --initdb
Run the script.
# ./recover_rpm_db.sh -f /var/log/rpmpkgs -p /mnt/cdrom/Redhat/RPMS
/var/spool/up2date
(assuming a valid filelist in /var/log/rpmpkgs, a mounted Red Hat CD in
/mnt/cdrom, and updates in /var/spool/up2date.)
You'll have to run it once for each CD, and it'll spew warnings about
packages not found for every package not on the current CD.
If it works:
Thanks for testing, and congratulations!
If it doesn't work:
Sorry, thanks for testing. Please restore your previous rpm database. ;)
On the upside, I have tested it, and it does work. It will take some time
to complete though. Obviously, if there are packages on your system that
you don't have available, they won't be included in the restored
database.
Good luck. Hope it helps,
- --
- -Michael
pgp key: http://www.tuxfan.homeip.net:8080/gpgkey.txt
Red Hat Linux 7.{2,3}|8.0 in 8M of RAM: http://www.rule-project.org/
- --
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)
iD8DBQE+E5yfn/07WoAb/SsRApMvAKCTeFlzLR9tDrUPVF4byOgm5FzctwCdHJdr
Sz1t9bFlYC8o+vbooVBvHr8=
=TEui
-----END PGP SIGNATURE-----
Copyright © 2003 Red Hat, Inc. All rights reserved. Search by Google Careers at Red Hat : Legal statement : Privacy statement : Your Account : Contact Red Hat
|