小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
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