Kernel + libc6 issue upgrading to squeeze

debian-lennydebian-squeezelinux-kernelupgrade

I used to run Debian testing, and I haven't upgraded or dist-upgraded for about 2 years. Yesterday I made the mistake of trying that… it didn't work (I don't remember the exact error messages), so I tried squeeze instead.

Well, packages were downloaded and started installing, but then I got to the libc6 configuration. I passed the menu about restarting services, then got:

WARNING: this version of the GNU libc requires kernel version
2.6.18 or later. Please upgrade your kernel before installing
glibc.

The installation of a 2.6 kernel _could_ ask you to install a new libc
first, this is NOT a bug, and should *NOT* be reported. In that case,
please add lenny sources to your /etc/apt/sources.list and run:
  apt-get install -t lenny linux-image-2.6
Then reboot into this new kernel, and proceed with your upgrade
dpkg: error processing /var/cache/apt/archives/libc6_2.11.3-3_i386.deb (--unpack):
 subprocess new pre-installation script returned error exit status 1
configured to not write apport reports
                                      Errors were encountered while processing:
 /var/cache/apt/archives/libc6_2.11.3-3_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

My kernel is a slightly customized 2.6.11.7 (not built using Debian packages). Anyway, I added lenny sources (from archive.debian.org) and tried

apt-get install -t lenny linux-image-2.6-2-686

but all that gets me is:

The following packages have unmet dependencies:
 libc-bin : Breaks: libc6 (< 2.10) but 2.7-18 is to be installed
 linux-image-2.6.26-2-686 : Depends: initramfs-tools (>= 0.55) but it is not going to be installed or
                                     yaird (>= 0.0.13) but it is not installable or
                                     linux-initramfs-tool
                            Recommends: libc6-i686 but it is not going to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

adding libc6-i686 initramfs-tools doesn't help. I tried a couple more things which, to my shame, I don't exactly remember (locales got removed I think). I tried manually downloading Linux-2.6.35 , but got errors on missing .h files on make config.

Please help! I don't want to break my system more than it already is…

Contents of /etc/apt/sources.lst:

deb http://debian.co.il/debian/ squeeze main
deb http://archive.debian.org/debian lenny main contrib non-free
deb-src http://debian.co.il/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb http://security.debian.org/ lenny/updates main

This Debian forums thread seems to be related, but with different versions.

Update: Following a suggestion here, I'm now trying to dist-upgrade to etch first. But, woe is me, now libc-bin is removed and I get:

Preconfiguring packages ...
dpkg: warning: 'ldconfig' not found in PATH or not executable.
dpkg: 1 expected program not found in PATH or not executable.
NB: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin.
E: Sub-process /usr/bin/dpkg returned an error code (2)

Best Answer

Well, problem solved:

  • I was running an etch-as-testing, apparently.
  • set the apt sources.list to point to etch on archives.debian.org .
  • had to manually get and install etch's libc6-dev_2.3.6.ds1-13etch10+b1 from archives.debian.org , forcing the version down apt-get's throat.
  • dist-upgraded a couple of times.
  • set the apt sources.list to point to lenny on archives.debian.org .
  • dist-upgraded a couple more times.
  • had to manually download libc6_2.7-18lenny7_i386.deb , and manually copy out glib.sh to its place
  • dist-upgraded a couple more times.

And that's basically it. More details and high-strung attitude in the thread linked to from the question...