Since Ubuntu 25.10, the basic command-line tools (cp, ls, date, sort and the rest) come from uutils, a Rust reimplementation of GNU coreutils, instead of GNU coreutils. Ubuntu 26.04 LTS, released in April 2026, keeps it, so anyone upgrading LTS servers from 24.04 meets it there.
uutils aims to be a drop-in replacement and is tested against the GNU test suite. For interactive use you won’t notice. The risk is in scripts that depend on exact GNU behaviour, especially less common options.
A real example: the date --reference bug
Shortly after 25.10 shipped, a bug in the Rust date broke automatic updates: the shipped version accepted the --reference option but ignored it, and Ubuntu’s update machinery relied on it. It was fixed in rust-coreutils 0.2.2-0ubuntu2.1 (report). That’s the shape of the risk: not that common commands break, but that an option your script relies on behaves differently, quietly.
Which implementation am I running?
cp --version | head -1 # uutils prints "cp (uutils coreutils) ..."
apt list --installed 2>/dev/null | grep coreutils-from
How to test your scripts
- Run every cron job and backup script once by hand on an upgraded test machine or a 26.04 VM, and compare the results with the old system: file sizes, timestamps, output files.
- Check the options you use that go beyond the basics:
date -dwith complex expressions,cp --sparse,--reference,sortwith locale-dependent keys,stat -cformat strings. - Make scripts less fragile regardless of implementation:
- don’t parse
lsordf -houtput; usestat,find -printfordf --output=and byte values, - set
LC_ALL=Cin scripts that need byte-order sorting, - use
tail -F(follow by name) for log files that get rotated, - prefer epoch seconds (
date +%s) for time arithmetic.
- don’t parse
Switching back to GNU coreutils
Ubuntu packages both variants. To switch a machine back:
sudo apt install coreutils-from-gnu
apt warns because an essential package is being replaced; read the prompt before confirming. Going back is reasonable for a server whose scripts you can’t test now. Report bugs you find to Ubuntu (Launchpad, rust-coreutils) so they get fixed.
Containers
Containers use the coreutils of their image. Your host’s switch doesn’t change Debian, Alpine or Ubuntu 24.04 based containers. It matters when you move your own images to ubuntu:25.10 or newer bases: run your build and entrypoint scripts against the new base before switching, and pin base images by version rather than following latest.
[discussion]
Comments are powered by Giscus — backed by GitHub Discussions. Sign in with GitHub to join the conversation.