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

Bug#454266: upgrade to 2.7 fails, leaving system unusable



+++-==============-==============-============================================
un  libc6-i686     <none>         (no description available)


The file comes from libc6-i686 version 2.6.1-1. According to the symlink
it has been installed on 2007-08-21 (ie the date it migrates to
testing).
After a bit of thinking I have come up with what I belive is a likely explanation
for this incident and other similar ones that have happened in the past.

Installation on that particular day would seem to indicate it was installed as part of an update.

un in a dpkg -l generally means there is no entry for the package in /var/lib/dpkg/status. If the package was removed it would be rc and if purged it would be pn

This would seem to indicate that libc6-i686 was previously installed and being updated normally but at some point during or after the update to 2.6.1-1 it's entry in the dpkg status file completely dissapeared.

IIRC some filesystems that journal data but not metadata can zero out blocks of
a file. I did a quick test of this idea by doing
dd if=/dev/zero of=/var/lib/dpkg/status bs=4096 count=1 seek=1

and then running apt-get -f install. I tried the same with other seeks too. The bottom
line is zeroing out the first block of that file causes dpkg to fail but zeroing out
other blocks will often cause dpkg to simply forget that some packages are installed
(and probablly get some wrong info about whatever packages happen to fall on the block
edges).

The user will be told to run apt-get -f install and upon doing so it will appear
thier system is fixed but packages like libc6-i686 which have little if anything
depending on them will be left extracted on the system with no record in the dpkg
database.






Reply to: