Thursday, June 3, 2010

Debian Squeeze - codependencies and circular dependencies

Running Debian Squeeze on my desktop (before it is released), I find I am taking a closer look at the packages installed and their dependencies.

It started as an effort to keep a minimal install, but as my desktop use has progressed, at 992 packages, my install is now hardly minimal.

Package Codependencies:

Perl (perl and perl-modules) gives a good example of a codependency.

Here is a comment from a debian bug discussion which explains things somewhat

The co-dependency between perl and perl-modules is required as these
are fundamentally one package, split only into arch any/all parts.
Modules within perl use modules within perl-modules and vice-versa.



Python does not use this codependencies approach, but does have a package structure that also requires a bit of understanding when you first see it.



Python (python and python-minimal), seem to be instead, set and subset, with the latter intended on being enough to support the initial install process, whilst not taking too much space on install media.

These decisions are understandable when you remember that install media has a fixed size.

( This bartering, is perhaps similar to when you move house and have to discuss what goes where in the fixed size Ford Transit Luton/U-Haul )


Python diagram (with a particular leaning towards my install packages):



It is possible to install python 2.6 to python 3.1 in Squeeze, they are just not the default. There is not much relying on python 3.1 just now, except maybe if you wanted to beta test the latest Blender.

(Aside: you will find libpython2.6 and libpython3.1 in Squeeze but there is no python 2.5 equivalent)

Note: All version numbers checked in June 2010 which is likely 6 months or more ahead of Squeeze actual release. Version numbers are subject to change and may not be entirely accurate at and beyond Squeeze final release


Package circular dependencies:

libwrap0 and tcpd, on a server, are examples as illustrated by the diagram below:



When I look at installed packages on servers, I see tcpd and think...how did that get there.

The answer, of course, is that I have openssh-server installed, and, hopefully the diagram illustrates the rest.

I use the term 'circular dependencies' very loosely in this posting, as the term 'circular dependency', it could be argued, more properly applies where both packages strictly depend on each other.

Package confusing dependencies:

In Squeeze gamin is supposed to be a drop in replacement for fam.

I use the Thunar file browser and this diagram shows some interesting dependencies:


seahorse-plugins is something I also use on the desktop and I found it useful to include it in the diagram.

For libgamin0 to be a drop in replacement for libfam0, there would have to be changes to both of the vfs packages shown, so that either of libgamin0 or libfam0 could be used.

I think gamin and libgamin0 are also codependencies (as it appears today in aptitude), but the thing that is confusing to me is how I could possibly install gamin.

My thoughts are that if I try to install gamin or libgamin0 then it will break dependencies higher up :(



There must be slightly more to it than I thought, because although I received a dpkg complaint, when replacing libfam0 with libgamin0, my system seems to be working without it wanting to remove thunar or seahorse-plugins :)

No comments: