手动删除/ var / cache / apt内容是否安全?


21

在磁盘空间非常有限的嵌入式系统上,我的文件夹/var/cache/apt已满700MB,srcpkgcache.bin.*其中有几个大*.bin文件。

表演sudo apt-get clean没有明显的不同。

手动删除这些*.bin*文件是否安全?


6
从Ubuntu 14.04开始,*.bin假设当前没有与apt相关的进程正在运行,则删除上述文件夹中的文件是绝对安全的。接下来apt-get update将重新生成*.bin文件。这个问题绝对不是关于其中的文件/var/cache/apt/archives,而是关于文件/var/cache/apt/*.bin。巨大差距。前者可以通过发行进行清洁apt-get clean,后者必须手动删除。显然,投票赞成关闭问题的人没有正确阅读问题。不幸的是,在授予我一些赏金代表后,我无法投票决定重新开放。
0xC0000022L15年

3
不是重复项。链接的答案是关于中的子目录archives/var/cache/apt/,这是关于*.bin*文件的。
Olaf Dietsche'9

Answers:


11

并不是的。这些文件可帮助您的系统确定可用的和无效的。清空该目录将导致apt-get系统损坏。这里有一些技巧。

一,自动清洗

添加一个

DPkg::Post-Invoke { "apt-get clean"; };

/etc/apt/apt.conf。这将使apt和dpkg进程花费更长的时间,但是它将使缓存目录始终保持干净。

接下来,删除档案

首先,删除并禁用所有未使用的源档案。在嵌入式系统上,您可能不需要它们。接下来,删除所有未使用的档案。apt-cache policy如果不确定,您可以运行以找出软件包的回购来源。

更多删除档案

有些PPA只需要1或2时就担心其中包含大量软件包。请尝试禁用这些PPA并仅手动安装deb文件。在这种情况下,您可以节省空间,但是会丢失自动更新。请记住,dpkg将处理依赖关系,因此您仍然可以安装thing-with-tons-of-deps.deb,然后运行apt-get -f install以获取依赖关系。

完全答案1

因为谈论嵌入式系统,所以90%的主存储库对您没有任何好处。要对此进行处理,您可以运行自己的apt-get repo服务器。请参阅此链接。这并不容易,它只是一台机器的PIA。但是,如果您有几台这样的机器,那绝对值得。(您的apt repo服务器可以只托管您实际使用的一部分软件包。您无需镜像整个内容)

完全极端的答案2

如果空间确实是一个大问题,那么您可以一起禁用apt并通过dpkg还原为手动安装。我不得不在几个嵌入式系统上执行此操作。它有效,但这是管理员的噩梦。


这是一个很好的答案(尤其是完全极端的答案),但是/etc/apt/apt.conf在Ubuntu 14.04中不再存在。当前的最佳做法是什么?
zachaysan

1
如果文件不存在,请创建文件。它仍然会被读取。
coteyr

5
拜托,您为什么写删除*.bin文件并不安全?任何运行apt-get update都会从头开始重新生成那些文件(经过测试)。例如,我的用例是我想创建LXC容器模板,并希望尽可能地减少归档文件。我看不出有什么不安全的原因。您的答案并没有说明原因,只是这是不安全的。经过测试,在Ubuntu 14.04 上完全安全
0xC0000022L15年

1
您是说apt-cache clean在dpkg调用中包含将导致更干净的缓存,但是用户说apt-cache clean并没有为他们清理任何内容。另外,您的答案是完全错误的,因为dpkg不使用/var/cache/apt/*内容来获取有关软件包统计信息的信息。
Anwar

1
apt-get的手册页清楚地描述的功能,clean如*清洁送走的检索包文件的本地仓库。它会从/ var / cache / apt / archives /和/ var / cache / apt / archives / partial /中删除除锁定文件之外的所有内容。*如果存在危险,将没有此类函数可以清除。
Anwar

3

您当然可以删除pkgcache.binsrcpkgcache.bin,什么也不会发生。只需运行apt-get update即可重新创建它们。


...,这与删除.deb文件无关吗?
einpoklum-恢复莫妮卡

1

保留pkgcache.binsrcpkgcache.bin,您可以安全地删除其他。不要触摸目录!


好,谢谢。我暂时将*bin.*文件移到了备份文件夹。但是,为什么apt-get在缓存内部管理缓存?缓存目录本质上应该是一个临时存储。
ysap 2012年

此问题已报告错误。:)看这里
Frantique

您当然可以删除pkgcache.bin和srcpkgcache.bin,什么也没有发生。apt-get update重新创建它们。
Tomas

0

您当然可以为此创建一个NFS共享(网络文件系统)。将这些文件保留在服务器上,仅在要更新/安装软件包时挂载共享。在嵌入式环境中,无论如何安装通常都是相对静态的。

sshfs是另一个不错的选择,它设置起来容易得多(基本上只需要标准的SSH),但是开销更大(更慢)。


从技术上讲,这应该可以工作,除非您无法完全控制apt的运行时间。如果您使用类似的方法,则需要确保禁用“自动”任务,例如运行apt-get update的cron作业。
coteyr 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.