Bug#832503: apt: foo:any dependency is not handled correctly when foo is not Multi-Arch: allowed
Package: apt
Version: 1.3~pre2
Severity: normal
User: devel@kali.org
Usertags: origin-kali
Hello dear APT maintainers,
I have a package dependency "firefox-esr:any | firefox:any | www-browser" in a
metapackage. Unfortunately firefox-esr is neither "Multi-Arch: foreign" nor
"Multi-Arch: allowed" (I filed #832501 to request this) and when I try to
install this meta-package it will not install firefox-esr at all, instead
it will pick a random web browser (thus considering www-browser and not
firefox-esr:any).
Given the lack of "Multi-Arch: allowed", it is expected that a foreign
firefox-esr cannot fulfill the dependency.
But firefox-esr:native should fulfill the "firefox-esr:any" dependency
and apt should install this package in response to the metapackage
installation request.
Discussing this on IRC lead to this:
09:56 <DonKult> again: a dependency "foo:any" can be satisfied by a package foo
only in two ways: a) foo is M-A: allowed. b) foo explicitly "Provides:
foo:any".
09:57 <buxy> DonKult: let's fix the spec?
10:01 <DonKult> you can find mails from me discussing different interpretations
for some things, but the discussion ended at DC15 with an agreement on the
interpretation as implemented by dpkg. I am not going to breach contracts.
If the Multi-Arch specification says otherwise, then we should probably
consider improving it to allow this case. Are you aware of cases
where allowing this would break something?
Given that the Multi-Arch annotation is not under the control of the package
specifying the dependency it would seem better to have a sane and tolerant
fallback when the target package has no Multi-Arch annotation instead of
refusing to satisfy the dependency even when when we have a native package
which is installable.
Ccing Guillem for his input. If we agree on that, then we should clone
that bug against dpkg as well.
Cheers,
-- System Information:
Debian Release: stretch/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (500, 'stable'), (500, 'oldstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.6.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=fr_FR.utf8, LC_CTYPE=fr_FR.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
Versions of packages apt depends on:
ii adduser 3.115
ii debian-archive-keyring 2014.3
ii gpgv 1.4.20-6
ii init-system-helpers 1.38
ii libapt-pkg5.0 1.3~pre2
ii libc6 2.23-1
ii libgcc1 1:6.1.1-9
ii libstdc++6 6.1.1-9
Versions of packages apt recommends:
ii gnupg 1.4.20-6
ii gnupg2 2.1.11-7
Versions of packages apt suggests:
ii apt-doc 1.3~pre2
ii aptitude 0.8.1-1
ii dpkg-dev 1.18.9
ii powermgmt-base 1.31+nmu1
ii python-apt 1.1.0~beta3
ii synaptic 0.83+b1
-- no debconf information
Reply to: