Sven
Sven

Reputation: 3

Using qemu Raspbian: installing libc6:i386 fails

this is my first post on this forum.

I am trying to get qemu running on my Raspberry Pi 3 with Raspbian stretch installed. My brothers DCP-350C scanner driver is only available precompiled on x86. I have added i386 arch with sudo dpkg --add-architecture i386 and installed qemu-user binfmt-support. No problems there.

But every time I try to install libc6:i386 I get an install error:

pi@raspberrypi:/etc/apt $ sudo apt-get install libc6:i386
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:
 libc6:i386 : Depends: libgcc1:i386 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
pi@raspberrypi:/etc/apt $ sudo apt-get install libgcc1:i386
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:
 debconf : PreDepends: perl-base (>= 5.20.1-3~) but it is not going to be installed
           Recommends: apt-utils (>= 0.5.1) but it is not going to be installed
           Recommends: debconf-i18n but it is not going to be installed
 dpkg : PreDepends: libbz2-1.0 but it is not going to be installed
        PreDepends: liblzma5 (>= 5.2.2) but it is not going to be installed
        PreDepends: zlib1g (>= 1:1.1.4) but it is not going to be installed
        Depends: tar (>= 1.28-1)
 libgcc1 : Breaks: libgcc1:i386 (!= 1:6.3.0-18+rpi1) but 1:6.3.0-18 is to be installed
 libgcc1:i386 : Depends: gcc-6-base:i386 (= 6.3.0-18) but it is not going to be installed
                Breaks: libgcc1 (!= 1:6.3.0-18) but 1:6.3.0-18+rpi1 is to be installed
 libselinux1 : Depends: libpcre3 but it is not going to be installed
 libx11-6 : Depends: libxcb1 (>= 1.11.1) but it is not going to be installed
 libxext6 : PreDepends: multiarch-support
 lxlock : Depends: light-locker but it is not going to be installed or
                   xscreensaver but it is not going to be installed or
                   gnome-screensaver but it is not going to be installed or
                   i3lock but it is not going to be installed or
                   suckless-tools but it is not going to be installed or
                   slim but it is not going to be installed
 systemd-sysv : PreDepends: systemd
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

I don't know how to fix it. I have tried all sorts of repositories, but this seems not to be a repository issue.

I have no more clue how to fix this.

I hope anybody can help.

Upvotes: 0

Views: 1934

Answers (1)

Peter Maydell
Peter Maydell

Reputation: 11383

That kind of error ("libgcc1:i386 Breaks: libgcc1 (!= 1:6.3.0-18) but 1:6.3.0-18+rpi1 is to be installed" and "libgcc1 : Breaks: libgcc1:i386 (!= 1:6.3.0-18+rpi1) but 1:6.3.0-18 is to be installed") is because multiarch support on Debian and Debian derivatives requires that all versions of a package for each architecture that you have installed must have exactly matching versions. So you can have libgcc1:i386 1:6.3.0-18 and libgcc1:armhf 1:6.3.0-18 installed together because the versions match, but not libgcc1:i386 1:6.3.0-18 and libgcc1:armhf 1:6.3.0-18+rpi1 (because the versions don't exactly match).

The problem here is that raspbian rebuilds packages, which is why they have the +rpi1 tag on the end of their version. So what you would need is either

  • a repository where the raspbian versions of packages have been built for i386 -- this may well not exist
  • or run pure upstream Debian rather than Raspbian -- which you likely don't want to swap to at this point
  • or rebuild all the packages for i386 yourself -- which is likely painful and easy to get wrong if you don't know what you're doing.

If it's any consolation I would be somewhat uncertain about whether QEMU could usefully handle emulating a hardware-specific piece of code like a scanner driver (which is probably a plugin to CUPS or other system software) anyway.

A quick google of the scanner model name brought up this webpage: http://support.brother.com/g/b/downloadlist.aspx?c=us_ot&lang=en&prod=dcp350c_all&os=128 which includes a download for source code for the scanner driver and CUPS wrapper driver. If I were you I would try the approach of building that natively for arm.

Upvotes: 1

Related Questions