[Bug 1185896] Re: apt makes wrong resolver choice when foreign arch repo included

Steve Langasek steve.langasek at canonical.com
Tue Sep 3 19:28:26 UTC 2013


> Which leads me to wonder if multiarch-support is actually correct in
being M-A:foreign.

It is, though the reason isn't altogether obvious.  The reason it was
made M-A: foreign was to break what was otherwise a dependency loop for
adding foreign architectures: libc6 Depends: libgcc1 Pre-Depends:
multiarch-support Depends: libc6.  Since the whole purpose of multiarch-
support was to ensure that libraries for your primary arch were not
disappeared out from underneath the linker during the transition to
multiarch, we don't care about multiarch-support for any except the
primary architecture... you can't possibly install the foreign-arch
multiarch-support package *before* transitioning to multiarch, and if
you do it *afterwards* it no longer matters.

Indeed, now that the transition is complete (since wheezy has released
with multiarch-support), we could update debhelper to no longer add the
multiarch-support Pre-Depends in unstable.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to apt in Ubuntu.
https://bugs.launchpad.net/bugs/1185896

Title:
  apt makes wrong resolver choice when foreign arch repo included

Status in “apt” package in Ubuntu:
  New

Bug description:
  In a fresh raring chroot adding foreign-arch armhf then apt-get installing crossbuild-essential-armhf works fine.
  But if a repo arch-qualified for another arch (arm64) is added, and apt-get update run, installing crossbuild-essential-armhf now fails.

  The reason for this is not clear. Here is a summary of what I've found so far.
  apt-get install crossbuild-essential-armhf
    crossbuild-essential-armhf : Depends: dpkg-cross but it is not going to be installed
  apt-get  install dpkg-cross
    dpkg-cross : Depends: libdebian-dpkgcross-perl (= 2.6.9ubuntu2) but it is not going to be installed
  apt-get  install libdebian-dpkgcross-perl 
    works, but tries to remove: libidn11 libssl1.0.0 libudev0 multiarch-support wget
  (and replace multiarch-support:amd64 with multiarch-support:armhf, which breaks things)

  doing apt-get install crossbuild-essential-armhf  libdebian-dpkgcross-
  perl multiarch-support:amd64 gets apt to do the right thing.

  So the question is why is apt prefering the solution of not installing
  crossbuild-essential-armhf over the correct solution of installing
  crossbuild-essential-armhf  libdebian-dpkgcross-perl multiarch-
  support:amd64

  I did 
  apt-get -oDebug::pkgProblemResolver=1 install crossbuild-essential-armhf
  and got the attached apt-debug file

  I've also attached a script log of the session demonstrating that
  crossbuild-essential-armhf installs as expected unti l the extra arm64
  repo is made available

  I think this can be reproduced by doing
  sbuild-createchroot for raring on amd64 box
  adding this repo to apt config:
  deb [arch=arm64] http://people.debian.org/~wookey/bootstrap/ubunturepo/ raring-bootstrap main universe
  deb-src http://people.debian.org/~wookey/bootstrap/ubunturepo/ raring-bootstrap main universe

  and doing the above tests, as documented in the script log attached

  the problem seems to revolve around apt starting by considering
  multiarch-support:arm64

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1185896/+subscriptions




More information about the foundations-bugs mailing list