#762073 libc6: libc6 declares 'Multi-Arch: same' but is not coinstallable on some arches

Package:
src:glibc
Source:
glibc
Submitter:
Ben Longbons
Date:
2020-11-24 11:03:05 UTC
Severity:
normal
Tags:
#762073#5
Date:
2014-09-18 06:55:01 UTC
From:
To:
Dear Maintainer,

While testing cross toolchains [1], dpkg bailed out when trying to
overwrite a shared file with different contents.

Particularly, /lib/ld.so.1 is different on powerpc, mips, and mipsel.
I only checked arches listed under 'Foreign Architectures' below;
upstream has list at https://sourceware.org/glibc/wiki/ABIList

Since ld.so is the single most important file on a system, it is hard-coded
in all existing binaries, but at least the conflict needs to be declared.

(Theoretically, Debian doesn't officially need to support binaries that
don't come from .deb packages or Debian-provided gcc, so it might be
possible to remove the conflict in the long term. Practically, it would
be dangerous to change it on native arches, but sufficient packaging magic
can ensure that users who don't opt in never see the difference.)

#762073#10
Date:
2014-09-18 17:18:49 UTC
From:
To:
This is a known problem, but there is no way to define cross-architecture
conflicts with the current dependencies system, and the conflicts/provides
doesn't work either as long as we keep providing biarch or triarch
packages. This bug is therefore not going to be fixed until a technical
solution is found.

#762073#23
Date:
2014-09-18 22:31:33 UTC
From:
To:
* split out ld.so into a separate debian package whose name depends on
the actual path
* mark that package Multi-Arch: none instead of Multi-Arch: same
* specify appropriate depends/conflicts/replaces/whatever
* Be VERY, VERY, careful that the symlink exists at all times during
the upgrade, no matter what the unpacked/installed status is of libc6
and the new package?

That way:
* libc6:amd64 will depend on
libc-ld-symlink-lib64-ld-linux-x86-64-so-2 (which must be from the
same arch. i.e. amd64)
* libc6:i386 will depend on libc-ld-symlink-lib-ld-linux-so-2 (which
must be from the same arch, i.e. i386)
* libc6:powerpc and libc6:mips will both depend on
libc-ld-symlink-lib-ld-so-1 (which must be from the proper arch, and
which automatically conflicts with the same package from another arch)
* People with special needs for cross-building can create an empty
Arch: all package and always pass --dynamic-linker=<multiarch path to
the linker> to ensure that we can run testsuites.

(I already tried using dpkg-divert to move the file out of the way,
but you can only do one diversion, so install at most two packages.)

#762073#28
Date:
2014-09-18 23:03:19 UTC
From:
To:
That's not something possible, we don't want to break systems.