Ubuntu探索用Rust编写的"uutils"替代GNU核心工具

本文详细介绍了Canonical计划在Ubuntu中测试使用Rust编写的uutils项目替代传统GNU核心工具的技术背景、内存安全优势、性能提升可能以及面临的兼容性挑战和许可证差异问题。

Ubuntu测试Rust"uutils"以替代GNU核心工具

在一项引发Ubuntu Linux粉丝群体和社区广泛讨论的举措中,Canonical公司宣布计划探索用基于Rust的"uutils"项目替代GNU核心工具的潜力。他们计划在Ubuntu Linux 25.10中引入新变化,最终在2026年的Ubuntu 26.04 LTS版本中完成更改,因为Ubuntu正在测试Rust ‘uutils’以彻底改革其核心工具。

什么是GNU核心工具?

GNU核心工具包含基本的文件、shell和文本操作工具,这些工具应该存在于每个操作系统中。您是否使用过cp、mv、ls命令和其他基本命令?这些都是GNU核心工具的一部分,简称为"coreutils",这是一组基本的命令行工具,构成了大多数Linux系统的基础。

您可以使用dpkg命令和grep命令的组合轻松列出所有coreutils命令:

1
$ dpkg -L coreutils | grep bin | less

输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/bin
/bin/cat
/bin/chgrp
/bin/chmod
/bin/chown
/bin/cp
/bin/date
/bin/dd
/bin/df
/bin/dir
/bin/echo
/bin/false
/bin/ln
/bin/ls
/bin/mkdir
....
.....
..
....
/usr/bin/who
/usr/bin/whoami
/usr/bin/yes
/usr/sbin
/usr/sbin/chroot
/usr/bin/md5sum.textutils

这些工具几十年来一直是Linux的主要组成部分,您可以在类似Unix的系统(如MacOS和FreeBSD)中找到类似的命令语法。该系统使用bsdutils而不是GNU版本。‘uutils’旨在成为GNU工具的即插即用替代品。与GNU的差异被视为错误。

为什么用’uutils’替换GNU核心工具?

用’uutils’替换GNU核心工具的举措旨在利用Rust的内存安全性和性能优势,可能重塑这个流行Linux发行版的基础。以下是转向基于Rust的命令行工具而不是使用主要用C语言编写的GNU工具的关键点:

  • 内存安全 - Rust的内存安全特性是这一潜在变革的主要驱动力。通过减轻内存相关漏洞,Canonical旨在增强Ubuntu在桌面和服务器上的整体安全性和稳定性。
  • 性能 - Rust以其性能特性而闻名,就像C或C++一样,“uutils"有可能在传统GNU核心工具之上提供性能改进,特别是在涉及并行处理、Docker/k8s或现代云应用的场景中。
  • 现代化 - 这一举措反映了Linux生态系统内更广泛的趋势,即采用在现代内核设备驱动程序和用户级工具中优先考虑安全性和性能的现代编程语言。

这一最新变化将带来哪些新技术挑战?

毫无疑问,Rust的内存安全特性显著降低了生产系统中缓冲区溢出和其他内存相关漏洞的风险。然而,作为一个经验丰富的系统管理员和IT专业人士,我主要关注的是确保与GNU核心工具的既定行为完全兼容。这将是一个巨大的挑战,特别是当您必须在传统和现代系统上维护shell脚本或Dockerfiles时。GNU核心工具的每个选项都需要得到Rust版本的支持。否则,您的系统将崩溃或出现未知行为。

请记住,“uutils"目前正在大力开发中,与成熟的GNU核心工具相比,它仍然是一个相对年轻的项目。除了对稳定性和兼容性的担忧之外,一个重大问题已在网上广泛讨论:GNU和MIT许可证之间的差异。

GNU与MIT许可证因素

这一潜在转变的核心差异涉及GNU核心工具(GNU GPL)和"uutils”(MIT许可证)之间的许可差异。GNU GPL是一个copyleft许可证,要求衍生作品也必须在GPL下发布。另一方面,MIT许可证是一个宽松的许可证,允许在软件使用和分发方面具有更大的灵活性。这是关于软件自由的问题。

期待尝试uutils实验

Canonical工程师强调这是一个实验阶段,Ubuntu开发人员将进行仔细测试和评估,以维护其LTS版本的声誉。“oxidizr"工具将被使用并提供给用户进行测试,允许用户在GNU和Rust实现之间切换。如果您希望在即将推出的Ubuntu Linux 25.10版本上尝试这些实验,可以这样使用:

警告! Oxidizr是一个实验性工具,专为开发人员和早期采用者设计,用于探索核心系统工具的相对较新替代方案。它可能导致数据丢失或阻止系统启动,因此请谨慎使用。

启用默认实验:

1
$ sudo oxidizr enable

禁用默认实验:

1
$ sudo oxidizr disable

仅启用coreutils:

1
$ sudo oxidizr enable --experiments coreutils

启用所有实验而不提示,同时启用调试日志:

1
$ sudo oxidizr enable --all --yes -

禁用所有实验而不提示:

1
$ sudo oxidizr disable --all --yes

个人观点

我对Ubuntu决定使用基于Rust的’uutils’作为GNU核心工具的潜在替代品感到高兴。我将在虚拟机中进行测试并尝试使用它。我认为如果正确实施,并持续获得系统管理员、DevOps人员和Ubuntu用户等IT专业人士的反馈,这可能会显著增强系统安全性和稳定性。当然,保持与现有GNU核心工具的兼容性将是一个巨大挑战。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计