linux极简小知识:10、关于报错Repodata is over 2 weeks old. Install yum-cron? Or run: yum

3,976 阅读4分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

linux极简小知识:10、关于报错 Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast 提示的问题,及清理软件仓库缓存

关于使用yum安装软件时,提示 Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast

最开始以为这是一个错误,但后面测试,这只是一个提示信息

该提示的意思是:软件仓库数据老旧已超过2周(2周未更新),安装yum-cron或运行yum makecache fast

下面看看这个提示是什么意思,及如何解决?

介绍及原因

这是一个在使用yum命令时可能会遇到的问题。

YUM在 /var/cache/yum/$basearch/$releasever/ 目录中维护一个仓库相关信息的缓存。其中 $basearch$releasever 是 Yum 变量,指的是系统的基本架构和 Red Hat Enterprise Linux 的发行版本。

除了一些元数据,yum 还在安装软件包时将下载的软件包临时存储在此位置。成功安装软件包后,它们将从缓存目录中删除。

如果在一个服务器上数周以来都无法连接到活动的 yum 存储库服务器,那么当运行 yum 命令时,就将会看到此提示消息,指示 yum 缓存中存在过时的存储库条目。

这基本上意味着 yum 缓存目录不是最新的。

除了长时间无法连接到活动的仓库,当发生关机(时间较长,未必超过2周)、网络无法连接(检查网络设置情况)、服务器转移、镜像还原时,也会出现这个提示。

如果从使用 VPS 服务器或云服务器的旧服务器快照还原,也会触发旧 repodata 警告。这只是一个警告,表明可能没有为服务器获取当前版本的程序

如下,在安装一个指定的rpm包时,会有 Repodata 提示(后面的提示是,该包已经安装,并没有可更新的安装),

# yum localinstall https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
Loaded plugins: fastestmirror, langpacks
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
mysql80-community-release-el7-3.noarch.rpm               |  25 kB     00:00
Examining /var/tmp/yum-root-Rs4zcs/mysql80-community-release-el7-3.noarch.rpm: mysql80-community-release-el7-3.noarch
/var/tmp/yum-root-Rs4zcs/mysql80-community-release-el7-3.noarch.rpm: does not update installed package.
Nothing to do

解决包缓存老旧的提示问题

可以使用下面的方法解决这个消息提示:

方法1:Yum clean all

使用 yum clean all 清除整个yum缓存并重建。

# yum clean all
Loaded plugins: fastestmirror, langpacks
Cleaning repos: CityFan epel extras google-chrome mariadb mariadb5
              : mysql-connectors-community mysql-tools-community
              : mysql80-community os packages-microsoft-com-prod updates
Cleaning up everything
Cleaning up list of fastest mirrors

运行此命令后,当运行下一个 yum 相关命令时,将会再次填充 yum 缓存,并且也不会再看到“Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast”,因为 yum 现在可以访问 yum 缓存中的最新仓库元数据。

方法2:忽略并正常执行yum install命令

这是一个偷懒且很有效的方案,因为 Repodata is over 2 weeks old 消息只是一个提示,并不会影响使用。

当使用 yum install 安装软件包时,会自然而然的更新仓库缓存中的过期元数据。当更新后,将不会有该提示。

方法3:Yum makecache fast(此方法可能并不总是有效)

当执行各种 yum 查询(例如安装或更新软件包)时,yum 缓存将随着时间的推移自动建立,但是,也可以选择手动创建缓存,以便将来使用“makecache”参数更快地执行操作。通过在 yum makecache 命令的末尾添加关键字 fast ,将使其更快地填充 yum 缓存,并最终缓存更少的存储库。

# yum makecache fast
Loaded plugins: fastestmirror, langpacks
CityFan                                                  | 3.0 kB     00:00
epel                                                     | 4.7 kB     00:00
extras                                                   | 2.9 kB     00:00
google-chrome                                            | 1.3 kB     00:00
mariadb                                                  | 3.4 kB     00:00
mariadb5555555555555555555555555555555555555555555555555 | 2.9 kB     00:00
mysql-connectors-community                               | 2.6 kB     00:00
mysql-tools-community                                    | 2.6 kB     00:00
mysql80-community                                        | 2.6 kB     00:00
os                                                       | 3.6 kB     00:00
packages-microsoft-com-prod                              | 3.0 kB     00:00
updates                                                  | 2.9 kB     00:00
(1/2): epel/7/x86_64/updateinfo                            | 1.0 MB   00:00
(2/2): epel/7/x86_64/primary_db                            | 7.0 MB   00:01
Loading mirror speeds from cached hostfile
Metadata Cache Created

其他办法

除了上面的方法,还可以使用 yum-cron 定期刷新 yum 缓存。

yum-cron 包提供了一种方便的方式来自动检查、下载和应​​用更新。 yum-cron 包中的 cron job 在安装包后立即激活,无需额外配置。当每日 cron 作业设置为运行时,该作业将运行。

除此之外,还可以使用 yum update 命令更新所有的软件包,从而更新所有的缓存。

参考

主要参考翻译自RESOLVING YUM: REPODATA IS OVER 2 WEEKS OLD. INSTALL YUM-CRON? OR RUN: YUM MAKECACHE FAST