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