news item: Introduction of app-alternatives/coreutils

moltonel 3x Combo <[email protected]>
Newsgroups gmane.linux.gentoo.devel
Message-ID <CANQow5KDfOBOn=rpcDGZuMK3cD4WO32JiUBU1BrGEu09q71Y5g@mail.gmail.com>
Hi,

This news item can also be reviewed at
https://github.com/gentoo/gentoo-news/pull/5
The corresponding code PR is at https://codeberg.org/gentoo/gentoo/pulls/89
This is my first time posting here and I'm not a Gentoo dev, apologies
if I made mistakes.


Title: Introduction of app-alternatives/coreutils
Author: Vincent de Phily <[email protected]>
Posted: 2026-03-04
Revision: 1
News-Item-Format: 2.0

A new app-alternatives/coreutils ebuild is available, giving the
choice between sys-apps/coreutils and sys-apps/uutils-coreutils as the
main coreutils (mkdir, ls, etc) implementation. The default will
remain the gnu implementation for the foreseeable future.

The update should be transparent to most users, read on for further
details.

## Choices

If uutils-coreutils is available for your arch and profile, you
can select it by setting `app-alternatives/coreutils -gnu uutils` in
your packages.use.

If you want to postpone or revert the transition, mask the
corresponding ebuild versions:

```
>=sys-apps/coreutils-9.10-r1
>=sys-apps/uutils-coreutils-0.6.0-r1
app-alternatives/coreutils
```

## Preparation and troubleshooting

The new version of sys-apps/coreutils and sys-app/uutils-coreutils
install their files with a prefix (`g` for gnu, and `uu-` for uutils).
Afterwards, app-alternatives installs symlinks with standard names.

Portage preserves some critical binaries, which will trigger a
harmless file collision warning (assuming the default `protect-owned`
portage feature is enabled) when app-alternatives/coreutils is
installed for the first time.

To reduce the window during which some utils will not be available at
the standard location, make sure that app-alternatives/coreutils is
merged straight after the new sys-apps/coreutils, by running
`USE="gnu -uutils" emerge -v1 app-alternatives/coreutils` before
updating the rest of the system.

In the unlikely event of an incomplete update, keep in mind you can
still use the prefixed names. If you somehow need to manually fix some
symlinks, use the command below and consider reporting the issue:

```bash
# Critical utils that portage should have preserved
export U1="[ arch basename cat chgrp chmod chown cp date dirname echo env expr
          false head hostname id install ln ls mkdir mkfifo mktemp mv printf
          pwd readlink rm rmdir sleep sort stat tail test touch tr true uname
          uniq whoami"
# Utils that might be missing until app-alternative installs
export U2="b2sum base32 base64 basenc chcon chroot cksum comm csplit cut dd
          df dir dircolors du expand factor fmt fold hostid join kill link
          logname mknod nice nl nohup nproc numfmt od paste pathchk pinky pr
          printenv ptx realpath runcon seq shred sha1sum sha224sum sha256sum
          sha384sum sha512sum shuf split stdbuf stty sum sync tac tee timeout
          truncate tsort tty unexpand unlink users vdir wc who yes"
for t in $U2; do
 gtest -e /usr/bin/g$t -a ! -e /usr/bin/$t && gln -sf g$t /usr/bin/$t
 gtest -e /bin/g$t -a ! -e /bin/$t && gln -sf g$t /bin/$t
done
```

The current implementation of app-alternatives/coreutils does not
switch shell completions, so `cp` uses gnu completions, `uu-cp` uses
uutils completions, and `gcp` does not complete. This will be
addressed progressively, in collaboration with upstreams.

## Further reading

[0] https://wiki.gentoo.org/wiki/Project:Base/Alternatives
[1] https://www.gentoo.org/support/news-items/2022-12-27-alternatives-introduction.html
[2] https://bugs.gentoo.org/961068
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.