Ubuntu测试Rust版"uutils"替代GNU核心工具集
作者:Vivek Gite
最后更新:2025年9月23日
Ubuntu Linux的母公司Canonical宣布计划探索用基于Rust的"uutils"项目替代GNU核心工具集,这一举措在Ubuntu社区引发了广泛讨论。他们计划在Ubuntu Linux 25.10中引入这一变更,最终在2026年的Ubuntu 26.04 LTS版本中完成替换。
什么是GNU核心工具集?
GNU核心工具集包含基本的文件、shell和文本操作工具,是每个操作系统都应具备的基础工具。您是否使用过cp、mv、ls等基本命令?这些都是GNU核心工具集(简称"coreutils")的组成部分,这些命令行工具构成了大多数Linux系统的基础。
您可以通过以下命令列出所有coreutils命令:
|
|
输出示例:
|
|
这些工具几十年来一直是Linux的基石,在类Unix系统如macOS和FreeBSD中也能找到类似的命令语法。uutils项目旨在成为GNU工具的直接替代品,与GNU的任何差异都被视为bug。
为什么要用’uutils’替代GNU核心工具集?
这一转变旨在利用Rust的内存安全性和性能优势,可能重塑这个流行Linux发行版的基础。以下是转向基于Rust的命令行工具的关键原因:
内存安全 - Rust的内存安全特性是这一潜在变更的主要驱动力。通过减少内存相关漏洞,Canonical旨在提升Ubuntu在桌面和服务器环境中的安全性和稳定性。
性能 - Rust以类似C/C++的性能特性著称,uutils有可能在并行处理、Docker/k8s或现代云应用等场景中提供比传统GNU核心工具集更好的性能。
现代化 - 这一举措反映了Linux生态系统向采用现代编程语言的更广泛趋势,这些语言在内核设备驱动和用户级工具中优先考虑安全性和性能。
新技术挑战
毫无疑问,Rust的内存安全特性显著降低了生产系统中缓冲区溢出和其他内存相关漏洞的风险。然而,作为经验丰富的系统管理员,主要担忧是确保与GNU核心工具集现有行为的完全兼容性。
这是一个重大挑战,特别是在需要在传统和现代系统上维护shell脚本或Dockerfile时。GNU核心工具集的每个选项都需要Rust版本支持,否则系统可能会出现故障或未知行为。
uutils目前仍在积极开发中,与成熟的GNU核心工具集相比仍是一个相对年轻的项目。当对核心组件进行大规模变更时,往往会导致稳定性等问题。
GNU与MIT许可证因素
这一潜在转变的核心差异涉及GNU核心工具集(GNU GPL)和uutils(MIT许可证)之间的许可证差异。GNU GPL是copyleft许可证,要求衍生作品也必须在GPL下发布。而MIT许可证是宽松许可证,允许在软件使用和分发方面更大的灵活性。
这一许可证变更已在开源社区和Linux用户中引起重大关切,讨论集中在软件自由的重要性上。
试用uutils实验
Canonical工程师强调这仍处于实验阶段,Ubuntu开发人员将进行仔细测试和评估,以维护其LTS版本的声誉。将使用并提供"oxidizr"工具供用户测试,允许用户在GNU和Rust实现之间切换。
警告! Oxidizr是为开发人员和早期采用者设计的实验性工具,用于探索核心系统工具的相对较新替代方案。它可能导致数据丢失或阻止系统启动,请谨慎使用。
启用默认实验:
|
|
禁用默认实验:
|
|
仅启用coreutils:
|
|
启用所有实验(启用调试日志):
|
|
禁用所有实验:
|
|
Ubuntu用户将密切关注这一项目的进展,如果其他Linux发行版选择跟随Canonical的道路,这可能对Ubuntu乃至整个Linux生态产生重大影响。
个人观点
我对Ubuntu决定使用基于Rust的uutils作为GNU核心工具集的潜在替代品感到高兴。我将在虚拟机中进行测试。如果正确实施,并持续获得系统管理员、DevOps人员和Ubuntu用户的反馈,这可能会显著增强系统安全性和稳定性。当然,保持与现有GNU核心工具集的兼容性将是一个重大挑战。