Upgrading from Debian Lenny to Squeeze (version 6)
You want to update to Debian Squeeze from Lenny. You don’t want to scour the whole Debian documentation just to be sure not to have overlooked details that apply to your situation. Here is a complete step-by-step tutorial for upgrading to Squeeze from Debian Lenny.
In 4 steps is listed here the procedure we’ll follow. There are quicker, more risky, procedures, however the time saved doing otherwise is count in seconds, who bothers.
- minimal system upgrade, followed by
- a kernel upgrade, udev upgrade and reboot, and then
- (optionally) upgrade the packages associated with your critical services.
- full upgrade
I spell out here all the preconditions that apply for this condensed but complete step-by-step tutorial for upgrading from Debian Lenny to Squeeze. You can easily find out if this is for you or not. For web developers that use Debian as a testing/production machine this will apply in 95% of all cases.
If you don’t meet all preconditions you’ll have to go read the full documentation.
Our Goal
The goal is to be able to update from a remote terminal with as little disruption and as few risks as possible, by risks meaning the need to resort to a local console to fix problems. However no guarantees are given. None at all. The only guarantee I can give, is that I have tried the upgrade myself on 3 different Debian boxes. On one it failed because I followed a different, shorter, recipe. Two were successful following this one.
Preconditions for the Upgrade
Your Debian Lenny is a pure command line installation (no GUI, that is, x-server and more). You are running some servers and other stuff, but you don’t have external users logging in their own /home directory to care of.
You have a Debian Lenny (version 5) that is up to date to the last update point. Otherwise
aptitude update aptitude full-upgrade
should resolve any issues. Verify with
dpkg -l | pager
no packages should have a combination of h and fh as the first 2 flags in the output.
it might be bad if you have any other combination of letters. Here is an excerpt of mine.
ii apt-utils 0.7.20.2+lenny2 APT utility programs ii aptitude 0.4.11.11-1~lenny1 terminal-based package ... rc aspell-en 6.0-0-5.1 English dictionary for G...
ii is OK, rc is OK
From here on we’ll use Apt instead of Aptitude (it is officially recommended for a Lenny to Squeeze upgrade)
Other preconditions to “qualify” for blindly following this step-by-step recipe:
You don’t have third party packages (from repositories other than the official Debian Lenny repositories), if you do, remove them prior the upgrade and treat their upgrade independently.
“If you are using some VPN services (such as tinc) they might not be available throughout the upgrade process”
“You should not upgrade using telnet, rlogin, rsh”, you might loose connection, use ssh instead.”
“If you have configured APT to install certain packages from a distribution other than stable (e.g. from testing), you may have to change your APT pinning configuration. In this case you want to read the whole document on Debian org.
Let’s start
1 Minimal System Upgrade
Take a backup of
- all /etc
- the file
./curr-pkgs.txtafter having done:dpkg --get-selections "*" > ./curr-pkgs.txt /var/lib/dpkg/var/lib/apt/extended_states/var/lib/aptitude/pkgstates- Any other files you care of (DB, web files, /home files etc.)
Do evaluate ”what if” in case you should be forced to reboot from the console terminal and the off/on button on your box.
If things go wrong this is the link you need.
Start doing your upgrade.
Change the sources to squeeze:
less /etc/apt/sources.list
Substitute any occurrence of lenny with squeeze. Don’t use stable, to avoid getting into troubles at the next version upgrade, write squeeze. Codenames are unique, category names are not.
Also remove sources for debian-volatile that are no longer used. Be sure to have all of main, contrib and non-free (for network cards firmware)
Here are my sources :
deb http://ftp.de.debian.org/debian/ squeeze main contrib non-free deb-src http://ftp.de.debian.org/debian/ squeeze main contrib non-free deb http://security.debian.org/ squeeze/updates main contrib non-free deb-src http://security.debian.org/ squeeze/updates main contrib non-free deb http://ftp.de.debian.org/debian squeeze-updates main contrib non-free deb-src http://ftp.de.debian.org/debian squeeze-updates main contrib non-free Ctrl-c Y
Record your upgrade session with
script -t 2>~/upgrade-squeeze1.time -a ~/upgrade-squeeze1.script
When finishd you’ll stop recording typing: ”exit” Timing info is in the .time file, you can see all what happened and console messages reading the .script file.
Now enter:
apt-get update apt-get upgrade
(we’re only doing a minimal upgrade now)
You might need to open an extra terminal during the upgrade to examine some situations as to be able to reply to questions posed to you by the upgrade process. To do so type
Alt-right arrow.
2. Upgrade Kernel and Udev
Upgrade the kernel
Start by finding a suitable linux kernel image
apt-cache search linux-image-2.6.
And choose one that suits your architecture and is equal or older to linux-image-2.6.26-2
apt-get install linux-image-2.6-<your flavor>
Although you had non-free among your sources you might end up into the following situation, due to bad handling of firmwares by the installer:
W: Possible missing firmware /lib/firmware/tigon/tg3_tso5.bin for module tg3 W: Possible missing firmware /lib/firmware/tigon/tg3_tso.bin for module tg3 W: Possible missing firmware /lib/firmware/tigon/tg3.bin for module tg3
In this case install manually the nonfree firmware package:
apt-get install firmware-linux-nonfree
And you google about it to be reassured that you’ll have the correct driver installed anyway.
In another case I got the corresponding message for another driver:
This system is currently running Linux 2.6.26-2-686 and you are installing Linux 2.6.32-5-686. In the new version some of the drivers used on this system may require additional firmware files: r8169: rtl_nic/rtl8168d-2.fw, rtl_nic/rtl8168d-1.fw
choose not to do anything, however I ended up anyway with a well functioning Debian, go figure it!
Install the new version of udev
apt-get install udev
stop the script recording by entering ”exit”
Reboot the system.
Restart recording in a different filename with
script -t 2>~/upgrade-squeeze2.time -a ~/upgrade-squeeze2.script
3. Optionally Upgrade Your Critical Packages
For extra control, on a production machine, upgrade some individual packages by their own.
apt-get dist-upgrade <package-name>
Go on doing the full upgrade
4. Complete the Upgrade
apt-get dist-upgrade
Do the various configuration as asked during the process, if you choose to upgrade to the configuration (which is recommended) you can always retrieve the old configuration in the .dpkg-old version of your config files.
Enjoy your new Debian.
Tags: Debian, Debian upgrade, Lenny, Squeeze

September 4th, 2011 at 7:47 am
I tried to follow your instructions to no avail. They were nicely layed out, but I got an error message 1/2 thru stating something about:
Unable to migrate to dependency-based boot system . I know this has to do with make a header file/entry in the init.d file??? Can you shed any light on this and tell exactly what we are suppose to do? I can follow instructions very well. I just don’t have a clue what I am supposed to do based on the message.
Thanks!
Tim
September 4th, 2011 at 5:55 pm
Hi Tim,
Maybe you’ll find something useful on this thread: http://forums.debian.net/viewtopic.php?f=5&t=45626
especially notice:
Cheers, Paolo
October 23rd, 2011 at 9:58 am
Hi
I tried the steps with some difference.
1. downloaded the CD image (cd1 only) and #apt-cdrom add from shell
2. then tried upgrade, install kernel, install udev and at last dist-upgrade.
but xserver not started on alt+ctrl+f7
3. tried to install gdm3 seperately
but startx returns with error message
“/etc/x11/xinit/xserverrc: no such file or directory. unable to connect x server”
how can I solve this?
adding, I am not much familiar with command line.
thanks in advance
October 28th, 2011 at 2:36 pm
I see your installation includes xserver, it is a quite different scenario than mine. Unfortunately I’m not the right guy to help you.