如果一切顺利的话,Ubuntu 项目很快就会用 Rust 语言写的工具替换掉一些老旧的 GNU 工具,比如我们之前报道过的 uutils 项目做的那些工具。
不过,把整个 Linux 系统的核心工具都换掉可不是小事,所以 Canonical 的工程副总裁 Jon Seager 搞了个叫 oxidizr 的命令行工具。
这个工具可以让用户轻松地开启或关闭基于 Rust 的工具,方便大家测试这些新工具到底好不好用。
Seager 希望大家帮忙测试,并且在 Ubuntu 25.10(计划在 2025 年 10 月发布)正式切换之前,提供一些使用反馈。
目前,Ubuntu 社区的反应还不错,虽然大家对这么大的改动还是有点担心。
Ubuntu 的未来 20 年
Ubuntu是在 2024 年首次发布的,今年正好是它的 20 周年。Seager 回顾了这个里程碑,并在 2 月份发表了他对 Ubuntu 未来 20 年的展望。他提到的一个重点是“现代化”,意思是 Ubuntu 应该根据用户的需求不断更新和改进。
他提到,Ubuntu 应该仔细挑选默认的工具,选择那些更耐用、性能更好、更容易维护的工具。开源社区里有很多工具都被重新设计过,用上了最新的技术和实践。他特别喜欢一些新的命令行工具(比如 eza、bat 和 helix),还有新的终端模拟器 ghostty,以及一些基础项目(比如用 Rust 重写的 coreutils 的 uutils)。这些项目虽然成熟度不同,但它们都展示了一个更现代化的 Unix 体验,强调稳定性、性能和易用性。
3 月 12 日,Seager 又发了一篇文章,讲了他计划把一些新工具作为默认工具的打算,目标是让这些工具在下一个 Ubuntu 长期支持版(LTS)26.04 中上线。他提到,改用 Rust 主要是为了提高工具的稳定性和安全性。他还引用了 Rust 核心开发者 Niko Matsakis 的一篇博客,里面讲了用 Rust 重写基础软件的好处。简单来说,Rust 能让基础软件更可靠,而基础软件一旦出问题,整个系统都会受影响。
Rust 的好处
Rust 不仅性能好,还能让开发者更容易写出安全的代码,不用像用 C/C++ 那样小心翼翼。Seager 认为,Rust 的可靠性特别适合用来写基础软件,因为“如果基础软件出问题,整个系统都会崩溃”。考虑到 Ubuntu 的用户很多,Seager 强调,他们必须确保交付的软件是最稳定、最值得信赖的。
Seager 还认为,用 Rust 还能吸引更多开发者来贡献代码。虽然 Rust 不一定比 C 简单,但它提供了一个框架,让开发者更难写出不安全的代码。这样一来,Rust 对那些不想用 C 编程的开发者来说,可能更有吸引力。
oxidizr 工具
为了让大家能更方便地测试 Rust 工具,Seager 开发了 oxidizr。这个工具可以让大家在不冒太大风险的情况下,快速替换掉老旧的工具。3 月 7 日,他发布了 oxidizr 的第一个版本 1.0.0,用的是 Apache 2.0 许可证,当然,这个工具本身也是用 Rust 写的。
oxidizr 还没被打包进 Ubuntu,也没有 PPA(个人软件包存档)让大家用 APT 安装。不过,GitHub 上有二进制版本,或者你可以用 cargo 安装:
$ cargo install --git https://github.com/jnsgruk/oxidizr |
oxidizr 把一组可以独立替换的工具叫做“实验”。目前支持的实验包括用 uutils 替换 GNU 的 coreutils、findutils 和 diffutils,还有用 Rust 写的 sudo-rs 替换传统的 sudo。
比如,如果你想试试 sudo-rs,可以运行:
oxidizr enable --experiments sudo-rs |
这个命令会从 Ubuntu 的软件仓库安装 sudo-rs,备份原来的 sudo,然后创建一个符号链接指向 Rust 版本的 sudo。如果你想启用所有实验,可以用 all
参数:
oxidizr enable --experiments --all |
如果你想恢复原来的工具,可以运行:
oxidizr disable --all |
Seager 说,oxidizr 支持 24.04 LTS 之后的所有 Ubuntu 版本,但 uutils 的 diffutils 实验只支持 Ubuntu 24.10 或更高版本。他还建议大家先在虚拟机或非生产环境中测试,避免出问题。
社区反应
有些人担心 Ubuntu 是不是要彻底抛弃 GNU 组件,Seager 解释说,这只是一个现代化的过程,并不是要完全脱离 GNU。他说,许可证虽然不同,但这并不是决定因素。
不过,有些用户还是不满意。Joseph Erdosy 说,如果 Ubuntu 这么做,他会考虑换到 Fedora 或 Rocky Linux。他喜欢 Rust 和内存安全的想法,但对用 MIT 许可证的代码替换 GPL 许可证的代码感到不满。
其他一些用户也表达了类似的担忧,但 Seager 强调,这并不代表 Ubuntu 要远离 GPL 软件。他说,Canonical 的大部分软件还是会继续用 GPL。
后续计划
Seager 已经和 uutils 项目的创始人 Sylvestre Ledru 讨论过,Ledru 认为 uutils 已经准备好成为 Ubuntu 25.10 的默认工具。Seager 说,现在只是具体实施的问题,Ubuntu 的团队已经在制定计划了。他也承认,如果切换过程中出现问题,可能会缩减计划。如果切换不成功,恢复起来应该也不难。
如果 Ubuntu 25.10 真的用上了 uutils,那对 uutils 项目来说将是一个巨大的胜利,因为它会获得更多的用户。这个“氧化 Ubuntu”的实验可能会加速 Rust 的普及,也可能会让其他发行版考虑用 Rust 替换 C 写的工具。当然,如果 Ubuntu 遇到大问题,也可能会让大家对 Rust 产生疑虑。无论如何,这个项目对整个 Linux 社区都有很大的参考价值。