无法在docker Ubuntu映像中安装软件包

时间:2014-12-03 13:50:37

标签: docker ubuntu-14.04

我在docker上安装了Ubuntu 14.04映像。之后,当我尝试在ubuntu映像中安装软件包时,我无法找到软件包错误:

apt-get install curl

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package curl

如何解决此错误?

7 个答案:

答案 0 :(得分:433)

这是因为图像中没有包缓存,您需要运行:

apt-get update

在安装软件包之前,如果你的命令在Dockerfile中,那么你需要:

apt-get -y install curl

要禁用命令的标准输出,请使用-qq。 E.g。

apt-get -qq -y install curl

答案 1 :(得分:83)

来自五月 2017 2018 2019

中的docs
  

始终将RUN apt-get updateapt-get install合并在一起   RUN语句,例如

     

RUN apt-get update && apt-get install -y package-bar

     

(...)

     

apt-get update语句中单独使用RUN会导致缓存   问题和后续apt-get install指令失败。

     

(...)

     

使用RUN apt-get update && apt-get install -y可确保您的Dockerfile安装最新的软件包版本,无需进一步编码或手动干预。这种技术被称为“缓存破坏”。

答案 2 :(得分:10)

在Dockerfile中添加以下命令:

RUN apt-get update

答案 3 :(得分:1)

确保您的Dockerfile中没有任何语法错误,因为这也可能导致此错误。一个正确的例子是:

RUN apt-get update \
    && apt-get -y install curl \
    another-package

这是修复语法错误和添加apt-get update以解决问题的组合。

答案 4 :(得分:1)

我发现,在“ apt-get更新”运行时,通过/ tmp挂载本地卷可能会导致权限问题,从而阻止填充软件包缓存。希望这不是大多数人所做的,但是如果您看到此问题,则需要寻找其他东西。

答案 5 :(得分:0)

错误即将到来是因为您没有该软件包或您没有包含该软件包的仓库。

简单的解决方案,您应该先进行apt-get更新,然后再尝试。

答案 6 :(得分:0)

您需要在Ubuntu中更新软件包列表:

$ sudo apt-get update
$ sudo apt-get install <package_name>