[Aptitude-devel] Bug#757440: aptitude: wants to remove some package though dependencies are fine
Manuel A. Fernandez Montecelo
manuel.montezelo at gmail.com
Mon May 9 15:02:59 UTC 2016
Contol: owner -1 !
Contol: fixed -1 aptitude/0.8-1
Contol: close -1
Hi,
2014-08-08 09:23 Vincent Lefevre:
>Package: aptitude
>Version: 0.6.11-1
>Severity: normal
>
>I type 'U', and get for "linux-libc-dev:i386":
>
>Some dependencies of linux-libc-dev:i386 are not satisfied: ▒
> ▒
> ▒
> * linux-libc-dev:i386 breaks linux-libc-dev (!= 3.14.13-2) ▒
> ▒
> ▒
>The following packages conflict with linux-libc-dev:i386: ▒
> ▒
> ▒
> * linux-libc-dev breaks linux-libc-dev:i386 (!= 3.14.15-1) ▒
The root cause of this is that multi-arch packages need to be installed
with the same exact version, and this is a Debian-wide problem affecting
upgrades with multi-arch and when the different arches have these
packages out of sync (e.g. when some buildds are slower than others, one
arch fails to build the package, or more importantly, when binNMUs are
different for arches that one wants to have installed).
There's some discussion about this in #663134, and several development
mailing lists, for example proposing to solve this problem at least for
the binNMUs by keeping all NMUs in sync (always bumping numbers, even if
some arches don't need it).
This is a problem that only affects unstable (and possibly testing in
some cases, but I don't think that very often), so I'm not sure if this
is going to be addressed or if things will keep working as they are now.
>and when I type 'g':
>
>iF gnupl│Some packages were broken and have been fixed: │
>iF gnupl│ │
>iF gnupl│Remove the following packages: │
>i graph│libc6-dev:i386 │
>iF gthum│libstdc++-4.8-dev:i386 │
>iF gthum│linux-libc-dev:i386 │
>i libpa│ │
>i libxd│Install the following packages: │
>iF libxm│libc++-dev:i386 [1.0~svn205159-1 (testing, unstable)] │
>iF libxm│libc++-helpers [1.0~svn205159-1 (testing, unstable)] │
>iF libxm│libc++1:i386 [1.0~svn205159-1 (testing, unstable)] │
>iF libxm│ │
>i linux│Keep the following packages at their current version: │
>i metac│expect [5.45-5 (now)] │
>i metac│graphviz [2.26.3-17.1 (now)] │
>iF udev │libgraphviz-dev [2.26.3-17.1 (now)] │
> │libgvc6 [Not Installed] │
>These pac│libmetacity-private1 [Not Installed] │rent ▒
>state to │libpathplan4 [2.26.3-17.1 (now)] │ ▒
> │libsystemd-daemon0 [204-14 (now)] │ ▒
>This grou│libsystemd-journal0 [204-14 (now)] │ ▒
> │libsystemd-login0 [204-14 (now)] │ ▒
>If you se│libudev1 [204-14 (now)] │ar in ▒
>this spac│libxdot4 [2.26.3-17.1 (now)] │ ▒
> │linux-libc-dev [3.14.13-2 (now, testing)] │ ▒
> │metacity [1:2.34.13-1 (now)] │ ▒
> │metacity-common [1:2.34.13-1 (now)] │ ▒
> │ │ ▒
> │Leave the following dependencies unresolved: │ ▒
> │libgcc-4.8-dev:i386 recommends libc6-dev:i386 (>= 2.13-5) │ ▒
> │ [ Ok ] │ ▒
>
>I don't understand why linux-libc-dev:i386 is removed, since
>linux-libc-dev is kept to its current version.
This is because 'g' takes the first solution coming from the resolver
(if the user didn't choose one explicitly), and before the 0.8 series
the first solutions offered were notouriously "removal-happy".
In a system with linux-libc-dev = 4.5.2-1, with 4.5.3-1 as candidate,
and trying to install linux-libc-dev:i386 (candidate 4.5.3-1), aptitude
will mark linux-libc-dev:i386 for install and linux-libc-dev for
upgrade. If one decides to keep linux-libc-dev at its current version,
it conflicts with linux-libc-dev:i386, and when pressing 'g' the
solution is:
│ Some packages were broken and have been fixed: │
│ │
│Keep the following packages at their current version:│
│linux-libc-dev:i386 [Not Installed] │
If I had both linux-libc-dev and :i386 installed with 4.5.2-1, and an
upgrade for :i386 was available but not for the :amd64 one (a situation
analogous to the one presented here), the first solution of the resolver
nowadays would be also to "Keep the following packages at their current
version".
>Then in this new screen, for "linux-libc-dev:i386":
>
>linux-libc-dev:i386 will be automatically removed because of dependency errors:▒
>
>and no dependency errors are listed. Indeed, this is because aptitude
>was wrong when deciding to remove it. And I can type '+' on it to
>cancel the removal without any error.
After the remedial actions forcefully taken by the resolver,
linux-libc-dev was kept at "[3.14.13-2 (now, testing)]", so trying to
keep linux-libc-dev:i386 at 3.14.13-2 was OK, but only after keeping
linux-libc-dev at the same version (instead of upgrading all packages,
as originally requested).
linux-libc-dev:i386 has been proposed for removal uneccessarily, when
keeping linux-libc-dev at its current version would suffice. (This was
probably one of the solutions offered, although not the first).
2014-08-09 06:19 Daniel Hartwig:
>This is apparently due to aptitude's incomplete multiarch support.
>The program should be upgrading groups like this in lockstep, before
>the problem resolver gets involved.
>
>Will get that fixed for Jessie.
So my understanding of the problem is slightly different.
The root cause (multi-arch packages out of sync) is unsolvable by
aptitude, and the best thing that we can do is to attempt to upgrade
packages in lock-step (as it happens in recent versions), and give less
drastic solutions to conflicts as first choices (something addressed in
0.8).
So closing the bug as fixed with that version number.
Cheers.
--
Manuel A. Fernandez Montecelo <manuel.montezelo at gmail.com>
More information about the Aptitude-devel
mailing list