The Heirloom Toolchest is a collection of standard Unix utilities that is intended to provide maximum compatibility with traditional Unix while incorporating additional features necessary today.
To achieve this, utilities are derived from original Unix sources if permitted by its licenses. This means that material from Unix 6th Edition, Unix 7th Edition, and Unix 32V was used, since these systems were put under an Open Source license by Caldera in January 2002.
In addition, 4BSD source (governed by the University's copyright and partially derived from 32V) has been used. (Other sources were Caldera's 'Open Source Unix[tm] Tools', the MINIX utility collection, Plan 9, and Info-ZIP's compression codes.)
If no freely available Unix sources were available (for example, for tools introduced in System III or System V), utilities were rewritten from scratch. (The exact license terms are provided in a separate document.)
Heirloom Toolchest are oriented on the specifications or systems named below. Since there are some incompatibilities between them, some tools are present in more than one version.
Here are some key features of "Heirloom Toolchest":
· Derived from original Unix material released as open source by Caldera.
· Multiple versions of each utility corresponding to SVID3/SVR4, SVID4/SVR4.2MP, POSIX.2-1992/SUSV2, POSIX.1-2001/SUSV3, and 4BSD (SVR4 /usr/ucb).
· Support for lines of arbitrary length and in many cases binary input data.
· Support for multibyte characters in UTF-8 and many East Asian encodings.
· More than 100 individual utilities including bc, cpio, diff, ed, file, find, grep, man, nawk, oawk, pax, ps, sed, sort, spell, and tar.
· The cpio utility can read and write zip files, GNU tar files, and the cpio formats of Cray UNICOS, SGI IRIX (-K), SCO UnixWare (-c) and Tru64 UNIX (-e). It is also available with the pax interface.
· Extensive documentation including a manual page for any utility.
· Runs on Linux, Solaris, Open UNIX, HP-UX, AIX, FreeBSD, NetBSD, and OpenBSD.
To use the Heirloom Toolchest, select one of these personalities and put the corresponding directory at the beginning of the PATH environment variable, immediately followed by the toolchest base directory, /usr/5bin (which contains the tools that are the same for all personalities). For example, to use the toolchest with a SVID4 personality, execute
PATH=/usr/5bin/s42:/usr/5bin:$PATH export PATH
You must select exactly one of the personalities above; you do not have access to the complete set of tools otherwise.
The manual pages generally note which behavior corresponds to which utility version. They also mark whether options and arguments were part of System V, were introduced with POSIX.2 or POSIX.1-2001, or if they are extensions provided by the Heirloom Toolchest, (possibly oriented at extensions introduced by other vendors). Such extensions are subject to change without a grace period; they are only intended for interactive usage and should not be included in scripts.
The toolchest also includes some utilities modeled after the BSD Compatibility environment of System V; these roughly correspond to 4.3BSD or SunOS 4 systems. These tools can be found in /usr/ucb; since they do not form a full personality set as the ones described above, they should be used in addition, as e.g.
PATH=/usr/ucb:/usr/5bin/s42:/usr/5bin:$PATH export PATH
While the Heirloom Toolchest is intended to be as compatible as possible with historical practice in general, annoying static limits of historical implementations are not present any longer. Input lines of unlimited length are generally accepted (as long as enough memory is available); most utilities are also able to handle binary input data (i.e. ASCII NUL characters in the input stream).
· a yacc command
Unless you are a developer, it is strongly recommended that you use the rpm command to build and install the Heirloom Toolchest on Linux. Simply execute
rpmbuild -tb heirloom-.tar.bz2
wait a few minutes and install the resulting rpm that is found in /usr/src/redhat/RPMS/i386/heirloom--1.i386.rpm (or wherever your vendor's setup puts such files). Then access the tools by prefixing your PATH with /usr/5bin and skip the rest of this section. (With older versions of rpm you need to use 'rpm' instead of 'rpmbuild'.)
On Solaris and Open UNIX, you can build a package for pkgadd from the sources. Extract them, change to the heirloom- directory, and execute
This will create a file heirloom.pkg which you can then give to pkgadd. On Solaris, you will have to delete the existing symbolic link /usr/5bin to install it.
If your system lacks rpm or pkgadd or if you want to make changes to the Heirloom Toolchest, you have to build it manually. The first thing to understand is the build system. This is actually quite simple: Every directory contains a file named Makefile.mk that includes the directory-specific make instructions. To generate the real Makefile, configuration settings are prepended to the directory-specific file. You have to edit these configuration settings before you start compiling; they are located in the file build/mk.config which is also in make syntax. Follow the descriptions in this file and select appropriate values for your system.
Be very careful at this step! If you overwrite your system utilities or put the Heirloom Toolchest at an early place in your system's PATH, some of your shell scripts or of those of your vendor may cease to work. This is because utilities from the Heirloom Toolchest may behave differently than the ones supplied by your vendor. You may wish to
correct this later, but the first build is definitively not the right time. - If you want to stay with the default /usr/5bin path on Solaris, be sure to remove the existing symbolic link to /usr/bin.
If you don't know what path names to select, get a competent person to assist you. I won't assist at this point and do, as described in the license terms, not warrant for any problems caused by anyone. You have been warned.
After finishing the configuration, type 'make' and 'make install', then use the tools found at the location you selected before.
The Heirloom Toolchest can also be compiled using dietlibc . This will result in relatively small statically linked executables; the tools will not have multibyte functionality, though. Note that you have to compile ncurses, optionally
also zlib and libbz2, and to install the libraries in an appropriate location for 'diet' before you can start to build the Heirloom tools.
What's New in This Release:
· A "-P" option has been added to "cpio" that allows you to specify attributes like the file owner when creating an archive.
· With it, unprivileged users can set arbitrary attributes for files within an archive.
· Some compilation problems have been fixed, particularly with respect to current Linux distributions.