Howto Upgrade Debian 4 Etch to Debian 5.0 Lenny

Posted on in Categories Debian Linux, GNU/Open source, Howto, Linux, Linux desktop, Linux distribution, Security, Troubleshooting last updated February 16, 2009

Debian version 5.0 has been released. It is recommended that you upgrade the system to latest version. Upgrading remote Debian server is a piece of cake. In this tutorial, you will learn about upgrading Debian Linux server from Etch to Lenny over ssh session.

Step # 1: Make a Backup

Upgrading system is a complex procedure. I strongly recommend backing up all data and configuration files. The upgrade process is quite reliable, but a hardware failure in the middle of an upgrade could result in a severely damaged system, so make a full system backup.

Step # 2: Apply all etch updates

Make sure etch is up to date and all security patches including kernel installed:
# apt-get update
# apt-get upgrade

Reboot the system if new kernel installed:
# reboot

Step # 3: Update /etc/apt/sources.list

Make a backup copy of /etc/apt/sources.list, enter:
# cp /etc/apt/sources.list /etc/apt/sources.list.etch
Open /etc/apt/sources.list, enter:
# vi /etc/apt/sources.list
Update it as follows (use mirror closest to your location):

# Main
deb lenny main contrib non-free
deb-src lenny main contrib non-free

# Security
deb lenny/updates main contrib non-free
deb-src lenny/updates main contrib non-free

Save and close the file.

A note about stable /etc/apt/sources.list file

For server you should always use the following file. This file ensures that you always run stable released software. With following config, you do not need to update /etc/apt/sources.list file and you can simply run below mentioned command to upgrade system to stable release:

# Main
deb stable main non-free contrib
# Source
deb-src stable main non-free contrib
# Security
deb stable/updates main contrib non-free

Step # 4: Upgrade Debian to from 4.0 to 5.0

The recommended way to upgrade from previous Debian GNU/Linux releases is to use the package management tool aptitude. This program makes safer decisions about package installations than running apt-get directly. First, upgrade the core tools aptitude and apt, enter:
# aptitude update
Now update both apt and aptitude
# apt-get install apt aptitude
# aptitude update apt aptitude
Above two commands will automatically upgrade libc6 and other support libraries. Some running services will be restarted, including ssh, rsyncd xdm, gdm and kdm etc. Now, we have updated apt and aptitude. It is time to apply system update, enter:
# aptitude upgrade
# aptitude install

Above will install required updates to the system. Finally, update entire distribution:
# aptitude dist-upgrade
Above will update the rest of the system i.e. install the newest available versions of all packages, and resolve all possible dependency changes between packages in different releases.

Step # 5: Verify your system

Type the following commands to verify kernel:
# uname -a
Sample output:
Linux 2.6.26-1-amd64 #1 SMP Sat Jan 10 17:57:00 UTC 2009 x86_64 GNU/Linux
Verify Debian version, enter:
# cat /etc/debian_version
Sample output:


Verify log files, enter:
# egrep -i 'err|warn' /var/log/dmesg
# egrep -i 'err|warn' /var/log/messages
# tail -f /var/log/dmesg
# tail -f /path/to/other/apps/log

Verify running service and open ports, enter:
# netstat -tulpn
# rcconf

Verify firewall settings, enter:
# iptables -L -n
# ip6tables -L -n


  1. man page aptitude, apt and other commands.
  2. Above instructions are tested on 64bit and 32bit server system only. I strongly recommend official release note for further information.

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

Share this on (or read 24 comments/add one below):

24 comment

  1. It maybe would important to mention that for those are on NFS, they have to install nfs-common before executing aptitude upgrade & aptitude install :

    “Above two commands will automatically upgrade libc6 and other support libraries. Some running services will be restarted, including ssh, rsyncd xdm, gdm and kdm etc. Now, we have updated apt and aptitude. It is time to apply system update, enter:
    # aptitude install nfs-common <– add this
    # aptitude upgrade
    # aptitude install”

    I was stuck with this problem until I find this solution that worked for me.

  2. Spoke too early.
    For those using xen kernels – WATCH OUT!
    Run dist-upgrade twice so you can get xen loaded upgraded and check carefully the menu.lst!!!
    I got one dead machine last night, thanks god it wasn’t a production.
    Also, be aware – upgrade of passwd can delete some groups or users – check that too.
    everything else was fine after upgrade.

  3. 2.6.24-etchnhalf.1-686 this kernel may not be updated this way.. so far i have tried and stick with that. But cat /etc/debian_version shows lenny 5.0. So far it will also work for me…..

  4. thank u for this tuto;
    i have one suggestion :
    you can run the following line :
    # aptitude upgrade
    # aptitude install
    # aptitude dist-upgrade
    in one line :
    #aptitude upgrade && install && dist-upgrade

  5. Will this upgrade work on ARM devices such as Buffalo Linkstations that are currently running Debian Etch? I dont want to find out the hard way (ie. bricking my system), so if anyone can clarify that would be great.

  6. It works! But don’t do the upgrade from a X11 based terminal!

    I have tried and failed many times before figuring out that X also gets an upgrade and needs to be restarted. Bij restarting X the upgrade procedure is interrrupted. The system will not come online again.

  7. one minor correction, where you say:

    Now update both apt and aptitude
    # apt-get install apt aptitude
    # aptitude update apt aptitude

    the second part of that should say
    # aptitude install apt aptitude


  8. i have did this successfully i have directadmin with exim on debian
    after this walkthought
    exim did some problems with gconv .co files from glibc pakage.
    it seemed to me like it was badly installed, apt-get reinstall did not helped.

    i have rebuilt exim and proftpd and it did not helped but might was importent.

    i did:
    aptitude purge libc6
    (accepted the solution)
    aptitude install libc6-dev
    reboot and all problems have gone.

    also i had issues with proftpd 32bit copetibility mode
    aptitude install libcap2-dev
    i did in hope it helps…

    after then i saw that php-cgi did not work because of postgresql update
    i did:
    cd /usr/lib/
    ln -s
    i hope that is all

  9. thanks for this, helped me a updating my server with less fear of doing things wrong. one thing i did just to be sure: after the full install i rebooted and checked if everything was still working. rather break it right now than at some random time when the server has to reboot and then i do not have time to fix issues.

  10. It is really bad advice you give about using “stable” instead of “lenny” in /etc/apt/sources.list
    If one does that. The system will suddenly be upgraded, and might stop working. There is a very good reason that this is no longer the default.

  11. A tidbit that the Debian Release notes recommend. Start a recording session, this way if something goes wrong, you will have a log of it:

    script -t 2>~/upgrade-lenny.time -a ~/upgrade-lenny.script

    Should aid you or whoever else with what could have gone wrong.

Leave a Comment