我在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
如何修复这个错误?
我在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
如何修复这个错误?
当前回答
我突然就遇到了这个问题。我先这么做了,这似乎解决了问题:
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*
其他回答
因为映像中没有包缓存,所以需要运行:
apt-get update
在安装包之前,如果你的命令在Dockerfile中,你需要:
apt-get -y install curl
要抑制命令的标准输出,请使用-qq。如。
apt-get -qq -y install curl
运行apt-get update并没有为我解决这个问题,因为它似乎总是从缓存中读取这个命令的结果,而缓存似乎被损坏了。我怀疑,如果你有多个docker容器具有相同的“基本映像”(对我来说是python:3.8-slim),就会发生这种情况。
所以,以下是对我有用的方法:
停止系统中的所有Docker容器
docker stop $(sudo docker ps -aq)
移除悬挂的容器
docker container prune
删除所有悬空图像
docker image prune
运行这些命令后,docker构建似乎失去了损坏的缓存,并进行了一个干净的apt-get更新,以获取正确的包信息和包的安装进度。
在Dockerfile中增加如下命令:
RUN apt-get update
这个问题已经得到了回答,但我早些时候遇到了这个问题,这些步骤都不起作用。
事实证明,问题是我在一个单独的文件中保存了一个要安装的包列表。这是保存在windows机器上的CRLF行分隔符(\r\n而不仅仅是\n)。在已接受的答案中提供的步骤之上强制将行结束符仅设置为\n就解决了这个问题。
我突然就遇到了这个问题。我先这么做了,这似乎解决了问题:
RUN apt-get clean
RUN rm -rf /var/lib/apt/lists/*