什么是 yum 相当于“apt-get update”?

tsh*_*ang 122 yum apt package-management

Debianapt-get update获取并更新包索引。因为我已经习惯了这种做事方式,所以我惊讶地发现它可以yum update完成所有这些升级系统。这让我很好奇如何在不安装任何东西的情况下更新包索引。

wag*_*wag 113

check-update命令将刷新包索引并检查可用更新:

yum check-update
Run Code Online (Sandbox Code Playgroud)

  • 此命令允许您确定 **已安装的软件包** 是否有任何更新可用。`yum` 返回所有存储库中所有软件包更新的列表(如果有)。`apt-get update` 刷新索引文件,但 `yum check-update` 不会。 (6认同)
  • 如果最近已经运行了 `yum`,这将不起作用,请参阅其他一些替代答案... (3认同)

Jam*_*ill 43

虽然yum check-update将检查已安装软件包的更新,如果需要刷新,大多数其他命令也会如此。

严格等同于的命令apt-get updateyum makecache...但是通常不建议在 yum 中直接运行该命令。

  • 这意味着其他 `yum` 命令,例如 `yum upgrade` 会在必要时自动运行 `yum check-update`。换句话说,`yum upgrade` 与`apt-get update 基本相同;apt-get 升级`。 (13认同)
  • 我不明白第一句话。你能重新表述一下吗? (2认同)
  • 为什么不推荐运行`yum makecache`?它列在手册页中,似乎像 `apt-get update` 一样工作......还请注意,`yum check-update` 并不总是执行刷新,请参阅其他答案,FWIW :) (2认同)
  • @rogerdpack 我从未听说过反对“yum makecache”的建议。我认为很多人只是说不值得运行它;因为,如果缓存是旧的或过期的,则 yum 会在任何可能修改系统的命令之前更新缓存。所以`yum makecache`将使接下来的命令更快;但是,如果您忘记了它,那么“yum check-update”也会在检查更新之前更新缓存。 (2认同)
  • 因为它几乎总是会做比需要的更多的工作。yum 中有很多逻辑可以自动更新元数据,而无需用户手动运行元数据同步命令。自从提出这个问题以来,可能有数百行代码。甚至,“yum clean expire-cache”可能是在提出这个问题后添加的。 (2认同)

rog*_*ack 29

不幸的是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
Run Code Online (Sandbox Code Playgroud)

这意味着 check-update不会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 xxxFWIW需要更长的时间(?)

  • 不知道为什么这个答案在底部萎靡不振。这似乎是显而易见而简单的答案。 (3认同)

Tuf*_*n K 9

这是更新本地缓存的命令,因此

yum makecache
Run Code Online (Sandbox Code Playgroud)

根据使用 Yum 缓存,似乎是您正在寻找的命令。

通常您不需要直接运行此命令,因为 yum 已经根据 yum.conf 中的metadata_expire 值检查并刷新元数据,默认值为 6 小时。

然而,可能至少有一个用例,在 Ansible playbook 中,因为在 Ansible playbook 中没有一种方法可以只更新缓存而不安装任何包(请参阅 Ansible issues 3346140068,这似乎在版本 2.8, 46183中修复)。Ansible yum 模块需要“update_cache: yes”选项的包名称才能生效。因此,作为替代方案,可以在剧本中使用“命令:yum makecache”。

dnf 还有一个 makecache 命令,尽管也可以使用 --refresh 开关强制元数据同步。