var/cache/apt/archives占据了巨大的空间。

我正在清理我的系统。我发现这个文件夹 /var/cache/apt/archives 占用了很多空间(1.5GB)。是否有必要保留所有这些存档?

我在crontab中有一个条目,每个月运行一次脚本。echo yourpassword | sudo -S apt-get clean。如果你是唯一能够物理访问你的电脑的人,这是相对安全的。 - fixit7
5个回答

你不需要保留它们,如果你不想要它们的话。执行一个
sudo apt-get clean

清理目录。

为什么在我执行了这个命令之后,我在Ubuntu Tweek工具中仍然可以看到缓存的deb文件? - Cristiano
@Cristiano 可能是工具处于部分安装状态,因此 apt 认为需要保留它。 - Doktor J

似乎
sudo apt-get autoclean

是一个比更好的选择。
sudo apt-get clean

autoclean只会删除“无用”的存档文件

根据man页面的说明:

与clean类似,autoclean会清除本地仓库中已检索的软件包文件。不同之处在于它只会删除无法再次下载且基本上无用的软件包文件。 这样可以在长时间内保持缓存而不失控。如果将配置选项APT::Clean-Installed设置为关闭,则已安装的软件包将不会被删除。


11即使这是我从很久以前也记得的事情 - 结果证明,对于我来说(在11.04上),autoclean并没有删除/var/cache/apt/archives/中的文件 - 而clean则有... - sdaau
实际上,我看到的情况恰恰相反,“autoclean”基本上清空了目录,而“clean”却没有做任何操作。 - alanaktion
太棒了...我发现的第一件事情如此简单.. :p - mtk
1不,如果你想节省磁盘空间,"clean"是更好的选择。我的测试(在Ubuntu 18上)显示,"clean"可以清理掉18G的空间,而"autoclean"只能清理掉一点点(少于1GB,如果有的话)。 - gerardw
1对我来说,无用的档案是那些已经安装的(大多数时候我只下载需要的),如果不明确指定“无用”实际上意味着什么,那么这个选项就毫无用处(双关语意在其中 :))。 - Aquarius Power
升级后,“autoclean”非常完美。它保留了当前的软件包,但删除了之前版本中的旧软件包。请注意,您可以使用“-s”(或“--simulate”或“--dry-run”)选项查看将要被删除的内容,而不实际执行删除操作。 - mivk

你可以在Synaptic软件包管理器中调整设置,菜单设置/首选项,文件选项卡。从那里你也可以删除缓存。

安装后删除已下载的软件包是我需要的,谢谢! - Aquarius Power
删除安装后的下载包是我需要的,谢谢!可惜清理按钮忽略了我们的选项,请参考https://askubuntu.com/questions/1300676/how-to-clean-var-cache-apt-archives-of-installed-and-deprecated-files-only。 - Aquarius Power

最好将软件包保存在其他地方,然后进行清理(Jorge Castro的方法)。当您重新安装操作系统或软件包时,它不会再次下载,从而节省时间和带宽。apt-get首先检查本地存储中所需的软件包[/var/cache/apt/archives]是否存在,如果不存在则下载,否则只需进行安装。因此,您可以保存软件包以备将来使用。

5我怀疑他在新系统上不需要全部1.5GB的更新! - Bruno Pereira
1它们可以被保存在CD或其他存储设备上,这样就不会占用本地硬盘的空间。这被称为“本地仓库”。 - ignis
1将软件包保存在其他地方?是的,这就是我在这里所做的。我已经将整个/var/cache/apt/archives目录移动到/usr/tmp/apt-archive-cache并在/var/cache/apt中设置了一个archives符号链接。由于特别是audacity喜欢将临时文件存储在/var目录中,因此应始终注意该目录,以确保其不会耗尽空间。 - syntaxerror

如果您有自动无人值守升级功能,比如Google Cloud虚拟机,您可以立即阅读此文件中的信息:
/usr/lib/apt/apt.systemd.daily

然后在这里添加和调整一个新文件:
/etc/apt/apt.conf.d/10periodic

我认为最相关的设置是这些:
#  APT::Archives::MaxAge "0"; (old, deprecated)
#  APT::Periodic::MaxAge "0"; (new)
#  - Set maximum allowed age of a cache package file. If a cache.
#    package file is older it is deleted (0=disable)

也许甚至更多的是这两个:
#  APT::Periodic::AutocleanInterval "0";
#  - Do "apt-get autoclean" every n-days (0=disable)
#
#  APT::Periodic::CleanInterval "0";
#  - Do "apt-get clean" every n-days (0=disable)

我不得不添加底部两个,因为我的虚拟机的空间不足,并且apt缓存中有几GB的旧垃圾。

我是这样添加它们的。

APT::Periodic::AutocleanInterval "7";
// Do "apt-get autoclean" every n-days (0=disable)

APT::Periodic::CleanInterval "7";
// Do "apt-get clean" every n-days (0=disable)

也许甚至只需要最后一个设置,因为它比自动清洁功能更彻底地清洁。
APT::Periodic::CleanInterval "7";
// Do "apt-get clean" every n-days (0=disable)