關鍵詞:CentOS6 官方中止維護更新 源倉庫失效 yum源失效 yum安裝報錯 yum更新報錯 [Errno 256] [Errno 14] [404 Not Found] 阿里鏡像源報錯失效 網易鏡像源報錯失效 epel CentOS5vim
背景:在進行服務器系統安全類問題更新時,yum update 更新發現報錯以下centos
[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。服務器
解決建議:性能
一、最安全:升級CentOS系統版本改用CentOS7或8.this
二、若生產環境對安全問題(如漏洞更新補丁等)要求不是很嚴格,可用官網的舊版存檔 https://vault.centos.org/ 先頂一段時間,該舊版存檔源由開發者維護而不是官方了,因此一些安全更新等 偶爾 可能 會不是很及時,且在國外下載獲取速度相對慢一點點。下面給出該方法具體:url
1)查看當前系統版本後面會用 cat /etc/issuespa
[root]# cat /etc/issue CentOS release 6.10 (Final) Kernel \r on an \m [root]#
2)修改源倉庫文件(先備份再操做!).net
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 開頭的行,案例以下code
[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。至此,結束。
小夥伴們若有更好解決方式或發現錯誤,歡迎來評論補充或糾正~~~謝謝 (^ - ^ )
技術顧問:個人朋友大佬牙哥~
參考文章:
一、https://blog.csdn.net/CyanSkye/article/details/70045761 做者:CyanSkye
二、https://blog.51cto.com/xiaocao13140/2105528 這是轉載最先的文章,原做者找不到了