From: Rick Moen (rick@linuxmafia.com)
To: linux-questions-only@ssc.com
Subject: Re: [TAG] KDE upgrade 2 -> 3
User-Agent: Mutt/1.4i
Date: Wed, 18 Sep 2002 22:16:04 -0700

Quoting Dan Wilder (dan@ssc.com):

> Haven't tried it myself. All my recent upgrades have been ancient
> Debian -> new Debian. The most brutal was Debian 1.3 -> Debian 3.0 in
> one large step. Grim as death, took several hours and required advanced
> use of Debian's "dpkg" whenever "apt-get" puked and died on dependency
> confusion, but I did the whole thing from remote via ssh without once
> losing the ability to get into the server except while it was rebooting.

Geez, does indeed sound like a death march. I remember people posting to debian-devel summaries of direct 1.3 -> 2.2 upgrades they did just "for fun".[1] They obviously had warped tastes in amusements, but reported nothing too horrible. (Which is impressive, when you consider how much of a relic 1.3/bo was, running on 2.0.29 through 2.0.33 kernels, etc.).

After reading a few such accounts, I came up with my own, more-gradual recipe for such upgrades. Starting with a 1.3 "bo" system, I'd have proceeded as follows:

1. Going from 1.3/bo to 2.0/hamm: There was no apt-get available for 1.3/bo (or 2.0/hamm), so pull down these from 2.1/slink, and install them using "dpkg -i":

http://http.us.debian.org/debian-archive/dists/slink/main/binary-i386/admin/apt_0.3.10slink11.deb
http://http.us.debian.org/debian-archive/dists/slink/main/binary-i386/base/dpkg_1.4.0.35.deb
http://http.us.debian.org/debian-archive/dists/slink/main/binary-i386/admin/dpkg-http_0.19.deb

...and create /etc/apt/sources.list to contain the following line:

deb http://http.us.debian.org/debian-archive/ bo main non-free contrib

apt-get update
apt-get install perl libc6 #crucial pkgs first
apt-get upgrade
apt-get dist-upgrade

You're now at the late 1.3/bo stage. (Which isn't exactly modern: We're talking 1997-8, here.)

Update /etc/apt/sources.list to the following line:

deb http://http.us.debian.org/debian-archive/ hamm main non-free contrib

As before:

apt-get update
apt-get install perl libc6 #crucial pkgs first
apt-get upgrade
apt-get dist-upgrade

You're now at the end of 2.0/hamm development.

Note that the basic technique keeps repeating. The main point is that this method avoids dramatic package-version jumps.

2. Update /etc/apt/sources.list to the following pair of lines:

deb http://http.us.debian.org/debian-archive/ slink main non-free contrib
deb http://non-us.debian.org/debian-non-US slink/non-US main contrib non-free

apt-get update
apt-get install perl libc6 dpkg apt #crucial pkgs first
apt-get upgrade
apt-get dist-upgrade
apt-get install kernel-image-2.0.38

You're now at the end of 2.1/slink development. Reboot to implement your upgraded (but still horribly antique) 2.0 kernel. (Debian's upgrade mechanisms always leave your installed kernel at its existing version, installing only revised packagings of that version, unless and until you specifically ask for a different kernel version.)

3. Update /etc/apt/sources.list to the following pair of lines:

deb http://http.us.debian.org/debian/ potato main non-free contrib
deb http://non-us.debian.org/debian-non-US potato/non-US main contrib non-free

apt-get update
apt-get install perl libc6 dpkg apt debconf #crucial pkgs first
apt-get upgrade
apt-get dist-upgrade
apt-get install kernel-image-2.2.19

You're now at the end of 2.2/potato development. Reboot to your new(er) kernel.

4. Update /etc/apt/sources.list to the following set of lines, fleshed out to a complete set (since this is the one you'll be keeping):

deb http://http.us.debian.org/debian/ stable main non-free contrib
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb http://security.debian.org stable/updates main contrib non-free
deb-src http://http.us.debian.org/debian/ stable main non-free contrib
deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
## Sun Java J2r1.3
# deb ftp://ftp.tux.org/pub/java/debian woody non-free

apt-get update
apt-get install perl libc6 dpkg apt apt-utils debconf #crucial pkgs first
apt-get upgrade
apt-get dist-upgrade
apt-get install kernel-image-2.4.18-686 #(or -686-smp, -k6, -k7, etc.)

You're now tracking 3.0/woody (current stable branch)[2]. Reboot when you feel like running that 2.4 kernel, instead of 2.2.19.

Any X11 setup carried forward is pretty much guaranteed to be XFree86 v. 3.x, so you might be best off jettisoning it and replacing it with 4.x, assuming the latter supports your video chipset.

But I'm guessing you'd bother to do this sort of drill only on a server, so X11 presumably isn't an issue. For one thing, on a desktop box, you'd have local console in case something went wrong, so one would be tempted to just start afresh with the 3.0/woody installer.

[1] http://lists.debian.org/debian-devel/2000/debian-devel-200006/msg01830.html

[2] As of September 2002. Later on, the word "stable" in those sources.list lines will resolve to some post-woody branch, instead, necessitating insertion of an additional step, to get to Debian-stable.

2005 addendum: After 3.0/woody came 3.1/sarge, and "etch" will follow at some point.

2015 addendum: After 4.0/etch came 5.0/lenny, 6.0/squeeze, 7.0/wheezy, and soon 8.0/jessie will be the new stable branch in its turn.