Skip to Content
文档运维系统管理Rust coreutils 与脚本兼容

Rust coreutils:26.10 脚本兼容性与 GNU 切换

Ubuntu 26.10 将此前保留的 cp、mv、rm 也切换到 Rust 的 uutils 实现。命令名称保持不变,依赖特殊选项、报错文本或退出码的脚本应重新验证。26.10 发布说明 确认了这次切换。

查看当前实现

type -a cp mv rm cp --version mv --version rm --version

先看 type -a,确认命令有没有被别名、函数或自定义 PATH 覆盖,再查看版本输出。容器拥有自己的用户空间,宿主机升级不等于容器内命令也已切换。

在临时目录测试基本流程

下面的操作只创建并移动测试文件,不接触你的工作目录:

coreutils_check_dir=$(mktemp -d) printf 'coreutils check\n' > "$coreutils_check_dir/source.txt" cp "$coreutils_check_dir/source.txt" "$coreutils_check_dir/copy.txt" cmp "$coreutils_check_dir/source.txt" "$coreutils_check_dir/copy.txt" mv "$coreutils_check_dir/copy.txt" "$coreutils_check_dir/moved.txt" rm "$coreutils_check_dir/moved.txt" ls -la "$coreutils_check_dir"

cmp 无输出且退出码为 0,表示两个文件内容一致。这个例子只是基本检查,不能证明你的备份或部署脚本完全兼容。测试目录可保留供检查,之后手动清理。

哪些脚本需要重点检查

  • 解析命令报错文字的脚本:尽量改用退出码与明确的文件检查。
  • 使用递归复制、符号链接或元数据保留的任务:在样本数据上比较内容、权限和链接目标。
  • 定时任务与 CI:按实际用户身份、PATH 和工作目录运行测试。
  • 删除或覆盖文件的任务:先用数据副本验证,并确认恢复方式。

用同一份输入分别测试目标系统与原环境,记录命令、退出码、标准输出和标准错误。需要比较元数据时,可以对样本文件运行 stat。

遇到兼容问题时怎样处理

Ubuntu 仍提供 GNU 版本。官方文档介绍了 gnu 前缀命令(例如 gnuls),以及 coreutils-from-gnu 和 coreutils-from-uutils 之间的切换方式,见 官方 rust-coreutils 说明 。

先修正或隔离具体脚本的问题;确需系统级切换时,阅读官方命令并检查 APT 的变更计划。该操作涉及基础系统包,不要用手动覆盖 /usr/bin 或随意创建符号链接的方式替换实现。

继续阅读:备份与恢复、升级版本选择。