關鍵詞:CentOS6 官方停止維護更新 源倉庫失效 yum源失效 yum安裝報錯 yum更新報錯 [Errno 256] [Errno 14] [404 Not Found] 阿里鏡像源報錯失效 網易鏡像源報錯失效 epel CentOS5
背景:在進行服務器系統安全類問題更新時,yum update 更新發現報錯如下
[Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found" Trying other mirror. To address this issue please refer to the below wiki article https://wiki.centos.org/yum-errors If above article doesn't help to resolve this issue please use https://bugs.centos.org/.
重新設置 yum 源后,用官方、阿里、網易等的源都是仍然報這個錯。
換個思路,可能是源發生變更了,在查詢CentOS官網產品信息(https://wiki.centos.org/zh/About/Product)后發現果然,CentOS6源倉庫於2020.11.30停止維護更新了(CentOS5早在2017年初就停了),被移除了,因國內各大鏡像源是同步的所以也都失效了。下面官方信息截圖於2020.12.29。
解決建議:
1、最安全:升級CentOS系統版本改用CentOS7或8或更高版本.
2、若生產環境對安全問題(如漏洞更新補丁等)要求不是很嚴格,可用官網的舊版存檔 https://vault.centos.org/ 先頂一段時間,該舊版存檔源由開發者維護而不是官方了,所以一些安全更新等 偶爾 可能 會不是很及時,且在國外下載獲取速度相對慢一點點。下面給出該方法具體:
1)查看當前系統版本后面會用 cat /etc/issue
[root]# cat /etc/issue CentOS release 6.10 (Final) Kernel \r on an \m [root]#
2)修改源倉庫文件(先備份再操作!)
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup // 備份文件
vim /etc/yum.repos.d/CentOS-Base.repo // 編輯文件
將內容中原來阿里或網易等鏡像的 url 鏈接改為 https://vault.centos.org/ ,若用的是原來 mirrorlist 源,就把 mirrorlist 開頭的行注釋掉在旁邊新添加 baseurl 開頭的行,案例如下
[base] name=CentOS-$releasever - Base baseurl=http://vault.centos.org/$releasever/os/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #released updates [updates] name=CentOS-$releasever - Updates baseurl=http://vault.centos.org/$releasever/updates/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras baseurl=http://vault.centos.org/$releasever/extras/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus baseurl=http://vault.centos.org/$releasever/centosplus/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus gpgcheck=1 enabled=0 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib baseurl=http://vault.centos.org/$releasever/contrib/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib gpgcheck=1 enabled=0 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
注:若是CentOS5,還要將其中幾行 gpgkey=......KEY-CentOS-6 行末的 6 都改為 5 。
這時,若版本號就是6,不是6.2或6.10等有小數點后綴的版本號,保存后運行 yum clean 然后 yum makecache 一般沒問題,否則仍可能報錯,下面繼續。
3)若上步后仍然報錯,就是URL中的變量 \$releasever 值問題,報錯提示網址404,網址路徑不對應。\$releasever 得到的值是發行版本號的整數,無小數點,查看命令 rpm -qi centos-release 顯示列表中 Version 值便是。若 系統實際 版本號是有小數點后綴的,可直接把 CentOS-Base.repo 文件內容中幾行 baseurl 開頭行中的 $releasever 替換為有小數點的版本號,我的版本號是6.10,替換結果如下(記得先備份文件或注釋原有行復制粘貼新行再修改!):
[base] name=CentOS-$releasever - Base baseurl=http://vault.centos.org/6.10/os/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #released updates [updates] name=CentOS-$releasever - Updates baseurl=http://vault.centos.org/6.10/updates/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #additional packages that may be useful [extras] name=CentOS-$releasever - Extras baseurl=http://vault.centos.org/6.10/extras/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras gpgcheck=1 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus baseurl=http://vault.centos.org/6.10/centosplus/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus gpgcheck=1 enabled=0 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6 #contrib - packages by Centos Users [contrib] name=CentOS-$releasever - Contrib baseurl=http://vault.centos.org/6.10/contrib/$basearch/ #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=contrib gpgcheck=1 enabled=0 gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
保存運行 yum clean 然后 yum makecache 再 yum update。
4)若仍然報錯,多半是因為設置了 epel 項目,報錯中提示epel中的網址404,文件路徑 /etc/yum.repos.d/epel.repo,epel項目維護跟隨官方,所以也停止了維護被移除了。
啥是epel? 如果既想獲得 RHEL 的高質量、高性能、高可靠性,又需要方便易用(關鍵是免費)的軟件包更新功能,那么 Fedora Project 推出的 EPEL(Extra Packages for Enterprise Linux)正好適合。EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社區打造,為 RHEL 及衍生發行版如 CentOS、Scientific Linux 等提供高質量軟件包的項目。
這里將 epel.repo 文件重新命名為 epel.repo.back 讓epel找不到文件不去找額外包即可,也可直接刪除該文件但不推薦。
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
然后運行 yum clean 然后 yum makecache 再 yum update。至此,結束。
小伙伴們如有更好解決方式或發現錯誤,歡迎來評論補充或糾正~~~謝謝 (^ - ^ )
技術顧問:我的朋友大佬牙哥~
參考文章:
1、https://blog.csdn.net/CyanSkye/article/details/70045761 作者:CyanSkye
2、https://blog.51cto.com/xiaocao13140/2105528 這是轉載最早的文章,原作者找不到了