Re: Getting rid of circular dependencies
On Fri, Jun 24, 2005 at 05:21:51PM +0200, Bill Allombert wrote:
> Dear Debian developers,
> Following a post to Debian-Devel-Announce, I would like to
> discuss getting rid of circular dependencies.
> Why ?
> 1) The semantic of Depends specified by Debian policy 7.2. does not allow
> packages with circular dependencies to be installed at all:
> This declares an absolute dependency. A package will not be
> configured unless all of the packages listed in its `Depends'
> field have been correctly configured.
This phrasing is obviously wrong as you can install packages with
circular dependencies. This phrasing say exactly what Pre-Depends is.
Depends should be described as follows:
This declares an absolute dependency. A package will not be
configured unless all of the packages listed in its `Depends'
field have been correctly unpacked.
But I actually think you may have made a mistake by saying that
configured refer to the configure phase in dpkg install. It could be
> This mean that dpkg have to go out of its way to install them, and doing
> that break the expectation of packages expecting Depended package to be
> configured before them.
> 2) There have been lots of evidence that circular dependencies create
> problems during upgrade. See bugs #310490 in particular
This may be the case, but I think that this may be a problem in aptitude
more than in the existance of circular dependencies. Well I'm not the
one to determine this.
Removing unneeded circular dependencies is a good thing though. Especially
for big chunks of packages.
> 3) Circular dependencies make the job of the testing scripts harder.
Yes that is true.
> 4) Circular dependencies make bootstrapping a new plateform harder.
> 5) There is an urban legend that circular dependencies between packages
> build from the same source are harmless. This is false of course. Being
> part of the same source package has no effect of the Packages.gz file
It is true for case 3 and 4 above (at least 4 as I not fully sure about case 3).
> Which ?
> Preferably all of them.
> Robert Lemmen was kind enough to set up a summary of current circular
> dependencies: <http://debian.semistable.com/debgraph.out>
> See the list for yourself.
> The circular dependencies involving the largest number of packages are:
> * libxtst6 libxtrap6 libxrandr2 libxp6 libxt6 libxmu6 libxi6 libxrender1
> libxft1 libsm6 xlibs
> * libgnorba27 libgnomeui32 libgnomesupport0 gnome-bin gnome-libs-data libgnome32
> * xemacs21-gnome-nomule xemacs21-gnome-mule-canna-wnn xemacs21-gnome-mule
> xemacs21-nomule xemacs21-mule-canna-wnn xemacs21-bin xemacs21-support
> xemacs21-mule xemacs21
> * gnome-panel-data gnome-panel nautilus gnome-control-center capplets
> * phpgroupware-preferences phpgroupware-admin phpgroupware-setup
> phpgroupware-phpgwapi phpgroupware
> * wesnoth-tdh wesnoth-ei wesnoth-sotbe wesnoth-trow wesnoth-httt
> wesnoth-data wesnoth
> How ?
> I see two easy case:
> 1) foo and foo-data. There is usualy no reason for foo-data to depend on
> foo. foo-data does not provide user-visible interface, only data, so it
> does not need to depend on foo.
> 2) libfoo and foo-bin, where foo-bin include binaries linked with
> libfoo. Usually libfoo only need to Depends on configuration data
> in foo-bin and not on any binaries linked with libfoo (to avoid infinite
> recursion). In that case it should be possible to split foo-bin in
> foo-bin and foo-common, and change libfoo to depend on foo-common
> Other options ?
> Bill. <email@example.com>
> Imagine a large red swirl here.
> To UNSUBSCRIBE, email to debian-devel-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact firstname.lastname@example.org
--------------------- Ola Lundqvist ---------------------------
/ email@example.com Annebergsslingan 37 \
| firstname.lastname@example.org 654 65 KARLSTAD |
| +46 (0)54-10 14 30 +46 (0)70-332 1551 |
| http://www.opal.dhs.org UIN/icq: 4912500 |
\ gpg/f.p.: 7090 A92B 18FE 7994 0C36 4FE4 18A1 B1CF 0FE5 3DD9 /