Featured image of post CentOS 8 EOL 善后:换源 vault.centos.org、时间同步与时区设置

CentOS 8 EOL 善后:换源 vault.centos.org、时间同步与时区设置

CentOS 8 在 2021-12-31 EOL 后如何换源到 vault.centos.org、wlnmp 源做时间同步、timedatectl 改时区

一、为什么 2019 年要聊 CentOS 8

CentOS 8.0 正式发布是 2019-09-24——RHEL 8.0 GA 后的 CentOS 重建版。本文写于 2019-09-15,相当于 CentOS 8 正式发布前一周。但文章真正"管用"的时间是 2022 年 1 月 31 日之后——那天 CentOS 团队把 CentOS 8 的所有包从 mirror.centos.org 移到 vault.centos.org,已经装好的 CentOS 8 跑 yum 会全部报:

1
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

时间线

  • 2019-09-24:CentOS 8.0 GA
  • 2020-12-08:CentOS 宣布战略调整,CentOS 8 提前 EOL
  • 2021-12-31:CentOS 8 EOL(生命周期结束)
  • 2022-01-31:包从 mirror.centos.org 移到 vault.centos.org
  • 2021-05-12:Rocky Linux 8.3 RC1 发布
  • 2021-05-18:AlmaLinux 8.3 正式发布

新机器建议直接上 Rocky Linux 9 / AlmaLinux 9 / Oracle Linux 9——跟 CentOS 8 / 7 生态兼容,迁移成本最低。本篇只解决"已经上了 CentOS 8 又不想重装"的善后问题。

二、CentOS 8 EOL 后 yum 报错的修复

症状(2022-01-31 后):

1
2
sudo yum update
# Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

根因:CentOS 8 已经 EOL,包从 mirror.centos.org 移走,但 /etc/yum.repos.d/CentOS-*.repo 还指向 mirror.centos.org

2.1 一次性 sed 改源

1
2
sudo sed -i -e "s|mirrorlist=|#mirrorlist=|g" /etc/yum.repos.d/CentOS-*
sudo sed -i -e "s|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g" /etc/yum.repos.d/CentOS-*

这两条命令做的事:

  1. 把所有 mirrorlist= 注释掉(#mirrorlist=
  2. #baseurl=http://mirror.centos.org 替换成 baseurl=http://vault.centos.org

2.2 验证

1
2
3
sudo yum clean all
sudo yum makecache
sudo yum update

如果 vault.centos.org 也访问不到(更老的版本),可以临时改 https://mirrors.aliyun.com/centos-vault/8.x.x/... 阿里云镜像,但只限能联网的服务器

坑提醒vault.centos.org 没有 HTTPS-only 限制,但没有签名验证——意味着如果源被劫持,包可能被替换。生产环境建议尽快迁移到 Rocky/Alma/Oracle Linux

三、CentOS 8 的 dnf 包管理器

CentOS 8 弃用了 yum(虽然命令还能用),新工具是 dnf——兼容 yum 4.x 系列,大部分命令一致。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# 装包
sudo dnf install -y <package>

# 查包
dnf search <keyword>
dnf info <package>

# 列出已装
dnf list installed

# 卸包
sudo dnf remove <package>

# 仓库管理
sudo dnf config-manager --add-repo https://example.com/repo.repo
sudo dnf config-manager --set-enabled <repo-id>
sudo dnf config-manager --set-disabled <repo-id>

CentOS 8 默认有两个主仓库:

  • BaseOS:核心 OS 包(kernel、systemd、bash 等)
  • AppStream:应用流(多个 Python / Node.js 版本可并存)

应用流(Module)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 查可用 python 模块
sudo dnf module list python

# 装 Python 3.9(默认)
sudo dnf module install python39

# 切到 Python 3.6
sudo dnf module reset python
sudo dnf module enable python36
sudo dnf install python3

坑提醒dnf module 的"版本"切换是全系统的——切换后所有 dnf 装的 Python 都用这个版本。多 Python 版本请用 conda 或源码编译

四、时间同步:ntpdate / chrony

CentOS 7 用 ntpdate + crontab。CentOS 8 改用 chronychronyd daemon),开机自启:

1
2
3
4
5
systemctl status chronyd
# Active: active (running)

chronyc sources -v
# 查 NTP 源状态

4.1 想用回 ntpdate 风格

2019-2020 那段时间国内服务器常用 wlnmp 源https://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm)一次性装 wntp

1
2
3
rpm -ivh https://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm
dnf install wntp
ntpdate ntp1.aliyun.com

坑提醒wlnmp-release 包没有 GPG 签名验证——商用生产环境慎用,仅适合临时调试。

4.2 配阿里云 NTP

1
2
3
4
5
6
7
8
9
vi /etc/chrony.conf
# 注释掉默认的 pool,改成阿里云
# pool 2.centos.pool.ntp.org iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst

systemctl restart chronyd
chronyc sources -v

五、时区设置

timedatectl 是 CentOS 7+ 标准的时区工具。

5.1 看当前时区

1
2
3
4
5
6
7
8
timedatectl status
#  Local time: Thu 2026-06-04 12:34:56 CST
#  Universal time: Thu 2026-06-04 04:34:56 UTC
#        RTC time: Thu 2026-06-04 04:34:56
#       Time zone: Asia/Shanghai (CST, +0800)
#     NTP enabled: yes
# NTP synchronized: yes
#  RTC in local TZ: no

5.2 改时区

1
2
3
sudo timedatectl set-timezone Asia/Shanghai
date
# Thu Jun  4 12:34:56 CST 2026

5.3 列出所有时区

1
2
3
4
5
6
timedatectl list-timezones | grep Asia
# Asia/Shanghai
# Asia/Hong_Kong
# Asia/Tokyo
# Asia/Singapore
# ...

5.4 手动改时间(一般不要)

1
sudo timedatectl set-time '2026-06-04 12:34:56'

改完时间记得 hwclock --systohc 把系统时间写回硬件时钟,否则重启就丢。

六、CentOS 8 → Rocky / AlmaLinux 迁移

如果想保住 CentOS 8 的环境又不想重装,官方提供 migrate2rocky / almalinux-deploy 脚本:

1
2
3
4
5
6
# Rocky Linux 迁移
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
chmod +x migrate2rocky.sh
sudo bash migrate2rocky.sh -r
# 重启
sudo reboot
1
2
3
4
# AlmaLinux 迁移
sudo dnf install -y almalinux-deploy
sudo almalinux-deploy
sudo reboot

坑提醒:迁移脚本会改一堆包,包括内核、grub、repo。迁移前一定要做快照(云盘 / LVM 快照),回退成本高。

七、典型坑速查

现象原因处理
yum update 报 “No URLs in mirrorlist”CentOS 8 EOL 后 mirror.centos.org 失效走 §2.1 sed 改源
dnf install 报包冲突Module 多版本并存dnf module reset <mod> 再装
chronyc sources 显示 ??NTP 服务器不可达chrony.conf 加阿里云 NTP
时间不准没装 chronyd / 时区不对装 chronyd + timedatectl set-timezone
迁移 Rocky 失败网络 / 仓库访问配阿里云 Vault 源后重试

八、下一步

  • 想从 CentOS 8 直接迁到 Rocky 9 / Alma 9 → 走 migrate2rocky 或重装(重装最稳
  • 想继续留 CentOS 7 → 7 已 2024-06-30 EOL,尽快迁出
  • 想换更现代的发行版 → Ubuntu 22.04 LTS / Debian 12
  • 想学 K8s 时间同步最佳实践 → 容器里别用宿主机的本地时间,用 NTP 或 sidecar

参考资料


2024 视角:CentOS 8 时代早已过去,Rocky / Alma 9 才是"未来"

本文写于 2019-09-15(CentOS 8 GA 前一周),2024 视角下 CentOS 8 已 EOL 3 年。本文的方法在 vault 源上仍管用,但新项目早应该迁到 Rocky / Alma 9

一、CentOS 8 EOL 时间线回顾

  • 2019-09-24:CentOS 8.0 GA
  • 2020-12-08:CentOS 战略调整公告(CentOS 8 提前 EOL,CentOS 转向 Stream)
  • 2021-12-31:CentOS 8 EOL(生命周期结束,比原计划 2029-05 提前 7.5 年)
  • 2022-01-31:包从 mirror.centos.org 移到 vault.centos.org
  • 2024-06-30:CentOS 8 走完 6 个月的 ELS(Extended Lifecycle Support)

2024 视角CentOS 8 完全没有安全更新——必须迁出

二、vault.centos.org 2024 状态

  • 2024-06-30 后:vault.centos.org 仍可访问,但仅供归档查询
  • 生产环境仍用 CentOS 8 = 裸奔在公网
  • 不推荐继续用 vault.centos.org 做生产源——无 GPG 签名验证(包可能被劫持)。

三、dnf 包管理器的"2024 现状"

2019 那篇介绍了 CentOS 8 的 dnf 4.x。2024 视角

  • dnf 5(2024-03 在 Fedora 40 首次 GA,RHEL 9.4+ 默认)—— 完全重写
    • 基于 libsolv(比 dnf 4 的 hawkey 快 10 倍)
    • Python 3.12+ 替代 Python 3.6
    • 新命令dnf install 改成 dnf install(不变)但有 dnf5 install
    • 更严格的依赖解析
1
2
3
4
5
6
7
# 2024 dnf 5 用法
dnf5 --version
# 5.1.12

dnf5 install nginx
dnf5 remove nginx
dnf5 search python

四、chrony 在 2024 仍是 NTP 默认

2019 那篇的 chrony 配置 2024 仍管用。2024 新增

  • chrony 4.5+(2024-02 起):支持 NTS(Network Time Security)—— 加密的 NTP 协议。
1
2
3
4
# /etc/chrony.conf
# 启用 NTS
ntsserver ntp1.aliyun.com
ntsserver time.cloudflare.com
  • NTS 比传统 NTP 更安全(防中间人篡改时间)。

五、timedatectl 的"现代"用法

2019 那篇给的 timedatectl set-timezone Asia/Shanghai 2024 仍管用。2024 增强

  • NTP 同步 + RTC 同步
1
2
3
4
5
6
7
8
# 看同步状态
timedatectl show-timesync
# SystemNTPServers=ntp1.aliyun.com
# SystemNTPSynchronized=yes
# RTCInLocalTZ=no

# 强制 RTC 用 UTC(避免时区混乱)
timedatectl set-local-rtc 0

六、CentOS Stream 8 → Rocky / Alma 8 的迁移

2019 那篇只是"保留旧系统"。2024 主流

  • migrate2rocky.sh 脚本(Rocky Linux 官方):
1
2
3
4
5
6
7
8
9
# CentOS Stream 8 → Rocky Linux 8
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh
chmod +x migrate2rocky.sh
sudo bash migrate2rocky.sh -r

# 重启
sudo reboot
uname -r
# Rocky Linux 8.x
  • almalinux-deploy 脚本(AlmaLinux 官方):
1
2
sudo dnf install -y almalinux-deploy
sudo almalinux-deploy

七、CentOS Stream 的"真实价值"

  • 2019 那篇 CentOS Stream 8 还没出。
  • CentOS Stream 8/9(2021+):RHEL 的"上游开发版"—— 比 RHEL 早 1-2 个 minor 版本。
  • 2024 视角
    • 生产环境不用 CentOS Stream(不稳定),用 Rocky / Alma 9。
    • 开发环境:CentOS Stream 9 可以体验"未来 RHEL"。
    • CI/CD 测试RHEL UBI(Universal Base Image,2020+)—— 在容器里跑 RHEL。

八、AlmaLinux / Rocky / Oracle 三选一

  • Rocky Linux:CIQ 公司主导,社区最活跃
  • AlmaLinux:CloudLinux 公司主导,外企用得多
  • Oracle Linux:Oracle 公司主导,企业级支持UEK 内核自研)。
  • 2024 市场份额
    • Rocky Linux ~ 35%
    • AlmaLinux ~ 30%
    • Oracle Linux ~ 20%
    • CentOS Stream ~ 15%

九、CentOS 8 的"运维遗物":dnf module

2019 那篇提到 dnf module2024 状态

  • dnf module 在 Rocky / Alma 9 仍存在(继承自 RHEL 8 AppStream)。
  • 2024 趋势pyenv / conda / uv 装 Python,不用 dnf module install python39
  • 应用流(Module)示例(2024 仍可用):
1
2
3
4
# Node.js 多版本(dnf module)
dnf module list nodejs
dnf module enable nodejs:18
dnf install nodejs

十、CentOS 8 EOL 后的"实践教训"

  • 2019 → 2024 五年间,CentOS 经历了:
    • GA(2019-09)
    • 战略调整(2020-12)
    • 提前 EOL(2021-12)
    • 完全归档(2024-06)
  • 教训
    • 不要把生产系统"绑死"在单一发行版—— 用 Docker / 容器化
    • 订阅 Red Hat商业支持(Alma / Rocky / Oracle)—— 别用"免费无支持"的 CentOS
    • 新项目永远用"未来 5 年有支持"的发行版
    • 2024 推荐
      • 服务器:Rocky / Alma / Oracle 9(支持到 2027-2029)
      • 桌面 / 开发:Ubuntu 24.04 LTS(支持到 2029-04)
      • 容器:Distroless / Alpine / UBI(无 OS 依赖)
使用 Hugo 构建
主题 StackJimmy 设计