【问题标题】:How to resolve missing dependencies in Docker Alpine如何解决 Docker Alpine 中缺少的依赖项
【发布时间】:2021-11-14 21:50:23
【问题描述】:

当我使用 python:3.10.0rc2-busterpython:3.10.0rc2-slim-buster 构建我的 docker 映像时,我的 Django 应用程序运行良好,没有任何问题。

为了减小图像大小,我切换到python:3.10-rc-alpine,但是我面临着几十个缺失的依赖项。

我发现这篇文章很有帮助 Docker Alpine Linux python (missing) 它让我能够解决一些缺失的依赖项。

感谢您的支持,指导我如何解决这个问题?

这些是我收到的缺少依赖项错误:

#6 9.141 ERROR: unable to select packages:
#6 9.173   libcairo2 (no such package):
#6 9.173     required by: world[libcairo2]
#6 9.173   libgdk-pixbuf2.0-0 (no such package):
#6 9.173     required by: world[libgdk-pixbuf2.0-0]
#6 9.173   libldap2-dev (no such package):
#6 9.173     required by: world[libldap2-dev]
#6 9.173   libpango-1.0-0 (no such package):
#6 9.173     required by: world[libpango-1.0-0]
#6 9.173   libpangocairo-1.0-0 (no such package):
#6 9.173     required by: world[libpangocairo-1.0-0]
#6 9.173   libsasl2-dev (no such package):
#6 9.173     required by: world[libsasl2-dev]
#6 9.173   libsnmp-dev (no such package):
#6 9.173     required by: world[libsnmp-dev]
#6 9.173   libssl-dev (no such package):
#6 9.173     required by: world[libssl-dev]
#6 9.173   pdftk (no such package):
#6 9.173     required by: world[pdftk]
#6 9.173   python-dev (no such package):
#6 9.173     required by: world[python-dev]
#6 9.173   python3-cffi (no such package):
#6 9.173     required by: world[python3-cffi]
#6 9.173   python3-setuptools (no such package):
#6 9.173     required by: world[python3-setuptools]
#6 9.173   python3-wheel (no such package):
#6 9.173     required by: world[python3-wheel]
#6 9.173   sqlite3 (no such package):
#6 9.173     required by: world[sqlite3]

这是我的 docker 文件的一部分:

FROM python:3.10-rc-alpine
RUN apk --no-cache update && \
    apk --no-cache add --update alpine-sdk && \ 
    apk --no-cache add \
    python3 \
    lsof \
    pdftk \
    unixodbc-dev \
    vim \
    git \
    python3-dev \
    python3-setuptools \
    python3-wheel \
    python3-cffi libcairo2 libpango-1.0-0 libpangocairo-1.0-0 libgdk-pixbuf2.0-0 libffi- 
    dev shared-mime-info \
    libsasl2-dev python-dev libldap2-dev libssl-dev libsnmp-dev \
    nginx \
    supervisor \
    sqlite3 && \
    pip3 install -U pip setuptools && \

【问题讨论】:

  • 您使用的docker镜像已经安装了python。试图重新安装它是没有意义的。此外,您提到缺少依赖项。正在尝试安装什么?
  • @akortex 感谢您的评论。您对重新安装 python 是正确的。我已经附上了试图安装导致错误消息的依赖项/包的列表。
  • 那么除了python还有什么需要安装的?
  • 以下是我正在尝试安装的项目列表python3-cffilibcairo2libpango-1.0-0libpangocairo-1.0-0libgdk-pixbuf2.0-0libffi-devlibsasl2-devpython-devlibldap2-dev@9 987654337@pdftkpython3-setuptoolspython3-wheelsqlite3
  • 为什么需要各种库包?安装工具等可以通过pip安装。

标签: python django docker dockerfile alpine


【解决方案1】:

至少有一个列出的依赖项无法使用官方包解决:

#6 9.173   pdftk (no such package):
#6 9.173     required by: world[pdftk]

python:3.10-rc-alpine 基于 Alpine 3.14.2,但 pdftk 包自 Alpine 3.9 以来一直是 deprecated。但是,您可以尝试按照以下答案安装pdftk
https://stackoverflow.com/a/67747061/7256341
如果pdftk 是应用程序依赖项而不是包依赖项,这可能会起作用。

Alpine 以不同的名称提供以下软件包:

这些是我能够通过 Alpine 的包裹搜索快速找到的:
https://pkgs.alpinelinux.org/packages

这是一个很棒且易于使用的引擎:您可以使用通配符(例如*ldap*-dev)按包名称搜索,并使用内容搜索来查找包中的文件名。通过一些工作,希望您应该能够为剩余的依赖项找到相应的包。祝你好运!

P.S.: 或许说明显而易见,但请确保测量生成的 Alpine 图像的大小。 vanilla 镜像非常紧凑,但是一旦添加了这么多包,与 Debian slim 相比,大小的减少可能会变得微不足道——甚至可能超过它!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-08
    • 2019-06-26
    • 2021-06-24
    • 2020-03-27
    • 2016-06-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    相关资源
    最近更新 更多