如何防止apt-get/aptitude保留缓存

我已安装Apt-Cacher NG以为几台机器提供软件包缓存。因此,我认为在/var/cache/apt/archives中保留aptitude/apt-get自己的(第二个)缓存是没有意义的。我知道可以使用sudo apt-get clean清空此缓存,但是否有一种方法可以配置apt-get在安装完成后自动清理缓存?

1我正在尝试做与你一样的事情,使用多个LXC进行实验并保持我的个人电脑干净。其中一个LXC是我的apt-cacher-ng,但现在我想阻止所有其他实例(包括“真实”实例)保留存档缓存。 - jgomo3
3个回答

根据文档,您可以在/etc/apt/apt.conf.d/目录下添加一个名为no-cache的配置文件,其中包含Dir::Cache "";Dir::Cache::archives "";,这是根据apt.conf的手册。有一个bug报告对这种方法提出了问题,我不建议使用它。
根据this教程,还有一种剩余的方法。
echo 'DPkg::Post-Invoke {"/bin/rm -f /var/cache/apt/archives/*.deb || true";};' | sudo tee /etc/apt/apt.conf.d/clean

这将在apt退出之前执行一个rm命令。

我发现将缓存路径设置为空路径时,在运行apt时会出现错误:归档目录archives/partial不存在。- 获取(2:没有这样的文件或目录)。解决此错误的方法是将Dir::Cache::archives也设置为空路径。我已经更新了你的答案,包括了这一点(假设有更高声望的人批准了编辑)。 - Blair
2实际上,将这些设置为空路径是不起作用的。我这样做了,然后安装并卸载了一个软件包。再次安装时,我得到了“需要获取 0 B/21.9 MB 的存档”,表明存在一个缓存版本。查看一下,原来它们被缓存在文件系统的根目录下... 这不完全是我想要的!除非我们两个都读错了 apt.conf 的 manpage,要么 manpage 是错误的,要么存在一个 bug。我想我还是坚持使用第二种方法吧。 - Blair
5我已经在 https://bugs.launchpad.net/apt/+bug/937951 上报了 Dir::Cache::Archive ""; 的错误。当你设置好之后,请**不要运行 apt-get clean**,因为它会删除根目录 (/) 中的所有文件。 - Lekensteyn
2根据错误提示,Dir::Cache::Archive 是错误的配置变量;应该是 Dir::Cache::{src,}pkgcache - Jeremy Kerr
1这个错误在后续版本中修复了吗? - sep332
我确认Ubuntu 14.04,2016年,仍然存在同样的问题。在一个容器上进行了测试,根目录被软件包填满。Dir::Cache::Archive没有被忽略。 - jgomo3
重新打开了这个bug。欢迎大家参与讨论。https://bugs.launchpad.net/ubuntu/+source/apt/+bug/937951 - dragon
Ubuntu 18.04,刚才:将两个条目(Dir::Cache + ::Archive)都设置为""对我有效。 - OttoEisen


我认为你在寻找的是:

/etc/apt/apt.conf.d$ cat 04autoclean
APT::Clean-Installed "true";
/etc/apt/apt.conf.d$ 

2那个命令并不会改变任何东西——它只是显示/etc/apt/apt.conf.d目录下04autoclean的内容。你是在说Blair应该更改04autoclean的内容,以便将APT::Clean-Installed设置为“true”吗? - Eliah Kagan
1这将仅控制apt-get autoclean的行为。根据apt-get(8)所述:"配置选项APT::Clean-Installed如果设置为关闭,将阻止已安装的软件包被删除。" - blueyed