IMPORTANT: Do not expect 100% drop-in replacement and compatibility. Certain utilities may not exist and for those that do, there may be missing options. One purpose of this Wiki is to document missing features and the problems they cause (in order to devise work-arounds). Make sure that the replacement(s) that you install fill your needs before proceeding.
Why change GNU (and other base components) to Plan9(port)?
In contrast to the base2busybox project, the size gain is not as much of a compelling reason. Other reasons could be:
- an interest and devotion to Plan9 and its post-UNIX ambitions
- anti-GNU sentiments
- out of curiosity
Supporting binary sources
Currently, the gnu2plan9 packages need support to offer a drop-in replacement of GNU coreutils. This is at the moment provided by busybox and the gnu2ucb Heirloom profile. Ideally, missing functionality should be patched up with projects more closely aligned to Plan9, like Inferno and Goblin. The aim is to make the different "base2foo" projects as independent of eachother as possible since the whole point of the projects is to increase choice and diversity. For the base2plan9 project, the first priority is to cover missing functionality and second priority to try to reduce (or ideally remove) the busybox dependency.
Below is a list of the origin of different utilities in this package.
cat date dd du echo lc ls mc mkdir rc rm sleep
basename comm factor fmt join md5sum pr seq sha1sum sort split sum tee test wc
The following missing functionalities are implemented as rc scripts
sha224sum sha256sum sha384sum sha512sum
chown df install ln stty
csplit expr nl
id nohup od who
cut mkfifo mknod pwd su sync uname
cksum dirname env expand fold head logname nice paste patchchk printenv printf tsort tty unexpand uniq users whoami yes
Busybox is needed for the following utilities:
readlink [ base64 hostid mktemp stat tac chroot
Some utilities are not offered by neither Plan9port, custom scripts, Heirloom nor Busybox.
dir dircolors shred vdir
chcon link nproc pinky ptx runcon shuf stdbuf timeout truncate unlink