无关什么原因,如果你的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 8 因版本太旧无法安装或更新包的问题

大体意思: 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没找到源的问题,如下图,全部修改一遍即可。

解决Centos 8 因版本太旧无法安装或更新包的问题

B. 源错了可能出现No match for argument: wget错误解决Centos 8 因版本太旧无法安装或更新包的问题

3.更新源,Centos8即可 正常安装Wget

解决Centos 8 因版本太旧无法安装或更新包的问题

以下是成功安装wget命令的示例:

解决Centos 8 因版本太旧无法安装或更新包的问题

四、总结

虽然解决 Centos8 不能更新命令或安装包的方法确实简单,换个源就行了,但Centos 8不再支持更新也是事实。

服务器的好坏判断标准有一点很重要,那就是稳定, 补漏洞及时

既然 Centos 8 已经不再被官方支持,那么换操作系统必须要提上日程了,这点各大服务商已经早就发邮件提醒过了。当然Linode也不例外,只是站长很少关注罢了。

官方的建议是通过几行代码升级到 Centos 8 stream版本,但还是挡不住网上骂声一片。对小本站来说,最好还是换个稳定的linux,如突然加大支持力度的ubuntu linux。