just for the record:

> > $ sudo apt-cache show python3
> > Package: python3
> > ....
> > Provides: python3-profiler
> > 
> > $ sudo apt-cache showpkg python3
> > ...
> > Provides:
> > 3.5.3-1 - python3-profiler:i386 (= ) python3:any (= 3.5.3-1) 
> > python3-profiler
> > (= ) python3-profiler:any (= )
> > 
> > I cant make sense of all those 'virtual' packages:
> > python3-profiler:i386 (= ) python3:any (= 3.5.3-1) python3-profiler (= )
> > python3-profiler:any (= )
> > 
> > The control file of python3_3.5.3-1_amd64.deb outputs only:
> > Provides: python3-profiler
> > 
> > Obviously those 'produced' Provides values declare sth related to
> > architectures.But i dont
> > understand the logic.
> 
> They are an implementation detail concerning Multi-Arch, the package is
> Multi-Arch: same.

python3 is M-A: allowed – so M-A: foreign via explicit opt-in. If
another package accepts any architecture of python3 to satisfy the
dependency it depends on "python3:any" while "python3" means the
architecture of the current dependency chain. That is so as this (and
a few other packages) carry two parts: An interpreter working with files
and a module interface loading architecture specific binary modules.
Look for "interpreter problem" if you are interested in details.


Back then I decided on how to implement M-A it seemed best to reuse
existing implementations via provides: All apt clients kept working by
"translating" Multi-Arch into the preexisting relationship structure
with some additional internal provides, conflicts and co sprinkled in.


I still thing that was a good idea, but the downside is that in debug
output (and showpkg is very close to debug output) they will appear and
initially be confusing – but after a while they make sense… I hope.


Best regards

David Kalnischkies

Attachment: signature.asc
Description: PGP signature

Reply via email to