在CentOS 8 上執行命令 sudo yum update 時報錯:
[root@VM-24-13-centos ~]# sudo yum update
Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/CentOS- Epel.repo; Configuration: OptionBinding with id "failovermethod" does not exist
CentOS Linux 8 - AppStream 91 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
事實上我上面是報的兩個錯誤,我們一個個來解決:
第一個問題:
Configuration: OptionBinding with id "failovermethod" does not exist
看報錯我們知道是/etc/yum.repos.d/CentOS-Epel.repo 文件中的 failovermethod=priority 出現問題,我們找到這個文件,對這個字段進行注釋:
vim /etc/yum.repos.d/CentOS-Epel.repo
第二個問題:
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
在這個問題上我卡了幾乎一個下午,網上有各種解決方案,我整理了一下,逐步排查即可:
-
查看CentOS 8 所在服務器網絡是否出現問題,可以用
ping www.baidu.com進行測試。 -
網絡沒問題就看對應的軟件源是否出現問題,具體排查
/etc/yum.repos.d目錄下這三個文件:CentOS-Base.repoCentOS-AppStream.repoCentOS-Extras.repo
如果上述三個文件中含有 mirrorlist 字段,將這些字段進行注釋,並將 baseurl 修改為國內的軟件源,阿里雲
baseurl=https://mirrors.aliyun.com/centos/$releasever/BaseOS/$basearch/os/或者騰訊雲baseurl=https://mirrors.tencentyun.com/centos/$releasever/BaseOS/$basearch/os/ -
如果前兩個方法都沒有解決,說明不是源的問題,查了好久看到這篇帖子:https://techglimpse.com/failed-metadata-repo-appstream-centos-8/
-
CentOs Linux 8 從 2021.12.31 號后已經停止維護,所以之后更新鏡像需要通過
vault.centos.org來獲取更新。
-
所以需要修改軟件源mirrors 地址,具體操作如下:
# 進入yum.repos.d 目錄下 cd /etc/yum.repos.d/ # 修改源鏈接 sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* # 要將之前的mirror.centos.org 改成 vault.centos.org sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
-
其實上述報錯就是軟件源配置的問題,經過上述步驟細心排查基本能解決。
