Sometimes it’s necessary to move from stable (squeeze) to testing (wheezy) for newer packages not being covered by backports. Please note that security updates are available for testing too. The easy way would be

* edit /etc/apt/sources.list and replace squeeze by wheezy
* apt-get update && apt-get dist-upgrade

Using the codenames instead of whatisit will make sure that you will stay on wheezy when it becomes the stable release.

Currently, there’s a problem in the Debian tree with libc6 and perl transition from 5.10 to 5.12. This brings in infite loop of 2 error lines on the screen.

Setting up libc6 (2.13-18) ...

substr outside of string at /usr/share/perl5/Text/ line 130,  line 5.
Use of uninitialized value $text in concatenation (.) or string at /usr/share/perl5/Text/ line 101,  line 5.

To resolve this, bring the process in the background and manually kill it.


[1]+  Stopped                 apt-get upgrade -f
# ps aux | grep apt-get
# kill -9 PID
[1]+  Killed                  apt-get upgrade -f

Manually remove those locks – be careful!

# rm /var/lib/dpkg/lock
# killall -9 frontend

Now for the fun part – fixing the perl lib causing this (source).

# vim /usr/share/perl5/Text/

-        $r = substr($string, $l);
+        if (length($text) < $l) {
+            $r = '';
+        } else {
+            $r = substr($string, $l);
+        }
# killall -9 frontend
# dpkg --configure -a
# apt-get upgrade -f

Voilà - you can also run dist-upgrade again. After installing the newest Perl revision, this change will be overridden and the upgrade should work again.

%d bloggers like this: