
私の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
の問題が修正されました。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