Không thể định vị gói libc6-dbg: i386 trong docker


13

Tôi đang cố gắng cài đặt libc6-dbg: i386 bên trong bộ chứa docker dựa trên Ubuntu vì tôi cần nó cho Valgrind, nhưng tôi không thể.

Đưa ra Dockerfile sau:

FROM ubuntu:14.04

MAINTAINER Me <xyz@example.com>

RUN apt-get update
RUN apt-get install libc6-dbg
RUN apt-get install libc6-dbg:i386

Chạy trên máy chủ 64 bit máy tính để bàn Ubuntu 14.04:

sudo docker build .

Tôi có:

Step 0 : FROM ubuntu:14.04
 ---> 5506de2b643b
Step 1 : MAINTAINER Me <xyz@example.com>
 ---> 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

Trên máy chủ, tôi có thể cài đặt libc6-dbg: i386, tại sao tôi không thể cài đặt nó trong bộ chứa docker?

Câu trả lời:


28

Tôi sẽ tự trả lời điều này.

Thông tin cần thiết để tìm ra điều này là tại https://wiki.debian.org/Multiarch/HOWTO .

Apt trong hình ảnh docker chính thức của docker và cả trong phusion / baseimage chỉ được cấu hình với sự hỗ trợ cho amd64. Đây là những gì nó nói với bạn nếu bạn hỏi:

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

Cách để khắc phục điều này là thêm kiến ​​trúc khác trước khi cập nhật apt-get :

# 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] 

Để hoàn thiện, đây là Dockerfile cuối cùng:

FROM ubuntu:14.04

MAINTAINER Me <xyz@example.com>

RUN dpkg --add-architecture i386
RUN apt-get update
RUN apt-get install libc6-dbg
RUN apt-get install libc6-dbg:i386

0

Hãy thử thêm dòng sau apt-get updatevào trong Dockerfile của bạn:

RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.