On Mon, 2006-12-04 at 08:51 -0500, Gene Heskett wrote: > On Monday 04 December 2006 06:42, Jim Cornette wrote: > >If we all work together, we can totally disrupt the system. > > I think we've succeeded in this case. :( Gene, the hanging problem that you had initially is documented in the following URL: http://www.rpm.org/hintskinks/repairdb/ It also seems to be something that's not completely out of date. There is another approach, which I originally posted to the Mandrake lists a long time ago. It is a cookbook procedure showing how to do a manual reconstruction of an rpm database using actually installed file information from the system. It's a little dated but the commands used are not, I feel the procedure is good. Here's the original link and the content: http://www.informatimago.com/linux/rpm-rebuilddb.html ____________________________________________________________________ On one of my Mandrake Linux systems, I had once this problem: [pascal@hermes pascal]$ su Password: [root@hermes pascal]# rpm -q -a failed to open //var/lib/rpm/packages.rpm rpmQuery: rpmdbOpen() failed [root@hermes pascal]# rpm --rebuilddb failed to open //var/lib/rpm/packages.rpm [root@hermes pascal]# rpm --initdb [root@hermes pascal]# rpm -q -a failed to open //var/lib/rpm/packages.rpm rpmQuery: rpmdbOpen() failed [root@hermes pascal]# rpm --version RPM version 3.0.3 Well, clearly the RPM database was completely out of usage. I had to rebuild it.You may think that it's simply a matter of using : rpm --rebuilddb However, I learned that --rebuilddb is REALLY AND COMPLETELY USELESS. Maybe the authors and contributors to rpm could take some idea from this NFAQ to actually implement a true --rebuilddb option. The main idea of the process is to use: rm -f /var/lib/rpm/* ; rpm --initdb and: rpm -i -v --nodeps --noscripts --notriggers --excludepath / packages... to fill a package database without really installing anything (not overriding installed files, not running any script, ...). This is done in the seventh step; everything before I made to recover a list of installed packages. This is not perfect, since some packages I have upgraded or modified the sourcesand upgraded. I should have checked for /usr/src/RPMS too; I'll update the database later by hand to synchronize it with the handful of packages I touched after the initial installation. +------------------------------------------------------------------+ | COOKBOOK PROCEDURE TO REBUILD A RPM DATABASE DAMAGED BEYOND HOPE | +------------------------------------------------------------------+ #### #### BEWARE, THIS IS NOT AN AUTOMATIC SCRIPT! #### #### Use this only as a guideline to rebuild your rpm database. #### ##### # 1 # Find the files currently installed. # # ON THE HOST WHO LOST ITS RPM DATABASE. ##### find / -print | sort > /tmp/dsk-contents ##### # 2 # Find all the files installed by the installation RPMs, # # with their corresponding RPM. ##### losetup /dev/loop0 /mnt/usr3/mandrake/mandrake61-1.iso mount -o ro -t iso9660 /dev/loop0 /mnt/cdrom cd /mnt/cdrom/Mandrake/RPMS rm -f /tmp/rpm-contents for f in *.rpm ; do rpm -q -l -p $f \ | awk -v pn=$f '{printf "%s:%s\n",pn,$0;}' >> /tmp/rpm-contents done sort -t: +1 -o /tmp/rpm-contents /tmp/rpm-contents ##### # 3 # Obtain the actually installed RPMs. ##### gzip -d < lgetvalue-src.tar.gz | tar xf - cd lgetvalue-src make all test ./lgetvalue --field-separator=: \ --key-position=2 \ --value-position=1 \ /tmp/rpm-contents /tmp/dsk-contents \ | sort -u > /tmp/rpm-installed ##### # 4 # Reinitialize a new rpm database. ##### mv /var/lib/rpm /var/lib/rpm-damaged-beyond-hope mkdir /var/lib/rpm rpm --initdb ##### # 5 # Let rpm say what problems there may be # # (trying to do a pseudo-installation. ##### cd /mnt/cdrom/Mandrake/RPMS rpm -i -v --noscripts --notriggers --excludepath / `cat /tmp/rpm-installed` ##### # 6 # Correct the list of installed RPMs. ##### emacs /tmp/rpm-installed ##### # 7 # Rebuild the rpm data base, without installing any file # # nor running any script. ##### rpm -i -v --nodeps --noscripts --notriggers --excludepath / \ `cat /tmp/rpm-installed ` ##### # 8 # Check you have a valid rpm database. ##### rpm -q -a ________________________________________________________________ LX -- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° Kites rise highest against the wind -- not with it. -- Winston Churchill Registered Linux User #268899 http://counter.li.org/ °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°