无关什么原因,如果你的vps系统还在使得 Centos 8,那么你一定多多少少会遇到无法更新包,或者无法安装包的问题。一般得到的错误提示都是failed to download, url not found, 404之类的错误。
一、发现Centos8不能正常更新包
最近要为Typecho 搭建的博客添加插件,ssh登录后发现 linux版本还是2017年的centos8精简版,连个wget命令都没有。
然而使用yum -y install wget
时,得到了无法找到包的错误提示,如下:
[root@li1722-200 plugins]# yum -y install wget
CentOS Linux 8 - AppStream 5.0 kB/s | 280 B 00:00
Errors during downloading metadata for repository 'appstream':
- Status code: 404 for http://mirrors.linode.com/centos/8/AppStream/x86_64/os/repodata/repomd .xml (IP: 2400:8902:1::8ba2:5ef6)
Error: Failed to download metadata for repo 'appstream': Cannot download repomd.xml: Cannot dow nload repodata/repomd.xml: All mirrors were tried
可以看到,本站使用的是Linode的服务器,而版本正是 Centos 8 的版本的linux系统。
使用命令更新时,得到404的错误提示,说找到repomd.xml。
二、产生无法更新包的原因
经过一翻搜索,发现原来Centos已经被淘汰了,估计Linode也不再支持8版本的Centos Linux系统,所以导致404错误的出现,
大体意思: Centos Linux 8 在 2021年12月31日,所有的服务已经不再被官方支持,要更新你的Centos,必须把地区定位到镜像服务中:CentOS Vault Mirror。
三、解决无法安装更新的办法
知道了原因,那么解决起来就简单多了,只要找到系统更新的请求源,替换掉源地址即可。
Linode 的 linux Centos8版本请求源使用的是 AppStream,找到相应的文件修改 baseurl=XXX
即可。
1.要修改的几个centos配置文件
具体的文件位置: /etc/yum.repos.d
目录,
CentOS-Linux-AppStream.repo
,==>baseurl = https://vault.centos.org/8.0.1905/AppStream/x86_64/os/
CentOS-Linux-BaseOS.repo
,==>baseurl = https://vault.centos.org/8.0.1905/BaseOS/x86_64/os/
CentOS-Linux-Extras.repo
,==>baseurl = https://vault.centos.org/8.0.1905/8-stream/extras/x86_64/os/
以CentOS-Linux-Extras.repo
文件为例,把原来的basurl注释掉,添加新的源
# CentOS-Linux-Extras.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client. You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.
[extras]
name=CentOS Linux $releasever - Extras
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirrors.linode.com/$contentdir/$releasever/extras/$basearch/os/
baseurl=https://vault.centos.org/8.0.1905/extras/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
2.过程中可可能踩的坑
A.上面提到的3个文件没修改完
源没改完,可能还是会出现404没找到源的问题,如下图,全部修改一遍即可。
B. 源错了可能出现No match for argument: wget
错误
3.更新源,Centos8即可 正常安装Wget
以下是成功安装wget命令的示例:
四、总结
虽然解决 Centos8 不能更新命令或安装包的方法确实简单,换个源就行了,但Centos 8不再支持更新也是事实。
服务器的好坏判断标准有一点很重要,那就是稳定, 补漏洞及时。
既然 Centos 8 已经不再被官方支持,那么换操作系统必须要提上日程了,这点各大服务商已经早就发邮件提醒过了。当然Linode也不例外,只是站长很少关注罢了。
官方的建议是通过几行代码升级到 Centos 8 stream版本,但还是挡不住网上骂声一片。对小本站来说,最好还是换个稳定的linux,如突然加大支持力度的ubuntu linux。