it-swarm.cn

什么叫“ apt-get更新”?

Debian的apt-get update获取并更新包索引。因为我已经习惯了这种处理方式,所以我很惊讶地发现yum update完成所有and升级系统。这让我很好奇如何在不安装任何内容的情况下更新包索引。

99
tshepang

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

yum check-update
98
wag

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

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

31
James Antill

不幸的是,默认情况下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

这意味着检查更新not正在执行更新,就像apt-get update一样。

通过运行 thisyum 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更长的时间。

23
rogerdpack

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

yum makecache

使用Yum缓存 ,这似乎是您要查找的命令。

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

但是,在Ansible剧本中可能至少存在一个用例,因为Ansible剧本中没有办法只更新缓存而不安装任何软件包(请参阅Ansible问题 461 =和 40068 ,这似乎在2.8版中已修复 4618 )。 Ansible yum模块要求“ update_cache:yes”选项的软件包名称有效。因此,作为替代的“命令:yum makecache”可以在剧本中使用。

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

2
Tufan K