如何清理未跟踪存储库的 yum 缓存?

如何清理未跟踪存储库的 yum 缓存?

我有一台由 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

相关内容