It's been quite some time (almost two years) since my previous "release"
of debtree, but now version 0.7.3 is
available.
And it still generates very nice graphs 
The changes are relatively minor: a few nice fixes for corner cases that
were not handled correctly, and an update of the default lists of "skip"
and "end" packages which help to limit the size of graphs for a fair number
of packages I tried (including konqueror and openoffice.org).
Reason to revisit debtree was a recent nice mail from a debtree user, but
also the current discussions about udev and the
FHS. I'm on
the side of "let's please keep /usr mountable separately". Mostly because
I like a (small) encrypted root with a separate (large) unencrypted `/usr'.
I'm also increasingly unhappy with the default size of Debian's desktop
installs, especially now that it looks as if Squeeze will see installation
of Recommends by default by tasksel (and thus Debian Installer).
For comparison, the size of a default Gnome desktop install for Etch was 1360MB; for Lenny it is 1830MB; for Squeeze it looks like it will be well over 3000MB! Remember that for Sarge we installed both Gnome and KDE from CD1 with both together taking 1390MB?
Sure, some of that is real functionality, but a lot is also (IMO) redundant
visual effects that only serve to slow the desktop down and junk needed to
do stuff automagically. And a heck of a lot is duplicated functionality.
One of the main reasons I switched to Linux was because it gave me back control
over my systems, but with KDE4 and pervasive stuff like hal and all the
various "kits" Linux is on a fast track that's giving priority to flashiness
over real functionality and eroding that control.
Here's a fairly default dependency graph for hal (click for full image).
Looks reasonable, right?
But that's only because most major dependencies, such as dbus, policykit
and pm-utils have been pruned. Here's a complete graph, with only libc6
omitted (full image is 1.5MB). Truly a tangled web. Scary.
One can also look at it from the other side. Today I upgraded my sid chroot
and found I suddenly needed to install libavahi-client3, libavahi-common3,
libavahi-common-data and libdbus-1-3. Why? Reason turned out to be
libcups2, so I checked if I really needed that. And here's why I do.
Most of these dependencies of libgtk2.0-0 I can understand, but isn't gtk
supposed to be a graphical toolkit library? Couldn't printing support be
implemented in some more specialized Gnome printing toolkit library?
But I'm probably missing something.
Anyway, now that I have a bit more perl experience through my
recent work on
debmirror, maybe I should finally
port debtree from shell script to perl...
See the debtree home page for a
full overview of how to read the graphs, but here's a quick intro.
Purple arrows are Pre-Depends, blue are Depends and black are Recommends;
green connections show Provides. The green packages are currently installed
in my sid chroot, while the white ones are not. The diamonds show where the
graph has been pruned: dependencies for these packages are not shown.


