[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Why does 'Depends: wine:amd64' resolve to wine-development?



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


Reply to: