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

dpkg behavior while changing a foreign package from arch:any to arch:all (and v.v.)



Hi list of dpkg-glory,


Sometimes packages change their arch from arch:any to arch:all (or v.v.).
This used to be no problem for packages where any was the native arch and
this is still the case, but if it is a foreign arch dpkg refuses to install
the new arch:all version with the following error message:
(assuming we are on amd64 and pkg-a:i386 was installed)

dpkg: error processing pkg-a_2_all.deb (--install):
 pkg-a 2 (Multi-Arch: no) is not co-installable with pkg-a:i386 1 (Multi-Arch:
no) which is currently installed

If we flip from arch:all to arch:any the error message is similar:

 pkg-a:i386 3 (Multi-Arch: no) is not co-installable with pkg-a:all 2 (Multi-
Arch: no) which is currently installed

(in the first message the :all is omitted from the error message and in
 the second it is present, so you might want to make that consistent)

Now, pkg-a:all 2 is not really co-installable with pkg-a:amd64 1 either,
but dpkg happily applies the change in such a context as an "upgrade".


Attached is a small script showing the issue. It's basically an enormously
stripped down version of an APT testcase in case you wonder how I was hit
by the bug (the real test works with an apt configured to have i386 as native,
while my machine on which i run this is in reality amd64, creating something
similar to a cross-grade situation.)


I am not sure through if this is really a bug in dpkg, given that arch:all is
to be interpreted as arch:native in multiarch, so on an amd64 system a
flip from arch:amd64 to arch:all is not really a flip (and therefore works)
while arch:i386 to arch:all is not (and therefore doesn't work).
So this might be very well the intended behavior and not a bug.

It just has interesting consequences for cross-grades and similar cases
in which apt has a different native architecture than dpkg and
it is hard to solve on APT side as it requires in extreme cases that in the
middle of an upgrade the installation actions and there sequence must be
recalculated as dpkg has changed it's architecture in the meantime…


Somehow I get the impression it would be good to have an option in dpkg
to tell dpkg what it should consider as "native" architecture similar to
APT::Architecture to easily solve these kind of communication problems.


Best regards

David Kalnischkies

P.S.: Yes, this was started as a bugreport, but half way though i figured
that's a bit too esoteric and with too many question marks to deserve a #.

Attachment: dpkg-foreign-pkg-changes-arch.sh
Description: Bourne shell script


Reply to: