Debian – Why does installing a libc6 for a different arch not work for armhf

aptarmcross-compilationdebian

I am trying to get cross compilation working, on a 64 bit system that already has i386 enabled:

$ dpkg --print-architecture
amd64
$ dpkg --print-foreign-architectures
i386
armhf

Only jessie repositories are enabled:

$ apt-cache policy libc6:armhf
libc6:armhf:
  Installed: (none)
  Candidate: 2.19-18+deb8u1
  Version table:
     2.19-18+deb8u1 0
        700 http://http.debian.net/debian/ jessie/main armhf Packages

However, I'm getting a strange conflict I cannot decipher ("libc6:armhf : Breaks: libc6 (!= 2.19-18+deb8u1)"), the full apt-get output is found below.

The i386 libc is living peacefully on this system, but the armhf version (and armel for this matter) fails. What do I make of this apt-get error and how do I fix it?

$ apt-get install libc6:armhf
Reading package lists… Done
Building dependency tree
Reading state information… Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 init : PreDepends: systemd-sysv but it is not going to be installed or
                    sysvinit-core but it is not going to be installed or
                    upstart
 libc6 : Breaks: libc6:armhf (!= 2.19-19) but 2.19-18+deb8u1 is to be installed
 libc6:armhf : Breaks: libc6 (!= 2.19-18+deb8u1) but 2.19-19 is to be installed
 libcurl3-gnutls : Depends: libgnutls-deb0-28 (>= 3.3.0) but it is not going to be installed
                   Depends: libldap-2.4-2 (>= 2.4.7) but it is not going to be installed
                   Depends: librtmp1 (>= 2.4+20131018.git79459a2-3~) but it is not going to be installed
                   Depends: libssh2-1 (>= 1.2.6) but it is not going to be installed
                   Recommends: ca-certificates but it is not going to be installed
 libqt5core5a : Depends: libglib2.0-0 (>= 2.22.0) but it is not going to be installed
                Depends: libicu52 (>= 52~m1-1~) but it is not going to be installed
 libqt5gui5 : Depends: fontconfig
              Depends: libegl1-mesa (>= 7.8.1) but it is not going to be installed or
                       libegl1-x11
              Depends: libfontconfig1 (>= 2.11) but it is not going to be installed
              Depends: libgbm1 (>= 8.1~0) but it is not going to be installed
              Depends: libgl1-mesa-glx but it is not going to be installed or
                       libgl1
              Depends: libglib2.0-0 (>= 2.12.0) but it is not going to be installed
              Depends: libgtk2.0-0 (>= 2.24.0) but it is not going to be installed
              Depends: libharfbuzz0b (>= 0.9.11) but it is not going to be installed
              Depends: libice6 (>= 1:1.0.0) but it is not going to be installed
              Depends: libpango-1.0-0 (>= 1.14.0) but it is not going to be installed
              Depends: libsm6 but it is not going to be installed
              Depends: libx11-6 but it is not going to be installed
              Depends: libx11-xcb1 but it is not going to be installed
              Depends: libxcb-glx0 but it is not going to be installed
              Depends: libxcb-icccm4 (>= 0.4.1) but it is not going to be installed
              Depends: libxcb-image0 (>= 0.2.1) but it is not going to be installed
              Depends: libxcb-keysyms1 (>= 0.4.0) but it is not going to be installed
              Depends: libxcb-randr0 (>= 1.3) but it is not going to be installed
              Depends: libxcb-render-util0 but it is not going to be installed
              Depends: libxcb-render0 but it is not going to be installed
              Depends: libxcb-shape0 but it is not going to be installed
              Depends: libxcb-shm0 but it is not going to be installed
              Depends: libxcb-sync1 but it is not going to be installed
              Depends: libxcb-xfixes0 but it is not going to be installed
              Depends: libxcb-xkb1 but it is not going to be installed
              Depends: libxcb1 but it is not going to be installed
              Depends: libxi6 (>= 2:1.2.99.4) but it is not going to be installed
              Depends: libxkbcommon-x11-0 (>= 0.4.0) but it is not going to be installed
              Depends: libxrender1 but it is not going to be installed
 libqt5widgets5 : Depends: libglib2.0-0 (>= 2.12.0) but it is not going to be installed
                  Depends: libx11-6 but it is not going to be installed
 libssl1.0.0 : Depends: debconf (>= 0.5) but it is not going to be installed or
                        debconf-2.0
 live-config-sysvinit : Depends: sysvinit-core but it is not going to be installed or
                                 sysvinit (< 2.88dsf-44) but it is not going to be installed
 nginx-common : Depends: init-system-helpers (>= 1.18~) but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Best Answer

libc6 : Breaks: libc6:armhf (!= 2.19-19) but 2.19-18+deb8u1 is to be installed
libc6:armhf : Breaks: libc6 (!= 2.19-18+deb8u1) but 2.19-19 is to be installed

One of the rules of Debian multiarch is that versions must match exactly across architectures. Debian jessie has version 2.19-18+deb8u1 but somehow you have ended up with 2.19-19 installed for amd64 (and presumably i386).

How your system got into this state in the first place I do not know. Maybe at some point you or a previous admin changed the sources.list to testing and then changed it back to jessie.

Downloading 2.19-19 for armhf from snapshot.debian.org and installing it manually with dpkg may be a solution.

http://snapshot.debian.org/archive/debian/20150710T034220Z/pool/main/g/glibc/libc6_2.19-19_armhf.deb

Related Question