Unable to locate package libc6-dbg:i386 in docker

19,467

I'll answer this myself.

The information needed for figuring this out is at https://wiki.debian.org/Multiarch/HOWTO.

Apt in the official docker ubuntu image and also in phusion/baseimage is configured only with support for the amd64. This is what it tells you if you ask:

# dpkg --print-architecture
amd64
# dpkg --print-foreign-architectures
<no output>

The way to fix this is to add another architecture before the apt-get update:

# dpkg --add-architecture i386
# apt-get update
<lots of lines>
# apt-get install libc6-dbg:i386
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  gcc-4.9-base:i386 libc6:i386 libgcc1:i386
Suggested packages:
  glibc-doc:i386 locales:i386
The following NEW packages will be installed:
  gcc-4.9-base:i386 libc6:i386 libc6-dbg:i386 libgcc1:i386
0 upgraded, 4 newly installed, 0 to remove and 21 not upgraded.
Need to get 7039 kB of archives.
After this operation, 26.4 MB of additional disk space will be used.
Do you want to continue? [Y/n] 

For completeness, here is the final Dockerfile:

FROM ubuntu:14.04

MAINTAINER Me <[email protected]>

RUN dpkg --add-architecture i386
RUN apt-get update
RUN apt-get install libc6-dbg
RUN apt-get install libc6-dbg:i386
Share:
19,467

Related videos on Youtube

martinhans
Author by

martinhans

Updated on September 18, 2022

Comments

  • martinhans
    martinhans over 1 year

    I am trying to install libc6-dbg:i386 inside a docker container based on Ubuntu because I need it for Valgrind, but I can't.

    Given the following Dockerfile:

    FROM ubuntu:14.04
    
    MAINTAINER Me <[email protected]>
    
    RUN apt-get update
    RUN apt-get install libc6-dbg
    RUN apt-get install libc6-dbg:i386
    

    Running on a Ubuntu 14.04 desktop 64 bit host:

    sudo docker build .
    

    I get:

    Step 0 : FROM ubuntu:14.04
     ---> 5506de2b643b
    Step 1 : MAINTAINER Me <[email protected]>
     ---> Using cache
     ---> b1792911b80d
    Step 2 : RUN apt-get update
     ---> Using cache
     ---> 5e3928c88aff
    Step 3 : RUN apt-get install libc6-dbg
     ---> Running in ebd51fcb278b
    Reading package lists...
    Building dependency tree...
    Reading state information...
    The following NEW packages will be installed:
      libc6-dbg
    0 upgraded, 1 newly installed, 0 to remove and 12 not upgraded.
    Need to get 3452 kB of archives.
    After this operation, 22.8 MB of additional disk space will be used.
    Get:1 http://archive.ubuntu.com/ubuntu/ trusty-updates/main libc6-dbg amd64 2.19-0ubuntu6.3 [3452 kB]
    debconf: unable to initialize frontend: Dialog
    debconf: (TERM is not set, so the dialog frontend is not usable.)
    debconf: falling back to frontend: Readline
    debconf: unable to initialize frontend: Readline
    debconf: (This frontend requires a controlling tty.)
    debconf: falling back to frontend: Teletype
    dpkg-preconfigure: unable to re-open stdin: 
    Fetched 3452 kB in 0s (5325 kB/s)
    Selecting previously unselected package libc6-dbg:amd64.
    (Reading database ... 11527 files and directories currently installed.)
    Preparing to unpack .../libc6-dbg_2.19-0ubuntu6.3_amd64.deb ...
    Unpacking libc6-dbg:amd64 (2.19-0ubuntu6.3) ...
    Setting up libc6-dbg:amd64 (2.19-0ubuntu6.3) ...
     ---> fe4bf0f008db
    Removing intermediate container ebd51fcb278b
    Step 4 : RUN apt-get install libc6-dbg:i386
     ---> Running in 460cab3c4631
    Reading package lists...
    Building dependency tree...
    Reading state information...
    E: Unable to locate package libc6-dbg
    2014/11/20 15:23:06 The command [/bin/sh -c apt-get install libc6-dbg:i386] returned a non-zero code: 100
    

    On the host I can install libc6-dbg:i386, why can't I install it inside the docker container?