【问题标题】:apt-get update' returned a non-zero code: 100apt-get update' 返回一个非零代码:100
【发布时间】:2016-10-26 10:22:57
【问题描述】:

我正在尝试从我的 docker 文件创建一个 docker 映像,该文件具有以下内容:

FROM ubuntu:14.04.4
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.2.0 HDP main' >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu14 HDP-UTILS main'  >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/azurecore/ trusty main' >> /etc/apt/sources.list.d/azure-public-trusty.list
RUN gpg --keyserver pgp.mit.edu --recv-keys B9733A7A07513CAD
RUN gpg -a --export 07513CAD | apt-key add -
RUN gpg --keyserver pgp.mit.edu --recv-keys B02C46DF417A0893
RUN gpg -a --export 417A0893 | apt-key add -
RUN apt-get update

失败并出现以下错误:

root@sbd-docker:~/ubuntu# docker build -t hdinsight .
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM ubuntu:14.04.4
 ---> 8f1bd21bd25c
Step 2 : RUN echo 'deb http://private-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.2.0 HDP main' >> /etc/apt/sources.list.d/HDP.list
 ---> Using cache
 ---> bc23070c0b18
Step 3 : RUN echo 'deb http://private-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu14 HDP-UTILS main'  >> /etc/apt/sources.list.d/HDP.list
 ---> Using cache
 ---> e45c32975e28
Step 4 : RUN echo 'deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/azurecore/ trusty main' >> /etc/apt/sources.list.d/azure-public-trusty.list
 ---> Using cache
 ---> 1659cdcab06e
Step 5 : RUN gpg --keyserver pgp.mit.edu --recv-keys B9733A7A07513CAD
 ---> Using cache
 ---> ca73b2bfcd21
Step 6 : RUN gpg -a --export 07513CAD | apt-key add -
  ---> Using cache
  ---> 95596ad10bc9
Step 7 : RUN gpg --keyserver pgp.mit.edu --recv-keys B02C46DF417A0893
 ---> Using cache
 ---> f497deeef5b5
Step 8 : RUN gpg -a --export 417A0893 | apt-key add -
 ---> Using cache
 ---> d01dbe7fa02e
Step 9 : RUN apt-get update
 ---> Running in 89d75799982f
E: The method driver /usr/lib/apt/methods/https could not be found.
The command '/bin/sh -c apt-get update' returned a non-zero code: 100
root@sbd-docker:~/ubuntu#

我在 Ubuntu 14.04.4 上运行这个。

我尝试重新启动 docker,清理所有 docker 映像,安装 apt-transport-https,但没有任何效果。

我不知道这里出了什么问题。

【问题讨论】:

标签: ubuntu docker dockerfile


【解决方案1】:

因为你有一个 https 来源。在执行更新之前安装apt-transport-https

FROM ubuntu:14.04.4
RUN apt-get update && apt-get install -y apt-transport-https
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.2.0 HDP main' >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu14 HDP-UTILS main'  >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/azurecore/ trusty main' >> /etc/apt/sources.list.d/azure-public-trusty.list

....
Rest of your Dockerfile.

【讨论】:

  • 您的示例显示运行更新然后安装 apt-transport-https。你能澄清你的答案吗?似乎您更新一次即可安装,然后在此特定示例中,添加源并从这些新源再次更新。围绕这种情况,答案可能会有所改进。
  • 从 https url apt-transport-https 包更新源应该已经存在。为了确保正在安装最新的软件包,我们需要在从 ubuntu 安装软件包之前发出更新命令,因此需要第一次更新。第二个更新是从 Dockerfile 中添加的源安装。
  • 你绝对的钻石! apt-get install -y apt-transport-https?
  • 在我的情况下,由于github.com/docker/for-win/issues/5593,时钟不同步,并且在 WSL2 中运行 sudo hwclock -s 为所有 docker 构建修复了它,因为我在 WSL2 中运行 docker。
  • 这对我来说是因为没有将-y 添加到apt-get install。与apt-transport-https 无关,但将我推向了正确的方向。因此,您可以在添加潜在的不必要的包之前尝试检查-y
【解决方案2】:

我遇到了同样的问题,感谢这个答案解决了:

https://superuser.com/questions/1423486/issue-with-fetching-http-deb-debian-org-debian-dists-jessie-updates-inrelease/1424377

您可能需要添加此行

RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list

在 Dockerfile 中的任何 apt-get 命令之前。

【讨论】:

    【解决方案3】:

    我不得不用docker system prune 清理我的磁盘,我这样做是因为我在另一个SO answer 上读到了它

    【讨论】:

    • 这就像一个冠军。尝试更新容器时,我在容器中遇到了奇怪的 apt-get 安装问题,这解决了问题。谢谢!
    【解决方案4】:

    在我的情况下,错误是

    存储库“http://internalrepo/repos/internalrepo-name/1 Release”没有发布文件。

    在 deb 包名称前添加 [trusted=yes] 可解决问题。

    deb [trusted=yes] http://internalrepo/repos/internalrepo-name/1 /
    

    【讨论】:

      【解决方案5】:

      添加这个以防其他人使用。就我而言,我必须将以下行添加到Dockerfile

      RUN apt-get -y update
      

      【讨论】:

        【解决方案6】:

        遇到了同样的问题,用下面的命令解决了

        运行 apt -y 更新; 0号出口

        【讨论】:

          【解决方案7】:

          我遇到了同样的问题,因为我的DockerfileFROM 行指的是支持于 2021 年 7 月结束的 Ubuntu 20.10:

          FROM ubuntu:groovy-20210416
          

          将其更新为:

          FROM ubuntu:focal-20211006
          

          为我解决了这个问题。

          【讨论】:

            猜你喜欢
            • 2021-08-12
            • 1970-01-01
            • 1970-01-01
            • 2018-11-15
            • 2012-02-14
            • 1970-01-01
            • 1970-01-01
            • 2019-10-09
            • 1970-01-01
            相关资源
            最近更新 更多