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

Re: Perl depenancy loop



On 7 Mar 1998, Manoj Srivastava wrote:

> Hi,
> 
> 	pkg-order special cases stuff like the typical case of
>  pkg and pkg-dev going from libc5 to libc6
> 
> CASE I
>  a) a package (Y) to be installed conflicts with a package X << version a
>  b) pkg X version a is installed
>  c) pkg a is to be upgraded to version b
>  d) pkg Y depends on pkg X version b
> 	The most common case is solved by upgrading package X before
>  upgrading Y first

Okay, after much toiling and fiddling it does this, intrinsicly, it is not
a special case. I think this case gets taken care of when the reverse
depends and reverse provide depends are scanned during the installation
ordering. I'm not sure - it's complex!
 
> CASE II
> 	That fails in the case of perl, where the dependency d is
>  replaced by:
>  e) pkg X version b depends on Y
>  
> 	You are right, it can only be done as:
>    dpkg -i --auto-deconfigure perl-base_*.deb || true
>   dpkg -i perl_*.deb || true
>   dpkg --pending --configure

I would -MUCH- rather forbid circular conflicts+predepends loops, circular
depends loops are okay but conflicts+predepends are deadly. If perl is
just doing this for no real hard reason then the package should be
changed. 

> 	If we can handle case I correctly, we have to identify and
>  isolate any instances of CASE II
 
> 	So, for all packages to be installed, if there is a conflict
>  against an installed package; and the conflict is related to a
>  version number such that the conflict is (<, <<, or <= version a,),
>  and if the conflicted with package is to be upgraded in this install,
>  then; if the new version of the conflicted with package depends on
>  the original package (the one with the conflict), then mark the
>  remove and two upgrades to be handled specially in the breaks
>  section.

Erm, I have learned this is a simplistic view. The conflicts+predepends
loop can come about indirectly through provides, older versions and can
be longer than two packages - AFAIK it is -very- hard to detect and
resolve all cases. We can trap the single case you describe but ...

Deity as an upgrade tool is useless so long as this is unresolved :<

Jason
Who is immensly pleased that the ordering code is actually pretending to
work now.


Reply to: