我有一台由 Satellite 6.5 管理的 RHEL7 服务器。
命令
yum clean all --verbose
显示了几 Mb 的 yum 缓存未追踪的存储库。
yum clean all
不清除此缓存。是否可以这样做,或者唯一的方法就是跑步rm -rf /var/cache/yum/* && yum check-update
?
答案1
该yum clean all
命令实际上建议你运行的rm -rf /var/cache/yum
:
» yum clean all
Cleaning repos: amzn2-core amzn2extra-docker amzn2extra-epel copr:copr.fedorainfracloud.org:jdoss:wireguard epel
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
yum clean all
过去的工作方式有一些增强(最值得注意的是https://bugzilla.redhat.com/show_bug.cgi?id=1357083)但你绝对是对的,在某些边缘情况下,yum clean all
它无法正常工作。
rm -rf /var/cache/yum
,虽然很讨厌,但每次都能成功。
手册页有一条关于清理未跟踪存储库的简短消息:
<...> 另请注意,未跟踪(不再配置)的存储库不会被自动清理。
和
要一次性清除整个缓存,最简单的方法是手动删除文件。根据您的 cachedir 配置,这通常意味着将任何变量视为 shell 通配符并递归删除匹配的目录。例如,如果您的缓存目录是 /var/cache/yum/$basearch/$releasever,则必须删除整个 /var/cache/yum 目录。如果这样做,yum 将在下次运行时根据需要重建缓存(这可能需要一段时间)。
关于重建需要很长时间的最后一点,您可能需要遵循rm -rf /var/cache/yum
正确&& yum makecache
地重新创建目录并避免在下一次 yum 调用时长时间等待。请注意makecache
和之间的区别makecache fast
,但大多数人并不真正知道其中的区别。yum makecache fast
仅确保存储库是最新的。yum makecache
实际上下载元数据。
答案2
还有另一种选择:
# yum --enablerepo='*' --verbose clean all
这里解释一下:
# man yum
...
CLEAN OPTIONS
The following are the ways which you can invoke yum in clean mode.
Note that "all files" in the commands below means "all files in currently
enabled repositories". If you want to also clean any (temporarily)
disabled repositories you need to use --enablerepo='*' option.
但已删除存储库的缓存(这意味着“未跟踪”)将被保留:
Disk usage under /var/cache/yum/*/* after cleanup:
4.0 k enabled repos:
0 disabled repos
145 M untracked repos