CentOS Stream 9 新鲜出炉:不止是换个版本号,这些变化你必须知道!


嘿,各位开发者和运维小伙伴们,大新闻!CentOS Stream 9 已经正式发布了。你可能会想:“哦,又一个新版本而已嘛。” 欸,这次可真不一样!CentOS Stream 9 不仅仅是版本号的升级,它背后代表着一种开发模式的转变,并且带来了一大波激动人心的新功能和变化。

简单来说,CentOS Stream 不再是 RHEL (Red Hat Enterprise Linux) 的下游复刻版,而是变成了 RHEL 的上游开发版。 这意味着,我们在 CentOS Stream 9 上看到的新功能,就是未来 RHEL 9 的样子。 它变成了一个滚动更新的发行版,让我们能更早地接触到企业级 Linux 的最新技术。

对于喜欢尝鲜、希望与 RHEL 生态保持同步的开发者和运维人员来说,这绝对是个好消息。但这也意味着它可能不像以前的 CentOS Linux 那样适合需要极度稳定、数年不动的生产环境。

好了,闲话不多说,让我们撸起袖子,看看 CentOS Stream 9 到底给我们带来了哪些“硬核”更新!

1. 内核与工具链:打好坚实的基础

操作系统的核心就是内核和工具链,这块的升级是重中之重。

  • Linux 内核 5.14: CentOS Stream 9 搭载了 Linux 5.14 内核。 新内核带来了对最新硬件更好的支持、性能优化以及一堆新特性。
  • GCC 11 & Glibc 2.34: 编译器和标准库也全面升级,现在默认使用 GCC 11.2 和 Glibc 2.34。 这意味着我们可以使用更多现代 C++ 的新特性,并且能获得更好的编译性能。
  • cgroup v2 成为默认: 控制组(cgroup)v2 现在是默认的资源管理方式。 相比 v1,它提供了更统一、更清晰的资源控制模型,无论是限制 CPU、内存还是 I/O,都变得更加简单。

案例:体验新的 C++ 特性

得益于 GCC 11,我们可以轻松使用 C++20 的一些特性。比如,写一个简单的程序来感受一下:

// hello.cpp
#include <iostream>
#include <string>
#include <span>

void print_strings(std::span<const std::string> strings) {
    for (const auto& s : strings) {
        std::cout << s << " ";
    }
    std::cout << std::endl;
}

int main() {
    std::string messages[] = {"Hello,", "CentOS", "Stream", "9!"};
    print_strings(messages);
    return 0;
}

现在,我们用新版的 g++ 来编译它:

# 安装必要的开发工具
sudo dnf install gcc-c++

# 编译 C++20 代码
g++ -std=c++20 -o hello hello.cpp

# 运行
./hello

输出将会是:Hello, CentOS Stream 9!。这个 std::span 就是 C++20 带来的新东西,在以前的老版本编译器里可没这么方便。

2. 开发者狂喜:语言和工具集全面升级

如果你是开发者,那这部分绝对会让你兴奋。几乎所有的主流编程语言和工具都更新到了一个非常现代的版本。

  • Python 3.9: Python 3.9 成为了系统默认的 Python 版本,并且官方彻底移除了 Python 2。 是时候和历史遗留问题说再见了!
  • PHP 8.0: 带来了 JIT 编译器等大量性能改进和新语法。
  • Node.js 16: 提供了最新的 V8 JavaScript 引擎和稳定的 API。
  • Ruby 3.0: 性能和并发能力都有了显著提升。
  • OpenJDK 17: 使用最新的 Java 长期支持(LTS)版本。
  • 数据库: MariaDB 10.5, MySQL 8.0, PostgreSQL 13, Redis 6.2。
  • Web 服务器: Nginx 1.20, Apache httpd 2.4.48。

案例:感受 Python 3.9 的新语法

Python 3.9 带来了一个很方便的特性:字典合并操作符 |

# a.py
dict1 = {"name": "CentOS Stream", "version": 8}
dict2 = {"version": 9, "status": "awesome"}

# 使用新的合并操作符
merged_dict = dict1 | dict2
print(merged_dict)```

直接在 CentOS Stream 9 的终端里运行:

```bash
python3 a.py

你会得到输出:{'name': 'CentOS Stream', 'version': 9, 'status': 'awesome'}。是不是比以前用 update() 方法或者字典解包 ** 更简洁直观了?

3. 网络管理大变天:告别 ifcfgiptables

注意!这块的变化对系统管理员来说非常重要,以前的很多习惯可能要改改了。

  • network-scripts 被移除: 经典的 /etc/sysconfig/network-scripts/ifcfg-* 配置文件和 ifup/ifdown 命令正式退役。现在,网络配置完全由 NetworkManager 接管。
  • iptables-nft 被弃用: 虽然 iptables 命令还能用(通过 iptables-nft 这个兼容层),但官方已经明确表示不推荐了。新的防火墙标准是 nftables

案例 1:使用 nmcli 配置静态 IP

忘记修改 ifcfg-eth0 文件吧,现在我们用命令行工具 nmcli 来搞定。

# 假设你的网卡名是 eth0

# 1. 查看设备连接名
nmcli connection show

# 2. 修改连接配置,设置静态 IP (假设连接名是 'Wired connection 1')
sudo nmcli connection modify 'Wired connection 1' \
    ipv4.method manual \
    ipv4.addresses 192.168.1.100/24 \
    ipv4.gateway 192.168.1.1 \
    ipv4.dns "8.8.8.8,1.1.1.1"

# 3. 重新加载连接使其生效
sudo nmcli connection up 'Wired connection 1'

# 4. 验证配置
ip addr show eth0

nmcli 功能非常强大,虽然初看起来有点复杂,但熟悉之后会比手动改配置文件高效得多。

案例 2:用 nftables 替换一个 iptables 规则

假设我们以前用 iptables 来允许 SSH 流量进入:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

现在用 nftables,语法是这样的:

# 1. 创建一个表
sudo nft add table inet filter

# 2. 在表中添加一个链
sudo nft add chain inet filter input { type filter hook input priority 0 \; }

# 3. 添加规则
sudo nft add rule inet filter input tcp dport 22 accept

# 4. 保存规则以便重启后生效
sudo systemctl enable nftables.service
sudo nft list ruleset > /etc/nftables/nftables.conf

nftables 的语法更现代化,结构也更清晰,并且性能更好。是时候开始学习它了!

4. 安全第一:更现代、更严格的安全策略

  • OpenSSL 3.0: 升级到 OpenSSL 3.0,默认禁用了很多老旧且不安全的加密算法,比如 TLS 1.0/1.1。 这让系统默认就处在一个更安全的基础上。
  • SSH 禁止 root 密码登录: 出于安全考虑,默认配置下,你不能再直接使用 root 用户和密码通过 SSH 登录系统了。
  • SELinux 性能提升: SELinux 的性能得到了显著提升,内存消耗也更少。 同时,彻底禁用 SELinux 的方式也变了,在 /etc/selinux/config 中设置 SELINUX=disabled 不再能完全禁用它,你需要通过修改内核启动参数 selinux=0 来实现。

5. 桌面与多媒体体验革新

  • GNOME 40: 桌面环境升级到了 GNOME 40,带来了全新的活动视图和水平工作区布局,视觉效果和交互体验都焕然一新。
  • PipeWire 成为默认: PipeWire 成为了默认的音频和视频处理服务,取代了 PulseAudio 和 JACK。 它旨在统一 Linux 的音视频处理,提供更好的性能和对 Flatpak 等现代化应用更好的支持。

总结

CentOS Stream 9 是一次脱胎换骨的更新。它变得更现代、更强大、更安全,也更贴近企业级 Linux 的发展前沿。

划重点:

  1. 定位改变: 它是 RHEL 9 的“预演版”,滚动更新。
  2. 工具链升级: Kernel 5.14、GCC 11,为性能和新特性打下基础。
  3. 开发者友好: 主流编程语言和工具全面升级到新版本。
  4. 网络管理变革: 必须使用 NetworkManager 和 nftables。
  5. 安全基线更高: 默认禁用不安全的协议和登录方式。

对于开发者、运维工程师以及所有希望紧跟 Linux 技术潮流的人来说,CentOS Stream 9 是一个绝佳的选择。但如果你的首要任务是维护一个数年不变的稳定生产环境,那么 Rocky Linux 或 AlmaLinux 可能会是更好的选择。

现在,你准备好拥抱这个全新的 CentOS Stream 9 了吗?赶紧去下载镜像体验一下吧!


  目录