Docker CrossCompile Debian 빌드 필수:armhf 충족되지 않은 종속성

Docker CrossCompile Debian 빌드 필수:armhf 충족되지 않은 종속성

VirtualBox 가상 머신을 Docker 이미지로 이동하려고 합니다. 우리는 VirtualBox를 사용하여 armhf 장치(BeagleBone 기반)의 소스 코드를 크로스 컴파일합니다.

문제가 발생했습니다. RUN apt-get install -y build-essential:armhf
전체 Docker 코드는 다음과 같습니다.

FROM debian:jessie

RUN apt-get update
RUN apt-get upgrade
RUN apt-get install -y build-essential module-assistant curl git cmake
RUN curl http://emdebian.org/tools/debian/emdebian-toolchain-archive.key | apt-key add -
RUN echo "deb http://emdebian.org/tools/debian jessie main" > /etc/apt/sources.list.d/crosstools.list
RUN dpkg --add-architecture armhf
RUN apt-get update
RUN apt-get install -y crossbuild-essential-armhf
RUN apt-get install -y curl:armhf
RUN apt-get install -y libcurl4-openssl-dev:armhf openssl:armhf 
RUN apt-get install -y build-essential:armhf
RUN apt-get install -y libssl-dev:armhf

docker build를 실행할 때 다음 오류가 발생합니다.

Step 12/13 : RUN apt-get install -y build-essential:armhf
 ---> Running in ca5a82d30cc7
Reading package lists...
Building dependency tree...
Reading state information...
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:
 build-essential:armhf : Depends: gcc:armhf (>= 4:4.9.1) but it is not going to be installed
                         Depends: g++:armhf (>= 4:4.9.1) but it is not going to be installed
                         Depends: make:armhf
E: Unable to correct problems, you have held broken packages.
The command '/bin/sh -c apt-get install -y build-essential:armhf' returned a non-zero code: 100

가상 머신의 bash 기록을 보면 동일해 보입니다. 내 Docker 코드에 어떤 문제가 있나요?

편집: -o Debug::pkgProblemResolver=yes 출력 사용:

  Starting pkgProblemResolver with broken count: 2
Starting 2 pkgProblemResolver with broken count: 2
Investigating (0) dpkg-dev [ amd64 ] < 1.17.27 > ( utils )
Broken dpkg-dev:amd64 Depends on make [ amd64 ] < 4.0-8.1 > ( devel )
  Considering make:amd64 1 as a solution to dpkg-dev:amd64 2
  Added make:amd64 to the remove list
Broken dpkg-dev:amd64 Depends on binutils [ amd64 ] < 2.25-5+deb8u1 > ( devel )
  Considering binutils:amd64 1 as a solution to dpkg-dev:amd64 2
  Added binutils:amd64 to the remove list
  Fixing dpkg-dev:amd64 via keep of make:amd64
  Fixing dpkg-dev:amd64 via keep of binutils:amd64
Investigating (0) binutils [ armhf ] < none -> 2.25-5+deb8u1 > ( devel )
Broken binutils:armhf Conflicts on binutils [ amd64 ] < 2.25-5+deb8u1 > ( devel )
  Considering binutils:amd64 1 as a solution to binutils:armhf 2
  Added binutils:amd64 to the remove list
  Fixing binutils:armhf via remove of binutils:amd64
Investigating (0) make [ amd64 ] < 4.0-8.1 > ( devel )
Broken make:amd64 Conflicts on make [ armhf ] < none -> 4.0-8.1 > ( devel )
  Considering make:armhf 0 as a solution to make:amd64 1
  Added make:armhf to the remove list
  Fixing make:amd64 via keep of make:armhf
Investigating (0) binutils-arm-linux-gnueabihf [ amd64 ] < 2.25-5 > ( devel )
Broken binutils-arm-linux-gnueabihf:amd64 Depends on binutils [ amd64 ] < 2.25-5+deb8u1 > ( devel )
  Considering binutils:amd64 1 as a solution to binutils-arm-linux-gnueabihf:amd64 1
  Removing binutils-arm-linux-gnueabihf:amd64 rather than change binutils:amd64
Investigating (1) build-essential [ armhf ] < none -> 11.7 > ( devel )
Broken build-essential:armhf Depends on make [ armhf ] < none -> 4.0-8.1 > ( devel )
  Considering make:armhf 0 as a solution to build-essential:armhf 9999
  Re-Instated make:armhf
Investigating (1) dpkg-dev [ amd64 ] < 1.17.27 > ( utils )
Broken dpkg-dev:amd64 Depends on binutils [ amd64 ] < 2.25-5+deb8u1 > ( devel )
  Considering binutils:amd64 1 as a solution to dpkg-dev:amd64 2
  Added binutils:amd64 to the remove list
  Fixing dpkg-dev:amd64 via keep of binutils:amd64
Investigating (1) gcc-4.9-arm-linux-gnueabihf [ amd64 ] < 4.9.2-10 > ( devel )
Broken gcc-4.9-arm-linux-gnueabihf:amd64 Depends on binutils-arm-linux-gnueabihf [ amd64 ] < 2.25-5 > ( devel ) (>= 2.25)
  Considering binutils-arm-linux-gnueabihf:amd64 1 as a solution to gcc-4.9-arm-linux-gnueabihf:amd64 2
  Added binutils-arm-linux-gnueabihf:amd64 to the remove list
  Fixing gcc-4.9-arm-linux-gnueabihf:amd64 via keep of binutils-arm-linux-gnueabihf:amd64
Investigating (1) binutils [ armhf ] < none -> 2.25-5+deb8u1 > ( devel )
Broken binutils:armhf Conflicts on binutils [ amd64 ] < 2.25-5+deb8u1 > ( devel )
  Considering binutils:amd64 1 as a solution to binutils:armhf 2
  Added binutils:amd64 to the remove list
  Fixing binutils:armhf via remove of binutils:amd64
Investigating (1) make [ amd64 ] < 4.0-8.1 > ( devel )
Broken make:amd64 Conflicts on make [ armhf ] < none -> 4.0-8.1 > ( devel )
  Considering make:armhf 0 as a solution to make:amd64 1
  Added make:armhf to the remove list
  Fixing make:amd64 via keep of make:armhf
Investigating (1) binutils-arm-linux-gnueabihf [ amd64 ] < 2.25-5 > ( devel )
Broken binutils-arm-linux-gnueabihf:amd64 Depends on binutils [ amd64 ] < 2.25-5+deb8u1 > ( devel )
  Considering binutils:amd64 1 as a solution to binutils-arm-linux-gnueabihf:amd64 1
  Removing binutils-arm-linux-gnueabihf:amd64 rather than change binutils:amd64
Investigating (2) build-essential [ armhf ] < none -> 11.7 > ( devel )
Broken build-essential:armhf Depends on make [ armhf ] < none -> 4.0-8.1 > ( devel )
  Considering make:armhf 0 as a solution to build-essential:armhf 9999
  Considering make-guile:armhf -1 as a solution to build-essential:armhf 9999
  Re-Instated libgc1c2:armhf
  Re-Instated libltdl7:armhf
  Re-Instated libtinfo5:armhf
  Re-Instated libncurses5:armhf
  Re-Instated libreadline6:armhf
  Re-Instated libunistring0:armhf
  Re-Instated guile-2.0-libs:armhf
  Re-Instated make-guile:armhf
Investigating (2) dpkg-dev [ amd64 ] < 1.17.27 > ( utils )
Broken dpkg-dev:amd64 Depends on binutils [ amd64 ] < 2.25-5+deb8u1 > ( devel )
  Considering binutils:amd64 1 as a solution to dpkg-dev:amd64 2
  Added binutils:amd64 to the remove list
  Fixing dpkg-dev:amd64 via keep of binutils:amd64
Investigating (2) gcc-4.9-arm-linux-gnueabihf [ amd64 ] < 4.9.2-10 > ( devel )
Broken gcc-4.9-arm-linux-gnueabihf:amd64 Depends on binutils-arm-linux-gnueabihf [ amd64 ] < 2.25-5 > ( devel ) (>= 2.25)
  Considering binutils-arm-linux-gnueabihf:amd64 1 as a solution to gcc-4.9-arm-linux-gnueabihf:amd64 2
  Added binutils-arm-linux-gnueabihf:amd64 to the remove list
  Fixing gcc-4.9-arm-linux-gnueabihf:amd64 via keep of binutils-arm-linux-gnueabihf:amd64
Investigating (2) binutils [ armhf ] < none -> 2.25-5+deb8u1 > ( devel )
Broken binutils:armhf Conflicts on binutils [ amd64 ] < 2.25-5+deb8u1 > ( devel )
  Considering binutils:amd64 2 as a solution to binutils:armhf 2
  Holding Back binutils:armhf rather than change binutils:amd64
Investigating (2) make [ amd64 ] < 4.0-8.1 > ( devel )
Broken make:amd64 Conflicts on make-guile [ armhf ] < none -> 4.0-8.1 > ( devel )
  Considering make-guile:armhf -1 as a solution to make:amd64 1
  Added make-guile:armhf to the remove list
  Fixing make:amd64 via keep of make-guile:armhf
Investigating (3) build-essential [ armhf ] < none -> 11.7 > ( devel )
Broken build-essential:armhf Depends on make [ armhf ] < none -> 4.0-8.1 > ( devel )
  Considering make:armhf 0 as a solution to build-essential:armhf 9999
  Considering make-guile:armhf 1 as a solution to build-essential:armhf 9999
Investigating (3) gcc-4.9 [ armhf ] < none -> 4.9.2-10 > ( devel )
Broken gcc-4.9:armhf Depends on binutils [ armhf ] < none -> 2.25-5+deb8u1 > ( devel ) (>= 2.25)
  Considering binutils:armhf 2 as a solution to gcc-4.9:armhf 3
  Holding Back gcc-4.9:armhf rather than change binutils:armhf
Investigating (3) gcc [ armhf ] < none -> 4:4.9.2-2 > ( devel )
Broken gcc:armhf Depends on gcc-4.9 [ armhf ] < none -> 4.9.2-10 > ( devel ) (>= 4.9.2-1~)
  Considering gcc-4.9:armhf 3 as a solution to gcc:armhf 1
  Holding Back gcc:armhf rather than change gcc-4.9:armhf
Investigating (3) g++ [ armhf ] < none -> 4:4.9.2-2 > ( devel )
Broken g++:armhf Depends on gcc [ armhf ] < none -> 4:4.9.2-2 > ( devel ) (>= 4:4.9.2-2)
  Considering gcc:armhf 1 as a solution to g++:armhf 0
  Holding Back g++:armhf rather than change gcc:armhf
Investigating (3) g++-4.9 [ armhf ] < none -> 4.9.2-10 > ( devel )
Broken g++-4.9:armhf Depends on gcc-4.9 [ armhf ] < none -> 4.9.2-10 > ( devel ) (= 4.9.2-10)
  Considering gcc-4.9:armhf 3 as a solution to g++-4.9:armhf 0
  Holding Back g++-4.9:armhf rather than change gcc-4.9:armhf
Investigating (4) build-essential [ armhf ] < none -> 11.7 > ( devel )
Broken build-essential:armhf Depends on gcc [ armhf ] < none -> 4:4.9.2-2 > ( devel ) (>= 4:4.9.1)
  Considering gcc:armhf 1 as a solution to build-essential:armhf 9999
  Re-Instated binutils:armhf
  Re-Instated gcc-4.9:armhf
  Re-Instated gcc:armhf
Broken build-essential:armhf Depends on g++ [ armhf ] < none -> 4:4.9.2-2 > ( devel ) (>= 4:4.9.1)
  Considering g++:armhf 0 as a solution to build-essential:armhf 9999
  Re-Instated g++-4.9:armhf
  Re-Instated g++:armhf
Broken build-essential:armhf Depends on make [ armhf ] < none -> 4.0-8.1 > ( devel )
  Considering make:armhf 0 as a solution to build-essential:armhf 9999
  Considering make-guile:armhf 1 as a solution to build-essential:armhf 9999
Investigating (4) binutils [ armhf ] < none -> 2.25-5+deb8u1 > ( devel )
Broken binutils:armhf Conflicts on binutils [ amd64 ] < 2.25-5+deb8u1 > ( devel )
  Considering binutils:amd64 2 as a solution to binutils:armhf 2
  Holding Back binutils:armhf rather than change binutils:amd64
Investigating (5) build-essential [ armhf ] < none -> 11.7 > ( devel )
Broken build-essential:armhf Depends on make [ armhf ] < none -> 4.0-8.1 > ( devel )
  Considering make:armhf 0 as a solution to build-essential:armhf 9999
  Considering make-guile:armhf 1 as a solution to build-essential:armhf 9999
Investigating (5) gcc-4.9 [ armhf ] < none -> 4.9.2-10 > ( devel )
Broken gcc-4.9:armhf Depends on binutils [ armhf ] < none -> 2.25-5+deb8u1 > ( devel ) (>= 2.25)
  Considering binutils:armhf 2 as a solution to gcc-4.9:armhf 3
  Holding Back gcc-4.9:armhf rather than change binutils:armhf
Investigating (5) gcc [ armhf ] < none -> 4:4.9.2-2 > ( devel )
Broken gcc:armhf Depends on gcc-4.9 [ armhf ] < none -> 4.9.2-10 > ( devel ) (>= 4.9.2-1~)
  Considering gcc-4.9:armhf 3 as a solution to gcc:armhf 1
  Holding Back gcc:armhf rather than change gcc-4.9:armhf
Investigating (5) g++ [ armhf ] < none -> 4:4.9.2-2 > ( devel )
Broken g++:armhf Depends on gcc [ armhf ] < none -> 4:4.9.2-2 > ( devel ) (>= 4:4.9.2-2)
  Considering gcc:armhf 1 as a solution to g++:armhf 0
  Holding Back g++:armhf rather than change gcc:armhf
Investigating (5) g++-4.9 [ armhf ] < none -> 4.9.2-10 > ( devel )
Broken g++-4.9:armhf Depends on gcc-4.9 [ armhf ] < none -> 4.9.2-10 > ( devel ) (= 4.9.2-10)
  Considering gcc-4.9:armhf 3 as a solution to g++-4.9:armhf 0
  Holding Back g++-4.9:armhf rather than change gcc-4.9:armhf
Investigating (6) build-essential [ armhf ] < none -> 11.7 > ( devel )
Broken build-essential:armhf Depends on gcc [ armhf ] < none -> 4:4.9.2-2 > ( devel ) (>= 4:4.9.1)
  Considering gcc:armhf 1 as a solution to build-essential:armhf 9999
Broken build-essential:armhf Depends on g++ [ armhf ] < none -> 4:4.9.2-2 > ( devel ) (>= 4:4.9.1)
  Considering g++:armhf 0 as a solution to build-essential:armhf 9999
Broken build-essential:armhf Depends on make [ armhf ] < none -> 4.0-8.1 > ( devel )
  Considering make:armhf 0 as a solution to build-essential:armhf 9999
  Considering make-guile:armhf 1 as a solution to build-essential:armhf 9999
Done

답변1

문제를 일으키는 줄은 다음과 같습니다.

RUN apt-get install -y build-essential:armhf

크로스 컴파일이 필요하지 않습니다 build-essential:armhf. 삭제해야 합니다. docker build그러면 문제 없이 컨테이너를 빌드할 수 있습니다.

답변2

일부 종속 항목을 설치할 수 없는 것 같습니다. 그것이 정확히 무엇인지 말하기는 어렵습니다.

안타깝게도 apt해결할 수 없는 문제가 발생한 경우 의 출력은 별로 도움이 되지 않습니다. 그러나 -o Debug::pkgProblemResolver=yesapt 명령줄에 지정하여 더 많은 출력을 제공하도록 속일 수 있습니다 . 이를 통해 수행하려는 작업에 대한 자세한 정보를 제공하고 문제를 해결할 수 있기를 바랍니다.

그래도 문제가 해결되지 않으면 이 옵션으로 apt를 실행하고 출력을 게시하세요.

관련 정보