一、为什么 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 会全部报:
| |
时间线:
- 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 后):
| |
根因:CentOS 8 已经 EOL,包从 mirror.centos.org 移走,但 /etc/yum.repos.d/CentOS-*.repo 还指向 mirror.centos.org。
2.1 一次性 sed 改源
| |
这两条命令做的事:
- 把所有
mirrorlist=注释掉(#mirrorlist=) - 把
#baseurl=http://mirror.centos.org替换成baseurl=http://vault.centos.org
2.2 验证
| |
如果 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 系列,大部分命令一致。
| |
CentOS 8 默认有两个主仓库:
BaseOS:核心 OS 包(kernel、systemd、bash 等)AppStream:应用流(多个 Python / Node.js 版本可并存)
应用流(Module)
| |
坑提醒:
dnf module的"版本"切换是全系统的——切换后所有 dnf 装的 Python 都用这个版本。多 Python 版本请用 conda 或源码编译。
四、时间同步:ntpdate / chrony
CentOS 7 用 ntpdate + crontab。CentOS 8 改用 chrony(chronyd daemon),开机自启:
| |
4.1 想用回 ntpdate 风格
2019-2020 那段时间国内服务器常用 wlnmp 源(https://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm)一次性装 wntp:
| |
坑提醒:
wlnmp-release包没有 GPG 签名验证——商用生产环境慎用,仅适合临时调试。
4.2 配阿里云 NTP
| |
五、时区设置
timedatectl 是 CentOS 7+ 标准的时区工具。
5.1 看当前时区
| |
5.2 改时区
| |
5.3 列出所有时区
| |
5.4 手动改时间(一般不要)
| |
改完时间记得
hwclock --systohc把系统时间写回硬件时钟,否则重启就丢。
六、CentOS 8 → Rocky / AlmaLinux 迁移
如果想保住 CentOS 8 的环境又不想重装,官方提供 migrate2rocky / almalinux-deploy 脚本:
| |
| |
坑提醒:迁移脚本会改一堆包,包括内核、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
参考资料
- CentOS 8 EOL 公告
- vault.centos.org 镜像
- Rocky Linux 官网
- AlmaLinux 官网
- Chrony 文档
- Red Hat: Configuring NTP with chrony
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 - 更严格的依赖解析
| |
四、chrony 在 2024 仍是 NTP 默认
2019 那篇的 chrony 配置 2024 仍管用。2024 新增:
- chrony 4.5+(2024-02 起):支持 NTS(Network Time Security)—— 加密的 NTP 协议。
| |
- NTS 比传统 NTP 更安全(防中间人篡改时间)。
五、timedatectl 的"现代"用法
2019 那篇给的 timedatectl set-timezone Asia/Shanghai 2024 仍管用。2024 增强:
- NTP 同步 + RTC 同步:
| |
六、CentOS Stream 8 → Rocky / Alma 8 的迁移
2019 那篇只是"保留旧系统"。2024 主流:
- migrate2rocky.sh 脚本(Rocky Linux 官方):
| |
- almalinux-deploy 脚本(AlmaLinux 官方):
| |
七、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 module。2024 状态:
dnf module在 Rocky / Alma 9 仍存在(继承自 RHEL 8 AppStream)。- 2024 趋势:用
pyenv/conda/uv装 Python,不用dnf module install python39。 - 应用流(Module)示例(2024 仍可用):
| |
十、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 依赖)
