/var/cache/apt/archives/ 中空间不足。

当我运行安装solr-jetty包的命令时,系统提示我
You don't have enough free space in /var/cache/apt/archives/

这是df -H命令的结果:

enter image description here

我在我的Mac上使用VirtualBox安装了Ubuntu。
我该如何解决这个问题?

对我来说,这个问题只需重新启动系统就解决了。我猜我的电脑累积了很多临时文件。 - thepunitsingh
7个回答

sudo apt-get autoclean

这将删除所有当前未安装的软件包。如果这样仍然无法释放足够的空间,那么请使用sudo apt-get clean命令。该命令会清除所有已下载和/或已安装的.deb文件。

但是看起来你的硬盘已经没有空间了。严重缺乏空间。61Mb对于一个良好运行的系统来说是不够的。我找到了两个解决方案可以绕过与空间相关的问题,尽管在使用虚拟机时可能都比较困难。 一个更持久的解决方案是增加虚拟机的大小(我还建议使用允许虚拟机动态增加大小的方法;VirtualBox有这样的设置)。


如果你有分区或外部存储设备,也可以选择这个方法。通过这种方法,你可以重新指定.deb文件的存储位置。
sudo mv -i /var/cache/apt /media/{dir_of_mounted_disc}
sudo ln -s /media/{dir_of_mounted_disc}/apt /var/cache/apt

运行升级和安装。完成后,您可以使用以下命令切换回正常模式:
sudo apt-get clean
sudo unlink /var/cache/apt
sudo mv /media/{dir_of_mounted_disc}/apt /var/cache

当然,{dir_of_mounted_disc}需要更改为您挂载的磁盘的名称。
另一种选择是:
这样您就可以创建一个RAM磁盘:
sudo mkdir /media/{directory}
sudo mount -t tmpfs tmpfs /media/{directory}
sudo ln -s /media/{directory}/apt /var/cache/apt

和第一种选择一样进行清理。
警告:这需要大量的RAM,因此在使用虚拟系统时可能无法使用。

2我尝试了这两个命令,但是收到了相同的“空间不足”的提示信息。 - epsilones
所以我编辑了我的问题,放上了命令的可视化结果(抱歉,我放了一些图片,因为我不知道如何复制粘贴shell的内容...) - epsilones
顺便说一下,我尝试了在媒体目录中使用ls命令得到的内容,我找到了'cdrom'。所以我运行了sudo mw命令,但是我收到了一个错误消息:无法创建目录/media/cdrom/apt:'只读文件系统'... - epsilones
你的意思是,如果我没有USB存储设备或外部硬盘,你之前建议的最后一个命令就无效了吗? - epsilones
@newben 没问题 :) 如果你不介意的话,请把所有的评论都删除掉(除了第一个 :D ),因为我们要把这个变成一个聊天记录 :+ - Rinzwind
如果您正在创建一个Docker镜像,您的Linux主机必须有足够的磁盘空间。当镜像创建失败时,我们会在主机上占用磁盘空间。使用docker images列出失败的镜像,并使用docker rmi <image id>选择要删除的镜像。 - Junior Mayhé

每当你安装一个程序,软件包(.deb文件)会被存储在/var/cache/apt/archives目录下,显然会占用空间(如果安装了很多软件包,那么占用的空间就会很大)。
要清理它们,请使用:
sudo apt-get clean

如果你想知道"clean"和"autoclean"之间有什么区别,这里是man页面上的解释:
"clean":清理操作会清空本地存储库中已获取的软件包文件。它会从/var/cache/apt/archives/和/var/cache/apt/archives/partial/目录中删除除了锁文件以外的所有内容。APT作为dselect(1)方法使用时,会运行clean操作。那些不使用dselect的用户可能希望定期运行apt-get clean来释放磁盘空间。
"autoclean":与clean类似,autoclean也会清空本地存储库中的软件包文件。区别在于,它只会删除无法再次下载且基本上没有用处的软件包文件。这是一个可以长时间维护的缓存,以防止失控。如果设置为关闭,配置选项Clean-Installed将防止被安装的软件包被擦除。

这些命令将删除不再需要的额外软件包。
打开终端(Ctrl-Alt-T)并输入。
sudo apt-get autoclean
sudo apt-get autoremove 

这是一个在刚安装了Raspbian 10 Buster的树莓派Zero-W上出现的错误信息。
You don't have enough free space in /var/cache/apt/archives/.

这里的其他答案都是有效的,但是这个新镜像没有任何重要的先前软件包需要删除,所以删除它们并没有帮助。

解决方案(1):使用 raspi-config --> Advanced --> Expand Filesystem

这将扩展根文件系统以使用整个SD卡。

解决方案(2):或者通过命令行

raspi-config --expand-rootfs

关于“您在 /var/cache/apt/archives/ 中没有足够的可用空间”问题,可能与此错误有关:https://bugs.launchpad.net/ubuntu/+source/update-manager/+bug/1054903 特别是如果 /var/cache/apt 在每次启动时都会被清除的 tmpfs 上。您是否将 /var/cache/ 符号链接到了 /tmp/cache/ 或类似的位置以节省空间?
如果是这种情况,解决/绕过此问题的说明请参考上述错误报告。

1你能够添加一个建议解决方法的摘要,引用需要引用的部分,并从链接中添加相关步骤吗? - Mateo

我遇到了这个错误,通过移除无效的 Docker 容器进行修复。 你可以使用以下其中一行命令来移除无效的 Docker 容器:
docker rmi $(docker images -f "dangling=true" -q) -f
docker rm $(docker ps -a -q)
docker image rm $(docker image ls -f 'dangling=true' -q)

这个回答是否解决了问题? - Sajjad Aemmi
是的,这是关于在Ubuntu中释放空间的问题。 - Ali Ganjbakhsh
是的,我同意@AliGanjbakhsh的观点。我运行了docker system prune命令来删除悬空的容器和镜像,这解决了我的空间不足错误。 - Jono
如果你是在 Docker 容器的环境下寻找这个问题的解决方法,这就是答案:https://stackoverflow.com/questions/65291124/docker-you-dont-have-enough-free-space-in-var-cache-apt-archives - charlieb
通常情况下,你应该使用xargs来传递参数,而不是使用命令替换。 - David Ongaro

这更像是一个解决方法/有用的提示。
这在我的虚拟机上发生,因为我给交换空间分配了太多的空间(接近40%)。我使用gparted快速调整了大小,并能够为根分区回收一些空间。
现在我可以更新这个长期被忽视的虚拟机,需要大约3GB的更新。

2给我一些Docker镜像。删除了我不需要的那些。 - Peter Schofield