Hi Phil, sorry for the late answer. At least I think I found something:
On 06.04.19 16:17, Phil Morrell wrote: > Firstly, to avoid an XY problem, my aim as the play.it package > maintainer is to help upstream generate .debs with the correct > dependency on wine for Debian, Ubuntu, Mint etc.: > https://framagit.org/vv221/play.it/merge_requests/391/diffs > > Now, the weird issue I'm having is that `apt install wine:amd64` > behaves as expected, but `Depends: wine:amd64` pulls in -development > instead: https://paste.debian.net/1075727/ > > Now I know that wine-development Provides wine:amd64 which is why > it's a candidate, but why would the Provides be selected over the > genuine package and why not consistently between cli and Depends? > > Thanks for any help you can give and/or direction for what package > to file this as a bug, since I'm guessing it's not actually wine > specific. -- Phil Morrell The package "wine" itself is architecture "all". This is a Debian specific (kind of) architecture for packages with identical content across all architectures. So the "wine" package exists only once, there are no separate amd64 or i386 wine packages in our packaging. You don't gain anything by specifying the architecture *here*. And even if there was some package management tool available which uses your "wine:amd64" to recognize your wish for amd64, I don't think that this can be generally assumed. I'm quite sure there's no official documentation in Debian for that. Generally for arch all packages I'd expect that tools try the native architecture first. But not sure if this is mandated. You may check https://wiki.debian.org/Multiarch https://wiki.ubuntu.com/MultiarchSpec for more details. Here is what I think what happened in your example: By specifying "wine:amd64" you request a package that doesn't exist, so it is not "the genuine package". So apt (at least in your "Depends" case) is looking for any package which provides wine. I'm not sure, how exactly the candidate is chosen, but in this process "Look for best candidate which provides wine:amd64" the package wine is just one candidate amongst others. I tested echo 'Depends: wine:all' | equivs-build - and that results in "wine" being chosen. If you still want to investigate the inconsistencies between cli and Depends the "apt" maintainers might help. But besides the inconsistency (if it isn't documented) I don't think it's a bug. Generally just do a "apt install wine". If you require explicit 64- or 32-bit support, you might do "apt install wine wine64" or "apt install wine wine32" (after adding the foreign arch). But getting this AND alternatives like our wine-development or the winehq packages 100% right, might indeed be tricky. I suggest to start with: Depends: wine | wine-development | [other metapackages] wine64 | wine64-development | [other arch-specific packages ] I might take a look at your stuff another time, if help is needed (no promise, especially not about timing). Greets jre
