Estimated build time: 0.47 SBU Estimated required disk space: 42 MB |
Before Sh-utils is installed, the sh-utils patch file may need to be applied. This patch is needed to avoid a conflict of variable names with certain Glibc versions (usually glibc-2.1.x) when compiling sh-utils statically. It is however safe to apply the patch even if you are running a different glibc version. So, if you aren't sure, it's best to apply it.
patch -Np1 -i ../sh-utils-2.0.patch |
Install Sh-utils by running the following commands:
./configure --prefix=$LFS/static \ --disable-nls && make LDFLAGS=-static && make install |
During the make install stage you will see the following warning:
WARNING: insufficient access; not installing su NOTE: to install su, run 'make install-root' as root
You can safely ignore that warning. You need to be logged in as root in order to install su the way Sh-utils wants to install it, which is being suid root. Because we don't need su during Chapter 6, and su will be properly installed when we re-install Sh-utils in Chapter 6, you can just pretend you didn't see it.
Last checked against version 2.0.
basename, chroot, date, dirname, echo, env, expr, factor, false, groups, hostid, id, logname, nice, nohup, pathchk, pinky, printenv, printf, pwd, seq, sleep, stty, su, tee, test, true, tty, uname, uptime, users, who, whoami and yes
basename strips directory and suffixes from filenames.
chroot runs a command or interactive shell with special root directory.
date displays the current time in a specified format, or sets the system date.
dirname strips non-directory suffixes from file name.
echo displays a line of text.
env runs a program in a modified environment.
expr evaluates expressions.
factor prints the prime factors of all specified integer numbers.
false always exits with a status code indicating failure.
groups prints a user's group memberships.
hostid prints the numeric identifier (in hexadecimal) for the current host.
id prints the effective user and group IDs of the current user or a given user.
logname prints the current user's login name.
nice runs a program with modified scheduling priority.
nohup runs a command immune to hangups, with output to a log file.
pathchk checks whether file names are valid or portable.
pinky is a lightweight finger utility which retrieves information about a certain user.
printenv prints all or part of the environment.
printf formats and prints data (the same as the C printf function).
pwd prints the name of the current/working directory.
seq prints numbers in a certain range with a certain increment.
sleep delays for a specified amount of time.
stty changes and prints terminal line settings.
su runs a shell with substitute user and group IDs.
tee reads from standard input and writes to standard output and files.
test checks file types and compares values.
true always exits with a status code indicating success.
tty prints the file name of the terminal connected to standard input.
uname prints system information.
uptime tells how long the system has been running.
users prints the user names of users currently logged in to the current host.
who shows who is logged on.
whoami prints the user name associated with the current effective user ID.
yes outputs 'y' or a given string repeatedly, until killed.
Last checked against version 2.0.
Autoconf: autoconf, autoheader
Automake: aclocal, automake
Bash: sh
Binutils: ar, as, ld, ranlib
Diffutils: cmp
Fileutils: chmod, chown, install, ls, mv, rm
Gettext: msgfmt, xgettext
Gcc: cc, cc1, collect2, cpp0, gcc
Glibc: getconf
Grep: egrep, fgrep, grep
M4: m4
Make: make
Gawk: gawk
Perl: perl
Sed: sed
Sh-utils: basename, echo, expr, hostname, sleep, uname
Tar: tar
Texinfo: install-info, makeinfo
Textutils: cat, tr