[Aptitude-devel] 0.5.2 nearly done, almost certainly.
Daniel Burrows
dburrows at debian.org
Mon Apr 20 04:21:34 UTC 2009
So, I spent some time this weekend working on the UI end of the
resolver. I've overhauled the GTK+ interface so that it now allows
access to all the resolver's features (specifically, rejecting and
approving actions). Generating and reviewing solutions should also be a
bit more intuitive: instead of copying the curses interface, the new
code shows a list of all the generated solutions with a button to make a
new one. I won't claim this is an end-point, but it's a nice step up
from where that bit of the UI was on Friday. :-)
I've also "fixed" the safe-upgrade breakage by just disabling the
reinstatement of unused packages. For those not familiar with this
little nasty, it went like this:
DEBUG aptitude.apt.cache - aptitudeDepCache::sweep(): Removing kdebase-bin-kde3: it is unused.
(...)
TRACE aptitude.resolver.search - Trying to resolve kdebase-runtime 4:4.2.2-1 -> {kdebase-runtime-bin-kde4 4:4.2.2-1} by installing kdebase-runtime-bin-kde4 4:4.2.2-1
(...)
DEBUG aptitude.apt.cache - aptitudeDepCache::sweep(): Cancelling the removal of kdebase-bin-kde3: it is no longer unused.
kdebase-bin-kde3 conflicts with kdebase-runtime-bin-kde4. When
aptitude tried to apply its dependency "solution", the unused-package
handling code would notice that kdebase-bin-kde3 was "no longer unused"
and reinstate it on the system. Boom!
Disabling reinstatement is a brutal fix that will have unpleasant
side-effects. I might look into whether there's a better option, but I
don't have many ideas. The one thing I've thought of is to check
whether each reinstated package conflicts or is conflicted by any
installed package (a fairly quick test). Doing this will solve some
instances of the problem, but I'm not convinced that it solves all of
them. For instance: what if the package that can't be reinstated is a
dependency of *another* package that was reinstated? Is there any way
to avoid full dependency resolution if that happens?
All that said: I'm nearly ready to release aptitude 0.5.2. I have the
following provisional TODO:
(1) Either mitigate the potential fallout from yanking reinstatement,
or find a safe way to, ahem, reinstate it.
(2) Document the new resolver capabilities (tiering and the
configuration options that go with it).
Once those points are finished I think it's time for a release!
Daniel
More information about the Aptitude-devel
mailing list