Skip to content
Rush Commerce
Software & Dev3 min read

Ubuntu 26.10 moves cp, mv and rm to Rust coreutils

Ubuntu 26.10 completes the Rust coreutils switch on October 15. Your CI scripts and base images get new cp, mv and rm implementations — here's how to test first.

The commands underneath every deploy script you own are about to change implementation. Ubuntu 26.10 completes its move to Rust coreutils by switching cp, mv and rm over from the GNU versions — the last three holdouts, and the three that touch your files. Phoronix spotted the draft release notes ticking to 100% on September 16. Stable release is October 15.

What actually happened

Canonical has been shipping uutils, a Rust reimplementation of the GNU coreutils, as the default since Ubuntu 25.10. Most of the suite — ls, cat, chmod, du and the rest — went over then. But cp, mv and rm were pulled back to their GNU versions for 25.10 and 26.04 LTS after a set of TOCTOU (time-of-check to time-of-use) issues surfaced in the Rust implementations. Those are fixed upstream, so 26.10 finishes the job.

There is an escape hatch, and it is worth knowing before you need it: Ubuntu ships a coreutils-from-gnu package that restores the GNU binaries. It is in the archive for 25.10, 26.04 LTS and 26.10, so the fallback is a one-line install rather than a rebuild.

Worth noting what 26.10 is: an interim release, supported nine months, not an LTS. The LTS that most production fleets actually run is 26.04, which keeps GNU cp, mv and rm. So this is a preview of what lands in the next LTS, on a box you can test with.

Why a coreutils swap matters for your business

uutils aims to be a drop-in replacement, and for the ordinary cp -r and rm -rf in your Dockerfile it is. The risk is not the common path — it is the arguments nobody documented. Exit codes on partial failures, --preserve semantics across filesystems, how a trailing slash on a symlinked directory resolves, what happens when mv crosses a device boundary mid-operation. Shell scripts accumulate dependence on that behavior without anyone writing it down, and a build that has worked for four years is exactly where that dependence hides.

The fix is cheap and the window is open. Spin a 26.10 beta container, run your CI pipeline and your deploy scripts against it, and watch for anything that fails silently rather than loudly. If something breaks, apt install coreutils-from-gnu buys you time to fix it properly instead of during an incident. Do this now, while 26.10 is optional — not in eighteen months when the next LTS makes it the default and you are debugging a release that used to work.

Key takeaways

  • Ubuntu 26.10 moves cp, mv and rm to Rust coreutils, completing a transition that started in 25.10
  • Those three were held back from 25.10 and 26.04 LTS over TOCTOU issues, now fixed upstream
  • Stable release is October 15; 26.10 is an interim release, so 26.04 LTS keeps the GNU versions
  • The coreutils-from-gnu package restores GNU binaries and is in the archive for 25.10, 26.04 LTS and 26.10
  • Test your CI and deploy scripts against a 26.10 image now — edge-case flag behavior is where drop-in replacements stop being drop-in

Base image drift breaks builds nobody touched. We pin, containerize and test the infrastructure under your app so an OS bump is a scheduled Tuesday instead of a Friday outage. See what we handle, or point us at the deploy script you're afraid to change.

Sources: Phoronix, OMG! Ubuntu, Ubuntu package archive.

  • #ubuntu
  • #rust
  • #coreutils
  • #ci-cd
  • #containers
TR

Tommy Rush — Founder, Rush Commerce

Operator turned builder. 15+ years running operations — now shipping the systems businesses run on. More

Get The Rush Report weekly — one email, zero fluff.