Answers:
虽然yum check-update
将检查已安装软件包的更新,但是否需要刷新,其他大多数命令也会更新。
严格等效的命令apt-get update
是yum makecache
...,但是通常不建议在yum中直接运行该命令。
yum
命令(例如,必要时yum upgrade
将自动运行)yum check-update
。换句话说,yum upgrade
与基本上相同apt-get update; apt-get upgrade
。
yum makecache
?它在手册页中列出,并且看起来像apt-get update
... 一样工作,还请注意,yum check-update
并非总是执行刷新,请参见其他答案,FWIW :)
不幸的是yum check-update
,默认情况下,直到yum.conf
的metadata_expire参数过去(默认为90m)后,才会从远程存储库中拉出更改。显然,它的目的是“知道您的计算机是否有需要应用的更新而不以交互方式运行它”,因此基本上它是“检查是否有可更新的软件包”而不是“随您刷新我可以更新到的软件包列表”会期望的。
因此,如果您运行yum check-update
并得到以下信息:
$ sudo yum check-update
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
packagename version repo
这意味着检查更新不会像执行更新一样执行更新apt-get update
。
通过运行以下命令,您可以看到执行所有命令在下面执行的“自动刷新”之前需要花费多长时间:yum repolist enabled -v
解决:
首先使用 yum clean expire-cache
(或yum clean all
),然后任何将来的yum命令都会“在运行时”自动刷新缓存。。由于将来的yum命令会刷新缓存,因此实际上与相同apt-get update
。
我想可以将yum.conf的metadata_expire参数更改为小于默认值90分钟。
或运行yum makecache
(从其他答案中)似乎删除了缓存并立即拉出新副本。但这似乎需要比clean all
(?)FWIW 更长的时间。
那是更新本地缓存的命令,因此
yum makecache
根据“使用Yum缓存”,这似乎是您要查找的命令。
通常,您不需要直接运行此命令,因为yum已经根据yum.conf中的metadata_expire值检查并刷新了元数据,默认值为6个小时。
但是,可能至少有一个用例在Ansible剧本中,因为您在Ansible剧本中没有办法只更新缓存而不安装任何软件包(请参阅Ansible问题33461和40068,这似乎已在2.8版本46183中修复)。Ansible yum模块要求“ update_cache:yes”选项的软件包名称有效。因此,作为替代的“命令:yum makecache”可以在剧本中使用。
dnf也具有makecache命令,尽管也可以使用--refresh开关强制元数据同步。
yum
返回所有存储库中所有软件包更新的列表(如果有)。apt-get update
刷新索引文件,但yum check-update
不刷新。