[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Getting rid of circular dependencies, stage 6



On Tue, 24 Oct 2006, Frank Küster wrote:
> Don Armstrong <don@debian.org> wrote: 
> > On Tue, 24 Oct 2006, Petter Reinholdtsen wrote:
> >> [Ian Jackson]
> >> > The only argument I've heard against circular dependencies as a
> >> > general rule is that they can trigger a particularly stupid (and
> >> > probably not very hard to fix) bug in apt,
> >> 
> >> You seem to have missed the argument that packages with circular
> >> dependencies are impossible to install and configure in the correct
> >> (dependency) order, and thus will end up being installed and
> >> configured in a nondeterministic order instead. It is documented
> >> that dpkg try its best to find a sensible order for the packages,
> >> but it is bound to fail one way or another if two packages really do
> >> need each other to be configured before they are configured.
> >
> > Packages which have circular dependencies and depend on the other
> > package being configured are buggy; at most they can depend on the
> > other package being unpacked. Since there is no way to specify this
> > kind of dependency, Depends: is as close as you can get.
> 
> It seems to me that the solution in such situation shouldn't be a
> circular dependency with its "nondeterministic" behavior,

The end behavoir is only nondeterministic if the packages in the set
care what order they are configured in. If they do, that's a bug.

> but instead to separate one of the packages into two. For example if
> package b needs package a unpacked, but not configured, separate
> package a in a-data and a-therest, where a-data provides all that
> package b needs: Now b can depend on a-data, and a-therest can
> depend on b.

This is inherently fragile and requires a and b to be closely
cooperating packages; it also makes it difficult to define an
'a-therest' requires 'a-data' >> someversion dependency. (You'd have
to release a new version of b to do so.)

I'm all for removing unecessary circular dependencies, but hacking
around necessary circular dependencies is ugly. Far better to fix the
tools if they're unable to handle them properly.


Don Armstrong

-- 
Taxes are not levied for the benefit of the taxed.
 -- Robert Heinlein _Time Enough For Love_ p250

http://www.donarmstrong.com              http://rzlab.ucr.edu



Reply to: