一台跑了五六年的 CentOS 7 服务器,某天执行 yum install,报 Cannot find a valid baseurl for repo: base/7/x86_64。网络没坏,是官方源在 2024 年 6 月 30 日之后停了。

CentOS 停止维护分两拨:CentOS 8 在 2021 年底就结束,CentOS 7 撑到 2024 年 6 月 30 日。到期之后官方不再发安全补丁,原来的镜像站陆续下线,软件源被挪到归档站 vault.centos.org,所以老机器一跑 yum 就容易报错。

先确认自己装的是哪个版本

执行 cat /etc/redhat-release,输出 CentOS Linux release 7.9.2009 就是 7,8.x 就是 8。再执行 yum repolist 看仓库状态,源全红或者报 404,基本可以确定是源没了。

临时把源指到归档站

应急办法是把 repo 文件里的 mirrorlist 注释掉,baseurl 改成 vault 上对应版本的路径,比如 7.9.2009 的 os 和 updates 目录。改完执行 yum clean all,再 yum makecache。归档站只有旧包,不会有新补丁,这只能让 yum 恢复能用,不等于系统还安全。

长期方案是换发行版

  • Rocky Linux、AlmaLinux:RHEL 的下游重建版,命令和目录结构跟 CentOS 接近,迁移成本低。
  • Oracle Linux:同样兼容 RHEL,官方提供免费源,用的人不少。
  • Debian、Ubuntu LTS:生态大,但包管理和配置文件位置要重新适应。
  • 直接买 RHEL 订阅:需要合规支持、要原厂服务的公司走这条。

CentOS Stream 是另一回事。它变成 RHEL 的上游开发分支,更新比 RHEL 早,稳定性定位和原来的 CentOS Linux 不一样,生产环境慎用。

迁移别想一步到位

老机器上跑着 PHP、MySQL、Nginx 的,先在新系统把版本对齐,再迁数据。PHP 5.6 那套在新版系统上装不回去,得连代码一起改。时间紧的话,先把有公网入口的服务挪走,内网机器排后面。

说到底,centos停止维护不是能不能继续用的问题,是敢不敢把没补丁的机器挂在公网的问题。内网隔离、不对外开端口的老系统可以再撑一阵,公网业务尽早换,别等哪天被扫出漏洞才动。