Control: severity -1 wishlist
Control: tags -1 + wontfix
Control: close -1
Hi Josh,
2012-02-04 19:10 Josh Triplett:
Package: aptitude
Version: 0.6.4-1.2
Severity: normal
I've run into similar problems before, but this time I had something I
could easily reproduce and provide a transcript for. Also, I've run
into similar problems that don't involve experimental at all, but in
this case the involvement of experimental seems like the likely culprit.
I tried to upgrade iceweasel from 10 in unstable to 11 in experimental.
Doing so requires installing xulrunner-11.0 and libmozjs11d from
experimental, and upgrading libnss3-1d to experimental. aptitude's
resolver seems extremely reluctant to do the latter. I'll provide two
transcripts below, one where I don't provide the resolver with any
accept/reject hints (and it takes quite a few steps to do something
sensible), and one where I explicitly reject things I don't want it to
do (and it still needs two rejections before reaching the correct
solution). In any case, the resolver should have gone immediately to
the solution I ended up with, and shouldn't have presented the situation
as brokenness that needed fixing in the first place.
I disagree. Giving hints is an integral part of using aptitude and its
resolver.
Otherwise, aptitude will rightly try to install things from the default
versions, which presumably are not experimental, e.g. stable or unstable.
For example, if one uses mostly stable and has testing for the
occasional package, one doesn't want that by asking to upgrade
${desktop-app} which depends on ${network-manager} which depends on
${initd}, one ends up pulling half of testing without enough warning.
People are really upset about that some times, judging by the tone of
the bug reports.
To nudge the resolver towards accepting non-default versions, hints is
the appropriate way, and one can get that in very few steps even in the
face of very complex upgrade situations.
I don't have iceweasel/firefox in experimental now, but similar as your
example with iceweasel and hints, with libreoffice (which should be
similar or even "more complex"), I get to upgrade all libreoffice tools
to experimental in a few as 4 steps:
=======================================================================
# aptitude -s install libreoffice-writer/experimental
The following packages will be upgraded:
libreoffice-writer{b}
1 packages upgraded, 0 newly installed, 0 to remove and 271 not upgraded.
Need to get 7,588 kB of archives. After unpacking 135 kB will be used.
The following packages have unmet dependencies:
libreoffice-writer : Depends: libreoffice-base-core (= 1:5.2.0~beta2-1) but
1:5.1.3-2 is installed and it is kept back
Depends: libreoffice-core (= 1:5.2.0~beta2-1) but
1:5.1.3-2 is installed and it is kept back
Internal error: found 2 (choice -> promotion) mappings
for a single choice.
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) libreoffice-writer [1:5.1.3-2 (now)]
Accept this solution? [Y/n/q/?] r1
Rejecting the installation of libreoffice-writer version 1:5.1.3-2 (now)
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) R libreoffice-writer [1:5.1.3-2 (now)]
Accept this solution? [Y/n/q/?] .
The following actions will resolve these dependencies:
Remove the following packages:
1) libreoffice-writer [1:5.1.3-2 (now)]
Accept this solution? [Y/n/q/?] r1
Rejecting the removal of libreoffice-writer
The following actions will resolve these dependencies:
Remove the following packages:
1) R libreoffice-writer [1:5.1.3-2 (now)]
Accept this solution? [Y/n/q/?] .
The following actions will resolve these dependencies:
Remove the following packages:
1) python3-uno [1:5.1.3-2 (now)]
Upgrade the following packages:
2) libreoffice-base-core [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
3) libreoffice-calc [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
4) libreoffice-common [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
5) libreoffice-core [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
6) libreoffice-draw [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
7) libreoffice-impress [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
8) libreoffice-kde [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1 (experimental)]
9) libreoffice-math [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
10) libreoffice-style-breeze [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
11) libreoffice-style-galaxy [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
12) libreoffice-style-oxygen [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
13) libreoffice-style-tango [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
14) uno-libs3 [5.1.3-2 (now) -> 5.2.0~beta2-1 (experimental)]
15) ure [5.1.3-2 (now) -> 5.2.0~beta2-1 (experimental)]
Accept this solution? [Y/n/q/?] r1
Rejecting the removal of python3-uno
The following actions will resolve these dependencies:
Remove the following packages:
1) R python3-uno [1:5.1.3-2 (now)]
Upgrade the following packages:
2) libreoffice-base-core [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
3) libreoffice-calc [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
4) libreoffice-common [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
5) libreoffice-core [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
6) libreoffice-draw [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
7) libreoffice-impress [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
8) libreoffice-kde [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1 (experimental)]
9) libreoffice-math [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
10) libreoffice-style-breeze [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
11) libreoffice-style-galaxy [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
12) libreoffice-style-oxygen [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
13) libreoffice-style-tango [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
14) uno-libs3 [5.1.3-2 (now) -> 5.2.0~beta2-1 (experimental)]
15) ure [5.1.3-2 (now) -> 5.2.0~beta2-1 (experimental)]
Accept this solution? [Y/n/q/?] .
The following actions will resolve these dependencies:
Upgrade the following packages:
1) libreoffice-base-core [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
2) libreoffice-calc [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
3) libreoffice-common [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
4) libreoffice-core [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
5) libreoffice-draw [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
6) libreoffice-impress [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
7) libreoffice-kde [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1 (experimental)]
8) libreoffice-math [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
9) libreoffice-style-breeze [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
10) libreoffice-style-galaxy [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
11) libreoffice-style-oxygen [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
12) libreoffice-style-tango [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
13) python3-uno [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1 (experimental)]
14) uno-libs3 [5.1.3-2 (now) -> 5.2.0~beta2-1 (experimental)]
15) ure [5.1.3-2 (now) -> 5.2.0~beta2-1 (experimental)]
Accept this solution? [Y/n/q/?]
The following packages will be upgraded:
libreoffice-base-core libreoffice-calc libreoffice-common
libreoffice-core libreoffice-draw libreoffice-impress
libreoffice-kde libreoffice-math libreoffice-style-breeze
libreoffice-style-galaxy libreoffice-style-oxygen
libreoffice-style-tango libreoffice-writer python3-uno uno-libs3 ure
The following packages are RECOMMENDED but will NOT be installed:
libreoffice-avmedia-backend-gstreamer libreoffice-avmedia-backend-vlc
16 packages upgraded, 0 newly installed, 0 to remove and 256 not upgraded.
Need to get 80.5 MB of archives. After unpacking 18.1 MB will be used.
Note: Using 'Simulate' mode.
Do you want to continue? [Y/n/?]
Would download/install/remove packages.
=======================================================================
Note that I encountered this problem in the GUI by hitting + on the
experimental version of iceweasel, but I've reproduced it with "aptitude
install iceweasel/experimental" on the command line to provide a
transcript. If I'd said "aptitude install -t experimental iceweasel",
aptitude would get it right immediately,[...]
Indeed, another way is to specify the "-t / --target-release" option in
the command line, telling aptitude that you want "experimental" as
default release for this action. It gets the solution in the first
attempt with libreoffice as well:
=======================================================================
# aptitude -t experimental -s install libreoffice-writer/experimental
The following packages will be upgraded:
libreoffice-base-core libreoffice-calc libreoffice-common
libreoffice-core libreoffice-draw libreoffice-impress
libreoffice-kde libreoffice-style-galaxy libreoffice-style-oxygen
libreoffice-style-tango libreoffice-writer uno-libs3
The following packages are RECOMMENDED but will NOT be installed:
libreoffice-avmedia-backend-gstreamer libreoffice-avmedia-backend-vlc
12 packages upgraded, 0 newly installed, 0 to remove and 386 not upgraded.
Need to get 77.7 MB of archives. After unpacking 17.9 MB will be used.
The following packages have unmet dependencies:
libreoffice-style-breeze : Depends: libreoffice-common (= 1:5.1.3-2) but
1:5.2.0~beta2-1 is to be installed
libreoffice-math : Depends: libreoffice-core (= 1:5.1.3-2) but
1:5.2.0~beta2-1 is to be installed
python3-uno : Depends: libreoffice-core (= 1:5.1.3-2) but 1:5.2.0~beta2-1 is
to be installed
ure : Depends: uno-libs3 (= 5.1.3-2) but 5.2.0~beta2-1 is to be installed
The following actions will resolve these dependencies:
Upgrade the following packages:
1) libreoffice-math [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1 (experimental)]
2) libreoffice-style-breeze [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1
(experimental)]
3) python3-uno [1:5.1.3-2 (now) -> 1:5.2.0~beta2-1 (experimental)]
4) ure [5.1.3-2 (now) -> 5.2.0~beta2-1 (experimental)]
Accept this solution? [Y/n/q/?]
=======================================================================
[...]but I shouldn't have to do
that, and as far as I can tell I *can't* do that from within the GUI.
You can specify the default release in the command line without actions,
the GUI will then act upon that.
I don't see why you think that you shouldn't have to do that, since it's
basically how apt has work since ages ago/forever -- pin priorities.
First, without any hints to the resolver; aptitude first proposes
removing iceweasel and everything that depends on it, then proposes just
cancelling my explicitly requested action, then successively proposes
installing icedove, iceape, or conkeror, and finally consents to upgrade
libnss3-1d:
(The fact that it suggested "remove" as a first action was a well-known
problems present for many years, independently of this particular case).
Other than that, aptitude's resolver is a complex beast which works
based on heuristics. The way to guide those heuristics is to give
user-desired hints. It will suggest to Keep few packages installed
rather than upgrade many, specially if they come from non-default
versions.
Next, with me explicitly rejecting the removal of iceweasel and the
cancellation of my upgrade of iceweasel, the resolver then consents to
upgrade libnss3-1d after only those two rejected solutions:
So, as far as I can see, this is always how aptitude and the resolver is
intended to work.
So setting as wishlist, +wontfix and closing -- aptitude won't be
changed in that direction in the foreseeable future.
Cheers.
--
Manuel A. Fernandez Montecelo <[email protected]>
_______________________________________________
Aptitude-devel mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/aptitude-devel