I'm going to upgrade my _old_ Ubuntu Hardy Heron X86_64 laptop to the fresh _new_ (autumnal) Ubuntu Intrepid Ibex X86_64, the CLI way (it should apply perfectly for the 32 bit version too). Open a new virtual terminal and type:
cd dpkg −−get−selections > ~/my-installed-programs
...this way you'll make a backup copy of the synaptic choices you already made [about your already installed programs].
It would also be a good idea to keep a backup copy of your third party repository sources (don't forget to keep their respective keys! - I keep them as inline comments inside my files), so:
cp /etc/apt/sources.list.d/* 3rdparties/
Save your /etc (just in case):
tar cvf etc.tar /etc
Now it would be safe to make a backup copy of your important stuff; here I suggest you a simple tbz2 backup archive of your important stuff:
tar cvjf $(whoami)-backup.tbz2 ~
After some time (depending by the amount of your data and your CPU's juice), move the resulting backup file somewhere (use your imagination and DIY...flash keys, ext HDDs, other PCs....). OK, now we may proceed for the distribution upgrade, so:
sudo apt-get install update-manager-core
Respond to the first one or two basic questions, wait for the process to be finished, reboot when asked, and (hopefully) you should end up with a new (hopefully...) working version of your open source os of choice to play with!
IMPORTANT NOTE: If you have an almost standard system, the process should be easy and mandatory. BUT if you have applied strong modifications to your /etc, probably you'll be asked many questions regarding your config files. In this case take your time and review your settings before just pressing "ENTER".
If bad stuff happens (well, sometimes it just happens!), install a clean (upgraded) system with the ubuntu official CD image and uncompress your home backup on your new system's home, restore your third parties sources.list and use the following commands to restore your synaptic selections:
sudo dpkg --set-selections < my-installed-programs sudo apt-get update
then apply your changes with the follwing command:
sudo apt-get upgrade sudo apt-get dselect-upgrade
ADDENDUM: In case you wish to live on the edge and track developer's releases, when switching the distribution, alternatively type:
sudo do-release-upgrade --devel-release
Once you're at it, create a launchpad account and submit bug reports to Canonical developers by clicking the "Send"-button when an app crashes.