什么叫“ apt-get更新”?


86

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

Answers:


90

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

yum check-update

3
此命令使您可以确定是否有任何更新可用于已安装的软件包yum返回所有存储库中所有软件包更新的列表(如果有)。apt-get update刷新索引文件,但yum check-update不刷新。

如果yum最近已经运行过,这将不起作用,请参见其他一些替代方法的答案...
rogerdpack

29

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

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


1
我不明白第一句话。你可以改写吗?
tshepang

8
这意味着其他yum命令(例如,必要时yum upgrade将自动运行)yum check-update。换句话说,yum upgrade与基本上相同apt-get update; apt-get upgrade
Mikel

谢谢!百胜检查更新没有帮助我针对404错误。但是,yum makecache可以帮助您!非常感谢!
socketpair

最初是关于自动更新仓库数据以显示最新信息(apt-get没做,或者至少在2011年没做)。编辑后,它现在变得有点奇怪了
(。– James Antill

为什么不建议运行yum makecache?它在手册页中列出,并且看起来像apt-get update... 一样工作,还请注意,yum check-update并非总是执行刷新,请参见其他答案,FWIW :)
rogerdpack

21

不幸的是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 更长的时间。


2
不知道为什么这个答案在底部没有效果。这似乎是显而易见的简单答案。
cbmanica '18

2

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

yum makecache

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

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

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

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


这个现有的答案已经提到yum makecache; 也许您可以扩展答案以使其更有用,例如,通过解释为什么yum makecache不推荐或dnf等效的解释。
史蒂芬·基特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.