[Bug 1185896] Re: apt makes wrong resolver choice when foreign arch repo included
David Kalnischkies
1185896 at bugs.launchpad.net
Mon Jun 10 11:31:59 UTC 2013
[@wookey: Your last attachment is the same as the first one – I at least
see nothing working in it ;) ]
mhh, I had a little stare-down contest with the resolver in the train now and it looks like the resolver is trying to satisfy the dependencies of crossbuild-essential-armhf via arm64 indicated by trying to install file:arm64 for libdebian-dpkgcross-perl:all.
Couldn't reproduce it in a selfbuilt testcase myself though, so I will try it later with a reliable internet connection.
The other interesting bit is that multiarch-support:arm64 isn't "providing" multiarch-support:amd64, which is actually kinda nice, but the reverse that :amd64 isn't providing :arm64 is wrong (as we don't have a distinction between "known to dpkg/configured in APT::Architectures" and "included in the cache via sources.list [arch=]" both is wrong).
Which leads me to wonder if multiarch-support is actually correct in being M-A:foreign. Given that it is supposed to ensure that the libc6 used is new enough it feels strange that at least in theory on i386 system I could install multiarch-support:armel and make the dependencies happy while the ld.so I am using is potentially still not new enough.
(A bit late/academic to wonder about that now, but yeah…)
--
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