[conspire] Other notes from the Debian 5.0.1/Lenny to 6.0/Squeeze upgrade
rick at linuxmafia.com
Tue Aug 24 17:37:35 PDT 2010
Before I quit this topic for a couple of weeks and go on holiday:
> Also, important: Before engaging in any such adventure, make a safety
> reference copy of the contents of /etc. I do it like this:
> tar cvzf /root/etc-$(date +%F).tar.gz /etc
Strickly speaking, this is redundant to the version-control repository
record already kept of all /etc changes by Joey Hess's truly slick
utility 'etckeeper'. http://joey.kitenet.net/code/etckeeper/
etckeeper tucks away all such changes automatically whenever you
alter /etc/* files via a package operation, putting them in a git repo.
And that's great -- however, one of the core truths about running a
Linux system is that biggest threat to your system by far is a stressed,
tired user wielding the root password. Being such a tired, stressed
user, I try to fall back on tools and methods that are simple,
deterministic, and familiar -- e.g., tar and rsync.
Given the whole nightmare anecdote, you might be wondering, at this
point: Is it _that_ wild and wooly on the Debian-testing branch?
No, it really isn't. What was wild and wooly was getting there from
Debian-testing. On the basis of experience, I expect pretty much smooth
sailing from this point forward. (I will qualify that statement in a
To recap, there is a rolling distribution of bleeding-edge packages that
is dubbed 'unstable', which is a symlink in the Internet package mirrors
that always points to named branch 'sid' (the bratty neighbour kid in
'Toy Story' who liked to break toys):
lftp :~> open ftp://ftp.debian.org/debian/dists/
cd ok, cwd=/debian/dists
lftp ftp.debian.org:/debian/dists> ls
lrwxrwxrwx 1 1176 1176 5 Jun 26 09:55 Debian5.0.5 -> lenny
-rw-rw-r-- 1 1176 1176 485 Jun 20 20:29 README
drwxrwsr-x 19 1176 1176 4096 Aug 24 20:28 experimental
drwxrwsr-x 5 1176 1176 4096 Jul 13 08:36 lenny
drwxrwsr-x 5 1176 1176 139264 Aug 24 20:27 lenny-proposed-updates
lrwxrwxrwx 1 1176 1176 22 Feb 14 2009 proposed-updates -> lenny-proposed-updates
lrwxrwxrwx 1 1176 1176 12 Aug 04 2008 rc-buggy -> experimental
drwxr-sr-x 19 1176 1176 4096 Aug 24 20:28 sid
drwxr-sr-x 17 1176 1176 4096 Aug 24 20:27 squeeze
drwxr-sr-x 5 1176 1176 4096 Aug 24 20:27 squeeze-proposed-updates
lrwxrwxrwx 1 1176 1176 5 Feb 14 2009 stable -> lenny
lrwxrwxrwx 1 1176 1176 22 Feb 14 2009 stable-proposed-updates -> lenny-proposed-updates
lrwxrwxrwx 1 1176 1176 7 Feb 14 2009 testing -> squeeze
lrwxrwxrwx 1 1176 1176 24 Feb 14 2009 testing-proposed-updates -> squeeze-proposed-updates
lrwxrwxrwx 1 1176 1176 3 Nov 10 2007 unstable -> sid
A 'rolling distribution' is one that's continually incremented on an
ongoing basis rather than mass-upgraded from release to release. That
is, unstable = sid is _never_ a release version. It's the development
branch (although it's designed to be kept usable 100% of the time, which
is why 'experimental' exists as a place for stuff not guaranteed to
The 'unstable' branch gets populated with new packages immediately upon
Debian developers uploading them and the Debian build servers compiling
them and cranking them out. The only real quality control you get is
what the Debian developer provides. If he/she uploads a severely broken
package, it's mostly pride of workmanship and an alert set of developers
who _also_ run Debian-unstable that make the problem get quashed
'Testing' is a branch that's populated by a quarantining script that
checks newly uploaded packages to 'unstable' to see if they meet
automated quality criteria. Thus, it's a good bit further back from the
bleeding edge than is unstable -- but is likewise a rolling
distribution. Currently, that is 'squeeze', which will become Debian
6.0 when released (planned to be soon, and not just by Debian's slow
The process of releasing involves controlling new additions to the
testing branch, and then the Release Manager declaring it ready, at
1. The 'testing' symlink gets repointed to a new snapshot forked
off from sid=unstable. The Toy Story-derived name of the next branch
(the one that presumably would eventually become 6.1) hasn't yet been
2. The 'stable' symlink gets repointed to what until now had been the
target of the testing symlink, currently 'squeeze'.
3. Symlink 'oldstable' gets created to point to the former stable
branch, which currently is lenny.
_But_, if you're tracking the continually evolving 'testing' (or
'unstable') branch, you don't really care about that. You don't need
to, as it's not relevant. One day, you're on testing = squeeze, the
next day you're on testing = squeeze+1 (whatever it's going to be
called), and the delta of package versioning is about the same as you
get between any two other days.
What one wants to do, when tracking a rolling distro like testing or
unstable, is fetch new packages relatively _frequently_ (like, at least
every week or two, or every month or so), so that the increment of
package versions is not very jarring.
apt-get update #fetch new indexes
apt-get dist-upgrade #get any revisions of what I've installed
I _might_ have not encountered the cited breakage had I gotten to the
current contents of testing=squeeze gradually, instead of all at once.
Or at least, it would have been easier to digest and deal with a few
package changes at a time, instead of everything in a torrent.
As a precaution, it's useful to install package apt-listchanges .
Package: apt-listchanges (2.85.3)
package change history notification tool
The tool apt-listchanges can compare a new version of a package with the
one currently installed and show what has been changed, by extracting
the relevant entries from the Debian changelog and NEWS files.
It can be run on several .deb archives at a time to get a list of all
changes that would be caused by installing or upgrading a group of
packages. When configured as an APT plugin it will do this automatically
The point is, it shows you at the time of package-fetching the Cliff
Notes version of what's in that package revision, and with reasonable
luck will advise you of, e.g., the need to suddenly add a DirectoryIndex
line to /etc/apache2/mods-enabled/userdir.conf .
I've just now re-installed apt-listchanges.
More information about the conspire