근본 원인

근본 원인

내 Dockerfile은 다음과 같습니다.

FROM python:3.9-slim-bullseye


RUN apt-get update && apt-get install \
    --no-install-recommends -qq -y \
    apt-utils \
    poppler-utils \
    libjpeg-dev \
    libcairo2-dev \
    pdftk \
    ghostscript \
    autoconf-archive \
    pkg-config \
    libpng-dev \
    libtiff5-dev \
    zlib1g-dev \
    imagemagick \
    wget \
    procps \
    curl \
    locales \
    libicu-dev \
    libpango1.0-dev \
    g++ \
    make \
    tesseract-ocr \
    tesseract-ocr-por \
    tesseract-ocr-osd

내 컴퓨터(Ubuntu 20.04 및 Docker 버전 19.03.10)에서 빌드할 수 있지만 sudo docker build -t foo .Travis CI에서는 동일한 작업을 수행할 수 없습니다.

Errors were encountered while processing:
 libpaper1:amd64
 libgs9:amd64
 ghostscript
E: Sub-process /usr/bin/dpkg returned an error code (1)
The command '/bin/sh -c apt-get update && apt-get install     --no-install-recommends -qq -y     apt-utils     poppler-utils     libjpeg-dev     libcairo2-dev     pdftk     ghostscript     autoconf-archive     pkg-config     libpng-dev     libtiff5-dev     zlib1g-dev     imagemagick     wget     procps     curl     locales     libicu-dev     libpango1.0-dev     g++     make     tesseract-ocr     tesseract-ocr-por     tesseract-ocr-osd     libc6     libgs9     ucf     libpaper1' returned a non-zero code: 100

libpaper1에 대한 일부 로그:

Setting up libpaper1:amd64 (1.1.28+b1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Creating config file /etc/papersize with new version
stat: cannot statx '/etc/papersize.dpkg-inst': Operation not permitted
dpkg: error processing package libpaper1:amd64 (--configure):
 installed libpaper1:amd64 package post-installation script subprocess returned error exit status 1

libgs9에 대한 일부 로그:

dpkg: error processing package libgs9:amd64 (--configure):
 dependency problems - leaving unconfigured

Ghostscript에 대한 일부 로그:

dpkg: dependency problems prevent configuration of ghostscript:
 ghostscript depends on libgs9 (= 9.53.3~dfsg-7+deb11u1); however:
  Package libgs9:amd64 is not configured yet.

나는 성공하지 않고 다음을 시도했습니다.

RUN dpkg --configure -a && apt-get -f install

그리고:

RUN apt-get clean && apt-get update && apt-get install --fix-broken

RUN apt-get install --assume-yes --no-install-recommends -qq \

나의 일부 .travis.yaml:

jobs:
  include:
    - stage: Build temporary docker image
      services:
        - docker
      language: minimal
      if: type = pull_request AND branch = master
      script:
        - source ci_scripts/gcloud_setup.sh
        - gcloud docker -- pull gcr.io/foo/bar
        - docker build --cache-from gcr.io/foo/bar:latest -t bar_temp .
        - docker tag bar_temp gcr.io/foo/bar
        - gcloud docker -- push gcr.io/foo/bar

여기서 뭔가 빠졌나요? 오류 없이 이러한 패키지를 설치하려면 어떻게 해야 합니까?

답변1

근본 원인

간단히 말해서 libpaper1, 오늘 현재 travis에서 사용되는 기본 도커 버전의 일부 구성 단계에서 패키지가 손상되었습니다.

설치 실패 구성 단계 문제는 및 libpaper1에서 발생합니다 . On docker는 docker 18.04에 화이트리스트에 등록되어 있습니다 .statxlibseccompstatxlibseccomp

https://github.com/moby/moby/pull/36417

그러나 이것만으로는 문제를 완전히 설명할 수 없습니다. 오늘부터 docker --versiontravis 상태는 18.06.0-cestatx를 화이트리스트에 추가해야 하지만 여전히 원인을 찾지 못한 문제가 있습니다.

그러나 Docker 이미지 버전을 업그레이드하면 문제가 해결될 수 있습니다.

해결책

Travis에서 Docker 버전을 변경하면 statxFix and의 설치 문제가 해결되었습니다.libpaper1ghostscript

파일 에 다음 콘텐츠를 추가합니다 .travis.yml.

# Need docker-ce 20 instead of docker-ce 18 for installing ghostscript/libpaper1 on debian:bullseye
# https://docs.travis-ci.com/user/docker/#installing-a-newer-docker-version
before_install:
   - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
   - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
   - sudo apt-get update
   - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce

https://docs.travis-ci.com/user/docker/#installing-a-newer-docker-version

쿠도https://github.com/florentx알아내다

관련 정보