Rocky Linux 9.4 与 CentOS 7.9 虽然都源自 Red Hat Enterprise Linux (RHEL) 体系,但两者在底层架构、包管理器、系统初始化方式以及网络配置上存在显著差异。简单来说,CentOS 7 代表的是上一代(System V/init)技术栈,而 Rocky Linux 9 代表的是新一代(Systemd/RPM-NG/SELinux 增强)技术栈。
以下是核心命令的区别对比及迁移指南:
1. 软件包管理工具(最核心的区别)
这是两者最大的不同点。CentOS 7 使用 yum,而 Rocky Linux 9 引入了 dnf 作为默认工具(尽管为了兼容性保留了 yum 软链接,但推荐优先使用 dnf)。
| 功能 | CentOS 7.9 (yum) | Rocky Linux 9.4 (dnf/yum) | 备注 |
|---|---|---|---|
| 安装软件 | yum install <pkg> |
dnf install <pkg> |
yum 在 RHEL9/RL9 中是 dnf 的别名 |
| 更新系统 | yum update |
dnf upgrade |
upgrade 比 update 更语义化,处理依赖更强 |
| 移除软件 | yum remove <pkg> |
dnf remove <pkg> |
行为一致 |
| 搜索软件 | yum search <keyword> |
dnf search <keyword> |
行为一致 |
| 清理缓存 | yum clean all |
dnf clean all |
行为一致 |
| 模块管理 | 无此概念 | dnf module list/enable/disable |
重要:RL9 引入 Module 机制管理多版本软件(如 Python, Node.js),需先了解模块状态 |
| 事务历史 | yum history |
dnf history |
支持更详细的回滚操作 (dnf history undo) |
注意:在 Rocky Linux 9 中,虽然输入
yum依然可用,但官方文档强烈建议使用dnf,因为dnf性能更好且支持更多高级特性(如模块化)。
2. 系统服务管理 (Systemd vs SysVinit)
CentOS 7 处于从 SysVinit 向 Systemd 过渡的末期,但很多脚本仍沿用旧习惯;Rocky Linux 9 则完全基于 Systemd。
| 功能 | CentOS 7.9 | Rocky Linux 9.4 | 备注 |
|---|---|---|---|
| 启动服务 | service httpd start / systemctl start httpd |
systemctl start httpd |
RL9 已废弃 service 命令(或仅作为极弱的兼容层),必须使用 systemctl |
| 设置开机自启 | chkconfig --level 3 httpd on |
systemctl enable httpd |
重大变化:CentOS 7 的 chkconfig 在 RL9 中不再用于常规服务控制 |
| 查看服务状态 | service httpd status |
systemctl status httpd |
推荐使用 systemctl |
| 重启服务 | service httpd restart |
systemctl restart httpd |
– |
3. 网络配置 (NetworkManager vs ifcfg-scripts)
CentOS 7 默认混合使用 NetworkManager 和传统的 /etc/sysconfig/network-scripts/ 接口配置文件;Rocky Linux 9 更加倾向于使用 nmcli 或 nmtui 进行统一管理,且不再默认生成传统网卡脚本文件。
| 功能 | CentOS 7.9 | Rocky Linux 9.4 | 备注 |
|---|---|---|---|
| 网络配置工具 | ifconfig (deprecated), ip, netcfg |
ip, nmcli, nmtui |
ifconfig 在 RL9 中可能未预装,需用 ip addr 替代 |
| 修改 IP (CLI) | 编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 |
nmcli con mod <name> ipv4.addresses ... |
RL9 推荐使用 nmcli 动态修改 |
| 应用配置 | service network restart |
nmcli connection up <name> |
不再使用 network 服务 |
| 防火墙工具 | iptables, firewalld (命令行) |
firewall-cmd, firewalld |
语法基本一致,但 RL9 默认启用 firewalld 且策略更严格 |
4. 文件系统与磁盘管理
Rocky Linux 9 默认文件系统为 XFS,且对 LVM 的管理更为现代化。
| 功能 | CentOS 7.9 | Rocky Linux 9.4 | 备注 |
|---|---|---|---|
| 挂载点 | /mnt 或手动挂载 |
/mnt |
无变化 |
| LVM 扩容 | lvextend + xfs_growfs |
lvextend + xfs_growfs |
命令相同,但 RL9 对 XFS 在线扩容支持更完善 |
| 快照管理 | lvs |
lvs |
无变化 |
| SELinux | setenforce 0, getenforce |
setenforce 0, getenforce |
语法相同,但 RL9 的 SELinux 策略更严格,默认模式通常为 Enforcing |
5. 用户与权限管理
| 功能 | CentOS 7.9 | Rocky Linux 9.4 | 备注 |
|---|---|---|---|
| 创建用户 | useradd, passwd |
useradd, passwd |
无变化 |
| 密码策略 | /etc/login.defs |
/etc/security/pwquality.conf |
RL9 默认启用更强的密码质量检查,直接 passwd 可能失败,需配置 pwquality |
| sudoers | visudo |
visudo |
无变化 |
6. 关键差异总结与迁移建议
如果您正在从 CentOS 7.9 迁移到 Rocky Linux 9.4,请注意以下“坑”:
- 弃用命令:不要在生产环境中依赖
service命令来管理服务,也不要依赖chkconfig。全部替换为systemctl。 - Python 环境:CentOS 7 自带 Python 2.7,而 Rocky Linux 9 默认只带 Python 3.9。千万不要尝试修改系统默认的 Python 版本来运行旧脚本,这会导致系统工具崩溃。应使用
virtualenv或容器化方案运行旧代码。 - 网络脚本:CentOS 7 的
/etc/sysconfig/network-scripts/ifcfg-*文件在 Rocky Linux 9 中不再是标准配置方式。如果需要静态 IP,建议使用nmcli或nmtui进行修改,或者确保安装了NetworkManager-config-server并理解其配置逻辑。 - Firewalld:CentOS 7 有时允许直接操作 iptables,但在 Rocky Linux 9 中,直接操作 iptables 可能会绕过 firewalld 规则导致意外阻断。请务必通过
firewall-cmd管理端口。 - 时间同步:CentOS 7 常用
ntpdate,而 Rocky Linux 9 推荐使用chronyd(由 systemd-timesyncd 或 chrony 守护进程管理),ntpdate已被移除或不推荐。
示例:迁移一个常见的运维场景
- 场景:安装 Nginx 并设置为开机自启。
- CentOS 7:
yum install nginx -y chkconfig nginx on service nginx start - Rocky Linux 9:
dnf install nginx -y systemctl enable nginx systemctl start nginx # 注意:如果提示找不到 nginx,可能需要先启用 EPEL 源或配置 AppStream/CoolStore
- CentOS 7:
总的来说,Rocky Linux 9.4 的命令风格更接近标准的现代 Linux 发行版(如 Debian/Ubuntu 的 systemd 体系),而 CentOS 7.9 保留了许多早期的 SysV 习惯。适应 dnf 和 systemctl 是平滑过渡的关键。
云知识CLOUD