[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Verifying corrupt /var/lib/dpkg. Anyone?



In upgrading I somehow corrupted my dpkg database. For
example, /var/lib/dpkg/status showed net-tools installed
but they weren't really there. That is, for example, ifconfig
was *nowhere* on my hard drive. Oddly, when I looked in
/var/lib/dpkg/info there were no net-tools* files. So
it seems that part of dpkg knew about the problem (the info
directory) but another part was ignorant (the status file).

Soooo... I think I could find most of my problems by
just printing out the list of files in /var/lib/dpkg/status 
that show as installed but do not have accompanying files 
in /var/lib/dpkg/info. Then I could print out all files
in /var/lib/dpkg/info/*.list that claim to be installed
but are not really on the hard drive.

If I had done such a thing, I would have noted that
ifup, ifdown, ifconfig were not on my hard drive
after upgrading! And I wouldn't have rebooted my machine. 
Needless to say, my machine did not
boot properly. I had to copy relevant binaries from 
my potato rescue disks so that I could bring up my network
card and ftp to ftp.debian.org and grab the relevant packages. 

I guess the question is: are there tools for verifying
the debian dpkg databases against the hard drive? 
What I described could be done in a 30 line perl
script (by me) or a 4 line perl script (by a perl
write-once read-never sadist :-)   But I'll not
write such a script if one already exists. 

Ideas? This seems important to me. And in fact, I'm mildly
suprised that dselect doesn't do this already. 

RTFM flames are gladly accepted. I looked around but perhaps
missed an obvious utility. 

-Doug Eck



Reply to: