[Aptitude-devel] Bug#658635: Resolver extremely reluctant to upgrade packages to experimental, even as dependencies of packages in experimental

Manuel A. Fernandez Montecelo manuel.montezelo at gmail.com
Sat Jun 11 12:03:39 UTC 2016


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 <manuel.montezelo at gmail.com>



More information about the Aptitude-devel mailing list