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.

