我在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
如何解决此错误?
答案 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
始终将
RUN apt-get update
与apt-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>