[conspire] Other notes from the Debian 5.0.1/Lenny to 6.0/Squeeze upgrade

Rick Moen 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
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
lftp ftp.debian.org:/debian/dists> 

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
release standards).

The process of releasing involves controlling new additions to the
testing branch, and then the Release Manager declaring it ready, at 
which point:

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
  during upgrades. 

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 mailing list