[Aptitude-devel] How to get two-stage install marking into the GUI?
Daniel Burrows
dburrows at debian.org
Fri Dec 5 04:04:53 UTC 2008
Say I have two packages A and B. A depends on B, but I the user want
to install both packages. So I select A and B and mark them for
installation. Some time later, I'm tired of A so I remove it. Now what
happens? At the moment, B gets removed. I don't think we can do
anything about this (aside from exposing automatic status in the GUI) if
the user picks A and B separately. But at the command-line, aptitude
handles this correctly when both are installed in the same shot:
$ aptitude install A B
... neither A nor B is marked as automatic ...
The difference is that the command-line version installs packages in
two passes. First it just turns on the "install" flag for everything
being installed (and the "remove" flag for everything being removed),
then it does a second pass where it asks apt to greedily resolve
dependencies (by setting the "autoinst" flag to true). In the GUI,
this is made a bit more complicated by the fact that the install /
remove code is broken up and hidden behind virtual interfaces.
Another place where you'd see this is when A depends on "C | B": with
a two-pass solution, only A and B end up being installed, but the
current code will also drag in C (because B isn't being installed when
A is selected).
My current plan is to add a flag to the virtual interface indicating
whether to turn autoinst on, or perhaps make it more generic and have
it say whether we're in the first pass. This feels a little hacky, but
I can't see any better resolution. Does anyone see a better approach?
I've attached my current solution as a patch.
Thanks,
Daniel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: two-pass.patch
Type: text/x-diff
Size: 5724 bytes
Desc: not available
Url : http://lists.alioth.debian.org/pipermail/aptitude-devel/attachments/20081204/3acab141/attachment.patch
More information about the Aptitude-devel
mailing list