我的系统是 centos 8.0,升级使用 dnf update 时,提示:
Failed to synchronize cache for repo appstream。
1、先试试网络正常么:
ping google.com
有接收到数据,证明网络没问题。
2、导致该问题原因常见的有3个:
- 时间日期不正确
- 老旧或失效的 DNF 缓存
- CentOS baseURL
第一个原因的解决:# timedatectl
# timedatectl set-timezone "Asia/Shanghai"
第二个的解决:# dnf clean all
# rm -rf /var/cache/dnf
第三个的解决:因为 centos 8 在 2021年底,更新就不支持了,所有找不到升级源。修改为 vault.centos.org 镜像。
执行下面的命令:
# cd /etc/yum.repos.d/
# sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
# sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
现在试试 dnf upgrade 可以找到更新源了。把 centos 8.0 升级到 8.5 了。
# cat /etc/redhat-release
CentOS Linux release 8.5.2111
解决了。不过只是修改了缓冲区的url,要不,你重启后,再次跟新时,会出现:
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist。
这样的错误的。
要一直有效,就采用下面的修改文件方式:
# cd /etc/yum.repos.d
# vi CentOS-Linux-BaseOS.repo
添加一行内容:baseurl=https://vault.centos.org/centos/$releasever/BaseOS/$basearch/os/
保存退出。
对 CentOS-Linux-AppStream.repo 也添加和上面同样的一行。
对 CentOS-Linux-PowerTools.repo 添加下面这行:
baseurl=https://vault.centos.org/centos/$releasever/PowerTools/$basearch/os/
最后执行以下
# dnf clean all
清理一下缓存,否则不生效的。