【问题标题】:apt-get install can't find pinned versions within Dockerfileapt-get install 在 Dockerfile 中找不到固定版本
【发布时间】:2021-01-27 18:56:49
【问题描述】:

在构建一个简单的 Dockerfile 的过程中,apt-get install 的固定版本永远找不到,并给我以下输出:

E: Unable to locate package ruby1.9.1-dev
E: Couldn't find any package by glob 'ruby1.9.1-dev'
E: Couldn't find any package by regex 'ruby1.9.1-dev'
E: Version '1.1.*' for 's3cmd' was not found

我正在按照 dockerfile 最佳实践工作:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

您可以在其中找到包含所有 apt-get 建议的 Dockerfile:

FROM ubuntu:18.04
RUN apt-get update && apt-get install -y \
    aufs-tools \
    automake \
    build-essential \
    curl \
    dpkg-sig \
    libcap-dev \
    libsqlite3-dev \
    mercurial \
    reprepro \
    ruby1.9.1 \
    ruby1.9.1-dev \
    s3cmd=1.1.* \
 && rm -rf /var/lib/apt/lists/*

我正在运行 docker 构建:

docker build .

我还没有找到用apt-get install 以另一种方式固定版本的解决方案。有人可以推荐我怎么做吗?

【问题讨论】:

    标签: docker ubuntu dockerfile version


    【解决方案1】:

    ruby1.9.1ruby1.9.1-dev 不适用于 ubuntu:18.04
    你可以在这里找到list of supported packages by ubuntu 版本。

    你也可以阅读这个askubuntu question

    【讨论】:

    • 感谢您的回答。如果我完全使用支持的软件包列表中的版本或带有占位符的版本,它会起作用。在 s3cmd 的情况下,我可以使用 s3cmd=2.0.1-2 或 s3cmd=2.0。* 但是,如果在一年内我使用相同的 Dockerfile 构建映像并且版本切换到 3.0.0,s3cmd= 3.0.0,如何确定它仍然可以不间断地执行?无论如何,非常感谢您的回答!
    • 但是,如果我在一年内使用相同的 Dockerfile 构建映像并切换版本会怎样。通常,如果软件包添加了新版本,旧版本仍然可用,则所有软件包版本始终可用于特定操作系统(Ubuntu)。您只需在开发环境和 Dockerfile 之间进行同步
    • 完美,谢谢 Max,非常感谢您的回答。
    • 很高兴为您提供帮助。如果可以,标记为答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2015-08-31
    • 2016-06-04
    相关资源
    最近更新 更多