내 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에 화이트리스트에 등록되어 있습니다 .statx
libseccomp
statx
libseccomp
https://github.com/moby/moby/pull/36417
그러나 이것만으로는 문제를 완전히 설명할 수 없습니다. 오늘부터 docker --version
travis 상태는 18.06.0-ce
statx를 화이트리스트에 추가해야 하지만 여전히 원인을 찾지 못한 문제가 있습니다.
그러나 Docker 이미지 버전을 업그레이드하면 문제가 해결될 수 있습니다.
해결책
Travis에서 Docker 버전을 변경하면 statx
Fix and의 설치 문제가 해결되었습니다.libpaper1
ghostscript
파일 에 다음 콘텐츠를 추가합니다 .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