On Fri, Feb 18, 2011 at 12:31:18PM +0100, Raphael Hertzog wrote:
> I'd like to seek feedback about what kind of upgrades dpkg should support
> with multi-arch packages.
> dpkg treats foo:native and foo:all like the same package and it's thus
> possible to upgrade foo_1.0_all to foo_2.0_<native> and vice-versa.
> However if you have installed foo_1.0_<foreign>, you can't upgrade that
> package to foo_2.0_all (and vice-versa). Same goes for foo_1.0_<foreign1> to
> foo_1.0_<foreign2> (provided they are not multi-arch: same, otherwise they
> could coexist). You have to remove the conflicting package first and
> reinstall afterwards.
> In a similar vein, if you have several instances of the same package
> (Multi-Arch: same, say foo_1.0_<native> and foo_1.0_<foreign>), you can't
> install foo_2.0_all because it's in conflict with foo_1.0_<foreign>.
> Is this behaviour what we want?
I think that actually sounds entirely reasonable. If you have
foo_1.0_native, foo_1.0_foreign installed, and you try to install
foo_2.0_all, which package is it an upgrade of? I don't think it makes
sense from dpkg's POV to be a simultaneous upgrade of *both* packages. So
it's an upgrade of foo_1.0_native, and should be handled the same way as you
would handle an attempt to upgrade to foo_2.0_native without also upgrading
to foo_2.0_foreign.
Higher-level package managers should detect this and do the needful.
foo_1.0_foreign should be removed as part of the upgrade, solving the
conflict and allowing foo_2.0_all to be configured.
So yeah, that seems ok to me, but I guess you're not convinced or you
wouldn't have asked.

What other way do you see this working? Should
dpkg auto-remove multiarch packages when an upgrade to _all is requested?
That seems very inconsistent with dpkg's "do what I say" approach, IMHO.
Cheers,
--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
slangasek@ubuntu.com vorlon@debian.org