【问题标题】:Why can't Docker find a existing package?为什么 Docker 找不到现有的包?
【发布时间】:2019-05-07 12:04:12
【问题描述】:

我是使用 Docker 的新手,所以这对某些人来说可能很明显。我正在运行 Ubuntu 18.04TLS。

我想在图像中安装包“python3-protobuf”。我尝试使用 Dockerfile 中的以下行来执行此操作:

...
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        python3-protobuf \
        <some other packages to be installed>
...

当我运行“docker build -t myImageName”时,我收到消息:

E: 找不到包 python3-protobuf

我正在安装许多软件包,但这是唯一对我造成​​问题的软件包。

我知道包名是正确的,因为在终端中,当我“apt search”它时,它就被找到了。此外,在 dockerfile 中,我执行推荐的“更新”和“安装”步骤。所以它应该找到它。任何想法为什么它没有?

【问题讨论】:

  • 那不是pip包吗?
  • 您使用的是哪个基础镜像? python3-protobuf 软件包仅适用于 Ubuntu >=18.04。如果您的 FROM 映像低于 Ubuntu 18.04,则找不到该软件包。
  • @Blokje5 还有一个 pip 版本,但我不是指那个。
  • @banuj 我的基本图像是: nvidia/cuda:8.0-cudnn5-devel-ubuntu16.04 。它有什么不同吗?
  • packages.ubuntu.com/search?keywords=python3-protobuf。 ubuntu16.04 所需的包不存在。您应该使用 pip 包或升级基础映像。

标签: docker dockerfile protocol-buffers


【解决方案1】:

@banuj 回答了这个问题。

“python3-protobuf”包从 Ubuntu 18.04 及更高版本开始可用。我拍摄的基础镜像使用的是 ubuntu 16.04。

我有两种方法可以解决这个问题:

  1. 使用 ubuntu 18.04(或更高版本)的基础镜像
  2. 使用 pip 安装包。

我最终使用了选项二。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 2011-12-06
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    相关资源
    最近更新 更多