programing

도커: apt-utils 설치 문제 발생

newstyles 2023. 7. 28. 21:53

도커: apt-utils 설치 문제 발생

설치하려고 합니다.apt-utils도커에 있는 이유는 내가 막 했을 때.apt-get update오류가 발생했습니다.debconf: delaying package configuration, since apt-utils is not installed그래서 설치할 라인을 추가했습니다.apt-utils(와 함께)curl):

RUN apt-get update && apt-get install -y apt-utils && apt-get install -y curl

하지만 여전히 오류가 발생하여 제 명령이 제대로 작동하지 않았다고 생각하게 됩니다.아래는 제가 이미지를 구축하려고 할 때 출력한 것입니다.

Step 5/12 : RUN apt-get update && apt-get install -y apt-utils && apt-get install -y curl
 ---> Running in 6e6565ff01bd
Get:1 http://security.debian.org jessie/updates InRelease [94.4 kB]
Ign http://deb.debian.org jessie InRelease
Get:2 http://deb.debian.org jessie-updates InRelease [145 kB]
Get:3 http://deb.debian.org jessie Release.gpg [2420 B]
Get:4 http://deb.debian.org jessie Release [148 kB]
Get:5 http://security.debian.org jessie/updates/main amd64 Packages [624 kB]
Get:6 http://deb.debian.org jessie-updates/main amd64 Packages [23.0 kB]
Get:7 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
Fetched 10.1 MB in 6s (1541 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following extra packages will be installed:
  libapt-inst1.5
The following NEW packages will be installed:
  apt-utils libapt-inst1.5
0 upgraded, 2 newly installed, 0 to remove and 24 not upgraded.
Need to get 537 kB of archives.
After this operation, 1333 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian/ jessie/main libapt-inst1.5 amd64 1.0.9.8.4 [169 kB]
Get:2 http://deb.debian.org/debian/ jessie/main apt-utils amd64 1.0.9.8.4 [368 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 537 kB in 0s (557 kB/s)
Selecting previously unselected package libapt-inst1.5:amd64.
(Reading database ... 21676 files and directories currently installed.)
Preparing to unpack .../libapt-inst1.5_1.0.9.8.4_amd64.deb ...
Unpacking libapt-inst1.5:amd64 (1.0.9.8.4) ...
Selecting previously unselected package apt-utils.
Preparing to unpack .../apt-utils_1.0.9.8.4_amd64.deb ...
Unpacking apt-utils (1.0.9.8.4) ...
Setting up libapt-inst1.5:amd64 (1.0.9.8.4) ...
Setting up apt-utils (1.0.9.8.4) ...
Processing triggers for libc-bin (2.19-18+deb8u10) ...
Reading package lists...
Building dependency tree...
Reading state information...
curl is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 24 not upgraded.
Removing intermediate container 6e6565ff01bd
 ---> f65e29c6a6b9
Step 6/12 : RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
 ---> Running in f5764ba56103
Detected operating system as debian/8.
Checking for curl...
Detected curl...
Checking for gpg...
Detected gpg...
Running apt-get update... done.
Installing debian-archive-keyring which is needed for installing
apt-transport-https on many Debian systems.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/github_git-lfs.list...done.
Importing packagecloud gpg key... done.
Running apt-get update... done.

The repository is setup! You can now install packages.
Removing intermediate container f5764ba56103
 ---> a4e64687ab73

무엇이 원인이며 어떻게 해결할 수 있습니까?

이것은 실제로 오류가 아니며 무시해도 무방합니다.많은 컨테이너 이미지를 구축했습니다.apt-utils이 경고 메시지와 관계없이 모든 패키지 설치가 완료되고 정상적으로 작동합니다.

어쨌든, 당신이 원한다면,apt-utils설치합니다.경고를 한 번 준 다음 다음 다음 호출을 위해 사라집니다.apt-get(자신의 로그에서 볼 수 있듯이,curl해당 메시지 없이 설치됨).

설치하는 경우 참고apt-utils이제 설치 관리자가 대화형 구성을 실행할 수 있으며 이를 시도했다가 실패하기 때문에 다른 경고가 표시됩니다.이러한 구성을 억제하고 기본값과 대화형 구성을 가진 패키지를 사용하려면 다음을 실행합니다.apt-get다음과 같이:DEBIAN_FRONTEND=noninteractive apt-get install -y pkgs....

인터넷을 통해 검색한 후, 나는 언급할 가치가 있는 몇 가지 대안을 찾았습니다, 매번 그것을 넣는 것 대신에.DEBIAN_FRONTEND=noninteractive앞에apt-get install -y {your-pkgs}:

대안 1: ARG DEBIAN_FRONTEND= 비대화형

중요:피드백에 따르면 대안 2와 3은 대부분에게 효과가 있는 반면 대안 1은 효과가 없습니다.이러한 이유로 이 대안은 삭제되지만 추적 가능성과 완전성을 위해 유지됩니다.

ARG 명령어는 사용자가 빌드 시 --build-arg = 플래그를 사용하여 docker build 명령어로 Builder에 전달할 수 있는 변수를 정의합니다. (참조: [6])

솔루션 특성:

  • ARG지침은 빌드 중에만 설정됩니다.
  • '비인터랙티브' 옵션은 빌드 시간에만 기본값으로 설정됩니다.
  • 인수이므로 이 인수에 대한 다른 값을 예를 들어 전달하여 변경할 수 있습니다.docker build --build-arg DEBIAN_FRONTEND=newt

예:

ARG DEBIAN_FRONTEND=noninteractive
...
RUN apt-get -yq install {your-pkgs}

대안 2: 즉시 사용

이것은 레오 K의 해결책입니다.

솔루션 특성:

  • 필요한 위치에 설정할 수 있습니다.그래서 좋은 미세한 해결책입니다.
  • 특정 명령에서 다른 값으로 설정할 수 있으므로 전역적으로 설정되지 않습니다.
  • 는 범는입니다.RUN다른 지시사항에 영향을 미치지 않을 것입니다.

예:

RUN DEBIAN_FRONTEND=noninteractive apt-get -yq install {your-pkgs}

대안 3: ENV DEBIAN_FRONTEND= 비인터랙티브

ENV DEBIAN_FRONTEND noninteractive또한 대안이 될 수도 있지만 매우 낙담하고 있습니다.

다른 방법은 Docker 파일의 시작 부분에서 설정하고 Docker 파일의 끝 부분에서 설정을 해제하는 것입니다.

솔루션 특성:

  • ENV후에도 않음). 더 는 환경 변수를 합니다.
  • 기본값으로 설정하는 것을 잊어버린 경우 오류가 발생할 수 있습니다.
  • 로설되있때기니다문입어정▁with다▁set니로 설정되어 있기 입니다.ENV이미지에서 빌드된 모든 이미지와 컨테이너에 상속되어 효과적으로 동작이 변경됩니다. ([1]에서 언급한 바와 같이) 이러한 이미지를 사용하는 사용자는 소프트웨어를 대화형으로 설치할 때 대화 상자가 표시되지 않기 때문에 문제가 발생합니다.
  • 기본 프런트 엔드는 다음과 같습니다.DEBIAN_FRONTEND=newt([2] 참조), 파일 끝에 설정해야 합니다.

예:

# Set for all apt-get install, must be at the very beginning of the Dockerfile.
ENV DEBIAN_FRONTEND noninteractive
...
# Non-interactive modes get set back.
ENV DEBIAN_FRONTEND newt

또는 4: RUN 내보내기 DEBIAN_FRONTEND= 비인터랙티브

솔루션 특성:

  • 대안 2와 상당히 유사합니다.
  • 디커플링을 통해 응집력은 고통받고 있습니다: 왜 이 변수와 변수가 속한 것에 대한 수출이 있는지(apt-get).
  • 는 범는입니다.RUN다른 지시사항에 영향을 미치지 않을 것입니다.

예:

# Set the frontend and then install your package
RUN export DEBIAN_FRONTEND=noninteractive && \
    ...
    apt-get -yq install {your-pkgs} && \
    ...

더 많은 읽을거리(참고 자료)

를 하십시오.apt-get install apt-utils들소설치되었지만 경고는 없습니다.

이것은 좋은 해결책이 없는 진행 중인 문제입니다.저는 이것을 선택했습니다. 차선이지만, 효과가 있습니다.

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get update && apt-get install -y apt-utils 2>&1 | \
    grep -v "^debconf: delaying package configuration, since apt-utils.*"

설명:

  • grep -v역방향 매치, 그것으로 시작하는 라인이 사라질 것입니다!
  • ARG는 런타임에 필요하지 않은 경우 새로운 ENV입니다.
  • 그런 다음 이미지를 처음부터 작성할 때 오류가 나타나지 않고 하루 종일 apt-get을 사용할 수 있습니다.

이것이 효과가 있다는 증거: https://asciinema.org/a/WJCDEYcxCIy6EF7eXw0MAnK3c

언급URL : https://stackoverflow.com/questions/51023312/docker-having-issues-installing-apt-utils