This article was first written in February 2004 for
the BeezNest technical website (http://glasnost.beeznest.org/articles/109)
It seems I've been pretty lucky to upgrade without any major problems,  but hey! If I was, why wouldn't you…
Before starting the upgrade, please note that it could need up to around  1GB (depending on the packages you already have installed) hard disk space  to store the packages and then install them. Once you are done with it,  it will eat around 200MB more than the corresponding Woody, still depending  on the packages you had before.
Also, it might be a good idea to download the packages on a fast connection  and keep them on your disk until you can actually do the upgrade (using  
-du option for apt-get dist-upgrade).
- log as root (or use sudo if it is well configured)
 
	- change /etc/apt/sources.list (save the old one in /etc/apt/sources.list.woody)
- change all stable to sarge
 
	- comment backports sources, if any
 
 
- halt X and use terminal mode only (/etc/init.d/xdm stop, gdm or kdm)
 
- apt-get dist-upgrade (take note of the packages that will be REMOVED, you'll probably need to readd them manually afterwards, if you want/need them. Note that lots of packages will be downloaded)
 
- read the questions carefully before answering them, you'll probably want to install the new versions of the configuration files, unless you really know what you do. Chances are that you will need to reconfigure some of those files afterwards, though [1].
 
This is pretty much all you need to do.  If you have a problem with replacing  a config file, check the changes by typing "d" before accepting the update.
I had a problem with xlibmesa3-glu unable to install because of  some file removal need, file which was also used by xlibmesa3.  I proceeded to remove xlibmesa3, temporarily (using dpkg -P  xlibmesa3).  This has required me to remove a lot of other packages,  but basically, once it is removed, all new versions come back again with  the next apt-get -f install.
If the process interrupts displaying an error and asking to do an apt-get  -f install, just do so and then type apt-get dist-upgrade back again when the problem is solved (see above paragraph for a problem  resolution example).
Once you are done with all the upgrade, check once more if there is no  new version (Sarge is moving fast) with an apt-get update followed  again by an apt-get dist-upgrade.
Chances are you will have a new kernel. Using LILO or GRUB makes it completely  different. Note that both LILO and GRUB come with a sensible script to  update their configuration depending upon the kernels installed (if you  used Debian kernel packages, which I recommend). You will also probably  be interested in this article too: HOWTO Upgrade from devfs to udev on Debian Sarge
Remove the current 
Java Runtime Environment or 
Java Developer  Kit if installed (usually j2re1.3 or j2sdk1.3),  and install the new version, compiled with GCC 3.2 (j2re1.4 or  j2sdk1.4).
Remove the Python versions you won't use anymore.
Use deborphan to clean all unneeded packages (purge packages).
Replace flashplayer-mozilla, if installed, with flashplugin-nonfree,  which has a way to update your Flash plugin easily (/usr/sbin/update-flashplugin).
If you used the GNOME 2.2 backport from James Strandboge like described in the article HOWTO Install a Debian Woody with GNOME 2.2 and OOo 1.1, I suggest you also do the following steps to get a really clean Sarge:
- there will probably be a lot of packages left from the backport. To list them, I'd bet listing packages whose version number include a j (my packages), a jds (James' packages) or woody (James or other's packages) are of those. You'll have to remove them and replace them with the appropriate Sarge version
 
	- rebuild scrollkeeper's database by issuing a scrollkeeper-rebuilddb
 
If you used, like me, some Adrian Bunk's backports [
2] with the GNOME 2.2 backport and OpenOffice.org 1.1, you may run into other problems as well. Forcing manually ( apt-get install, nothing more complicated, don't worry) the install of the removed packages will work without problems. The following command resolved the problem for me:
# apt-get install openoffice.org openoffice.org-bin openoffice.org-debian-files openoffice.org-help-fr openoffice.org-l10n-en openoffice.org-l10n-fr openoffice.org-l10n-nl debianutils coreutils manpages-fr
Christian Marillat's packages for multimedia applications will probably  not upgrade like expected, but hey, this is not Debian! And as you already  installed them on your own at the first time, it is not more difficult  to upgrade them now.
Welcome to Sarge…
I strongly advise to clean packages which have been removed while upgrading. To do so, list them with the following command and purge them if needed:
# dpkg -l|grep ^rc
[
1] to do so, find the files touched and re-apply your personal changes. The following command will find them for you: find /etc -name "*.dpkg-old"
[
2] I usually use the newer kernels from him, and their dependencies