aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Canales Esparcia <manuel@linuxfromscratch.org>2006-02-03 18:23:22 +0000
committerManuel Canales Esparcia <manuel@linuxfromscratch.org>2006-02-03 18:23:22 +0000
commite6ab4b58a79923e6e9b30c86f22177d02f9055ee (patch)
tree2d77f9efaf07ee9b4ef630505005dc18e17dfc66
parentb4cd3c5bebdaf1de7e0beb53c8115d1ba34292c5 (diff)
Ported r7294 to r7325 from trunk to alphabetical branch.
git-svn-id: http://svn.linuxfromscratch.org/LFS/branches/alphabetical/BOOK@7333 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
-rw-r--r--appendixa/acronymlist.xml2
-rw-r--r--chapter01/changelog.xml119
-rw-r--r--chapter01/whatsnew.xml4
-rw-r--r--chapter03/packages.xml6
-rw-r--r--chapter03/patches.xml28
-rw-r--r--chapter05/adjusting.xml25
-rw-r--r--chapter05/bash.xml4
-rw-r--r--chapter05/binutils-pass1.xml9
-rw-r--r--chapter05/binutils-pass2.xml10
-rw-r--r--chapter05/gcc-pass1.xml2
-rw-r--r--chapter05/gettext.xml2
-rw-r--r--chapter05/grep.xml2
-rw-r--r--chapter05/introduction.xml5
-rw-r--r--chapter06/aboutdebug.xml89
-rw-r--r--chapter06/autoconf.xml274
-rw-r--r--chapter06/automake.xml443
-rw-r--r--chapter06/bash.xml208
-rw-r--r--chapter06/binutils.xml524
-rw-r--r--chapter06/bison.xml171
-rw-r--r--chapter06/bzip2.xml374
-rw-r--r--chapter06/changingowner.xml56
-rw-r--r--chapter06/chapter06.xml138
-rw-r--r--chapter06/chroot.xml92
-rw-r--r--chapter06/coreutils.xml1818
-rw-r--r--chapter06/createfiles.xml18
-rw-r--r--chapter06/creatingdirs.xml79
-rw-r--r--chapter06/glibc.xml32
-rw-r--r--chapter06/introduction.xml14
-rw-r--r--chapter06/patch.xml6
-rw-r--r--chapter06/perl.xml6
-rw-r--r--chapter06/pkgmgt.xml245
-rw-r--r--chapter06/readjusting.xml86
-rw-r--r--chapter06/revisedchroot.xml3
-rw-r--r--chapter06/shadow.xml18
-rw-r--r--chapter06/strippingagain.xml2
-rw-r--r--chapter06/vim.xml2
-rw-r--r--chapter08/kernel.xml5
-rw-r--r--general.ent13
-rw-r--r--patches.ent5
39 files changed, 2889 insertions, 2050 deletions
diff --git a/appendixa/acronymlist.xml b/appendixa/acronymlist.xml
index fff2327f5..ccb1d453e 100644
--- a/appendixa/acronymlist.xml
+++ b/appendixa/acronymlist.xml
@@ -326,7 +326,7 @@
<varlistentry>
<term><emphasis role="bold">LSB</emphasis></term>
<listitem>
- <para>Linux Standards Base</para>
+ <para>Linux Standard Base</para>
</listitem>
</varlistentry>
diff --git a/chapter01/changelog.xml b/chapter01/changelog.xml
index 757efce87..1e2b474f4 100644
--- a/chapter01/changelog.xml
+++ b/chapter01/changelog.xml
@@ -37,6 +37,125 @@
-->
<listitem>
+ <para>January 30, 2006</para>
+ <itemizedlist>
+ <listitem>
+ <para>[jhuntwork] - Adjust binutils-pass1 so we don't need to hang
+ on to its source directories. Also use 'gcc -dumpmachine' instead
+ of the MACHTYPE var.</para>
+ </listitem>
+ <listitem>
+ <para>[jhuntwork] - Various textual corrections. Thanks Chris
+ Staub.</para>
+ </listitem>
+ <listitem>
+ <para>[jhuntwork] - Remove unnecessary LDFLAGS variables in binutils
+ pass 1 and 2. Thanks Dan Nicholson.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>January 29, 2006</para>
+ <itemizedlist>
+ <listitem>
+ <para>[jhuntwork] - Restore the use of *startfile_prefix_spec.</para>
+ </listitem>
+ <listitem>
+ <para>[jhuntwork] - Remove a spurious -i from the perl command when
+ readjusting the toolchain. Thanks Dan Nicholson.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>January 26, 2006</para>
+ <itemizedlist>
+ <listitem>
+ <para>[jhuntwork] - Modify chapter 6 Glibc's make install command to
+ allow test-installation.pl to run.</para>
+ </listitem>
+ <listitem>
+ <para>[jhuntwork] - Adjust chapter 5 binutils to build a static ld-new
+ for use in the chapter 6 readjusting section. Also add some extended
+ sanity checks. These fixes are adapted from DIY-Linux and Greg Schafer.
+ Thanks to Dan Nicholson for the report, as well.</para>
+ </listitem>
+ <listitem>
+ <para>[jhuntwork] - Added 'nodump' to commands in the Package Management
+ section.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>January 25, 2006</para>
+ <itemizedlist>
+ <listitem>
+ <para>[jhuntwork] - Remove ppc specific instructions from chapter 6
+ patch. Cross-LFS can handle non-x86 arch specifics at this point.</para>
+ </listitem>
+ <listitem>
+ <para>[jhuntwork] - Fix chapter 6 Glibc's test-installation.pl to test
+ the correct Glibc. Fixes bug 1675. Thanks to Dan Nicholson for the report
+ and Greg Schafer for the fix.</para>
+ </listitem>
+ <listitem>
+ <para>[jhuntwork] - Fixed the re-adjusting of the toolchain in chapter
+ 6 so that chapter 6 GCC and Binutils links against the proper Glibc and
+ so that we don't have to keep the binutils directories from chapter 5.
+ Also moved a note about saving the /tools directory to the beginning of
+ chapter 6. Fixes bug 1677. Thanks to Chris Staub, Alexander Patrakov,
+ Greg Schafer and Tushar Teredesai for reporting and resolving this
+ issue.</para>
+ </listitem>
+ <listitem>
+ <para>[matthew] - Upgrade coreutils i18n patch to version 2 to fix
+ <command>sort -n</command> and add the en_US.UTF-8 locale to improve
+ coreutils' test coverage. Fixes bugs 1688 and 1689. Thanks to
+ Alexander Patrakov.</para>
+ </listitem>
+ <listitem>
+ <para>[matthew] - Add information about package management. Thanks to
+ the BLFS project for the text.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>January 24, 2006</para>
+ <itemizedlist>
+ <listitem>
+ <para>[matthew] - Upgrade to Groff-1.18.1.1-11.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
+ <para>January 23, 2006</para>
+ <itemizedlist>
+ <listitem>
+ <para>[matthew] - Upgrade to Man-pages 2.21.</para>
+ </listitem>
+ <listitem>
+ <para>[matthew] - Upgrade to Psmisc 22.1.</para>
+ </listitem>
+ <listitem>
+ <para>[matthew] - Upgrade to Shadow 4.0.14.</para>
+ </listitem>
+ <listitem>
+ <para>[matthew] - Install documentation for the Linux kernel. Thanks
+ to Tushar for the report. Fixes bug 1683.</para>
+ </listitem>
+ <listitem>
+ <para>[matthew] - Added a patch to enable Perl's DB_File module to
+ compile with the latest version of Berkeley DB. Thanks to Alexander
+ Patrakov for the patch.</para>
+ </listitem>
+ </itemizedlist>
+ </listitem>
+
+ <listitem>
<para>January 20, 2006</para>
<itemizedlist>
<listitem>
diff --git a/chapter01/whatsnew.xml b/chapter01/whatsnew.xml
index 6b42680ae..5ec47b078 100644
--- a/chapter01/whatsnew.xml
+++ b/chapter01/whatsnew.xml
@@ -232,10 +232,10 @@
<para>&mktemp-tempfile-patch;</para>
</listitem>
<listitem>
- <para>&perl-libc-patch;</para>
+ <para>&perl-db_file-patch;</para>
</listitem>
<listitem>
- <para>&shadow-configure-patch;</para>
+ <para>&perl-libc-patch;</para>
</listitem>
<listitem>
<para>&tar-gcc4_fix-patch;</para>
diff --git a/chapter03/packages.xml b/chapter03/packages.xml
index eb3b8b121..1ab11d8a3 100644
--- a/chapter03/packages.xml
+++ b/chapter03/packages.xml
@@ -291,7 +291,7 @@
</varlistentry>
<varlistentry>
- <term>Man-pages (&man-pages-version;) - 1,688 KB:</term>
+ <term>Man-pages (&man-pages-version;) - 1,705 KB:</term>
<listitem>
<para><ulink url="&kernel;linux/docs/manpages/"/></para>
</listitem>
@@ -356,7 +356,7 @@
</varlistentry>
<varlistentry>
- <term>Psmisc (&psmisc-version;) - 193 KB:</term>
+ <term>Psmisc (&psmisc-version;) - 194 KB:</term>
<listitem>
<para><ulink url="&sourceforge;psmisc/"/></para>
</listitem>
@@ -377,7 +377,7 @@
</varlistentry>
<varlistentry>
- <term>Shadow (&shadow-version;) - 1,057 KB:</term>
+ <term>Shadow (&shadow-version;) - 1,218 KB:</term>
<listitem>
<para><ulink url="ftp://ftp.pld.org.pl/software/shadow/"/></para>
diff --git a/chapter03/patches.xml b/chapter03/patches.xml
index 8f3578a80..d2b3b3380 100644
--- a/chapter03/patches.xml
+++ b/chapter03/patches.xml
@@ -35,7 +35,7 @@
<varlistentry>
<term>Coreutils Internationalization Fixes Patch - 110 KB:</term>
<listitem>
- <para><ulink url="&alexpatches;&coreutils-i18n-patch;"/></para>
+ <para><ulink url="&patches-root;&coreutils-i18n-patch;"/></para>
</listitem>
</varlistentry>
@@ -56,7 +56,7 @@
<varlistentry>
<term>Diffutils Internationalization Fixes Patch - 18 KB:</term>
<listitem>
- <para><ulink url="&alexpatches;&diffutils-i18n-patch;"/></para>
+ <para><ulink url="&patches-root;&diffutils-i18n-patch;"/></para>
</listitem>
</varlistentry>
@@ -91,7 +91,7 @@
<varlistentry>
<term>Grep RedHat Fixes Patch - 56 KB:</term>
<listitem>
- <para><ulink url="&alexpatches;&grep-fixes-patch;"/></para>
+ <para><ulink url="&patches-root;&grep-fixes-patch;"/></para>
</listitem>
</varlistentry>
@@ -121,7 +121,7 @@
<varlistentry>
<term>Kbd Backspace/Delete Fix Patch - 1 KB:</term>
<listitem>
- <para><ulink url="&alexpatches;&kbd-backspace-patch;"/></para>
+ <para><ulink url="&patches-root;&kbd-backspace-patch;"/></para>
</listitem>
</varlistentry>
@@ -149,7 +149,7 @@
<varlistentry>
<term>Linux kernel UTF-8 Composing Patch - 3 KB:</term>
<listitem>
- <para><ulink url="&alexpatches;&linux-utf8-patch;"/></para>
+ <para><ulink url="&patches-root;&linux-utf8-patch;"/></para>
</listitem>
</varlistentry>
@@ -163,35 +163,35 @@
<varlistentry>
<term>Ncurses Fixes Patch - 9 KB:</term>
<listitem>
- <para><ulink url="&alexpatches;&ncurses-fixes-patch;"/></para>
+ <para><ulink url="&patches-root;&ncurses-fixes-patch;"/></para>
</listitem>
</varlistentry>
<varlistentry>
- <term>Perl Libc Patch - 1 KB:</term>
+ <term>Perl DB_File Module Update patch - 6 KB:</term>
<listitem>
- <para><ulink url="&patches-root;&perl-libc-patch;"/></para>
+ <para><ulink url="&patches-root;&perl-db_file-patch;"/></para>
</listitem>
</varlistentry>
<varlistentry>
- <term>Perl Sprintf Vulnerability Patch - 9 KB:</term>
+ <term>Perl Libc Patch - 1 KB:</term>
<listitem>
- <para><ulink url="&patches-root;&perl-sprintf-patch;"/></para>
+ <para><ulink url="&patches-root;&perl-libc-patch;"/></para>
</listitem>
</varlistentry>
<varlistentry>
- <term>Shadow Configure Script Patch - 1KB:</term>
+ <term>Perl Sprintf Vulnerability Patch - 9 KB:</term>
<listitem>
- <para><ulink url="&patches-root;&shadow-configure-patch;"/></para>
+ <para><ulink url="&patches-root;&perl-sprintf-patch;"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Sysklogd 8-Bit Cleanness Patch - 1 KB:</term>
<listitem>
- <para><ulink url="&lfs-root;patches/downloads/sysklogd/&sysklogd-8bit-patch;"/></para>
+ <para><ulink url="&patches-root;&sysklogd-8bit-patch;"/></para>
</listitem>
</varlistentry>
@@ -219,7 +219,7 @@
<varlistentry>
<term>Texinfo Multibyte Fixes Patch - 1 KB:</term>
<listitem>
- <para><ulink url="&alexpatches;&texinfo-multibyte-patch;"/></para>
+ <para><ulink url="&patches-root;&texinfo-multibyte-patch;"/></para>
</listitem>
</varlistentry>
diff --git a/chapter05/adjusting.xml b/chapter05/adjusting.xml
index b48a17128..f512b6cf4 100644
--- a/chapter05/adjusting.xml
+++ b/chapter05/adjusting.xml
@@ -15,27 +15,20 @@
these libraries. In order to accomplish this, the linker and the
compiler's specs file need to be adjusted.</para>
- <para>The linker, adjusted at the end of the first pass of Binutils,
- is installed by running the following command from within the
- <filename class="directory">binutils-build</filename> directory:</para>
+ <para>The linker, adjusted at the end of the first pass of Binutils, needs
+ to be renamed so that it can be properly found and used. First, backup the
+ original linker, then replace it with the adjusted linker. We'll also
+ create a link to its counterpart in <filename class="directory">
+ /tools/$(gcc -dumpmachine)/bin</filename></para>
-<screen><userinput>make -C ld install</userinput></screen>
+<screen><userinput>mv -v /tools/bin/{ld,ld-old}
+mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
+mv -v /tools/bin/{ld-new,ld}
+ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld</userinput></screen>
<para>From this point onwards, everything will link only against the
libraries in <filename class="directory">/tools/lib</filename>.</para>
- <note>
- <para>If the earlier warning to retain the Binutils source and
- build directories from the first pass was missed, ignore the above
- command. This results in a small chance that the subsequent testing
- programs will link against libraries on the host. This is not ideal,
- but it is not a major problem. The situation is corrected when the
- second pass of Binutils is installed later.</para>
- </note>
-
- <para>Now that the adjusted linker is installed, the Binutils build and source
- directories should be removed.</para>
-
<para>The next task is to point GCC to the new dynamic linker. This is done by
dumping GCC's <quote>specs</quote> file to a location where GCC will look for it
by default. A simple <command>sed</command> substitution then alters the
diff --git a/chapter05/bash.xml b/chapter05/bash.xml
index e71640991..025789793 100644
--- a/chapter05/bash.xml
+++ b/chapter05/bash.xml
@@ -46,12 +46,12 @@
<screen><userinput>./configure --prefix=/tools --without-bash-malloc</userinput></screen>
<variablelist>
- <title>The meaning of the configure options:</title>
+ <title>The meaning of the configure option:</title>
<varlistentry>
<term><parameter>--without-bash-malloc</parameter></term>
<listitem>
- <para>This options turns off the use of Bash's memory allocation
+ <para>This option turns off the use of Bash's memory allocation
(<function>malloc</function>) function which is known to cause
segmentation faults. By turning this option off, Bash will use
the <function>malloc</function> functions from Glibc which are
diff --git a/chapter05/binutils-pass1.xml b/chapter05/binutils-pass1.xml
index 4435cfca0..66babd397 100644
--- a/chapter05/binutils-pass1.xml
+++ b/chapter05/binutils-pass1.xml
@@ -105,7 +105,8 @@ cd ../binutils-build</userinput></screen>
later on:</para>
<screen><userinput>make -C ld clean
-make -C ld LIB_PATH=/tools/lib</userinput></screen>
+make -C ld LIB_PATH=/tools/lib
+cp -v ld/ld-new /tools/bin</userinput></screen>
<variablelist>
<title>The meaning of the make parameters:</title>
@@ -134,12 +135,6 @@ make -C ld LIB_PATH=/tools/lib</userinput></screen>
</variablelist>
- <warning>
- <para><emphasis>Do not</emphasis> remove the Binutils build and source
- directories yet. These will be needed again in their current state later
- in this chapter.</para>
- </warning>
-
</sect2>
<sect2 role="content">
diff --git a/chapter05/binutils-pass2.xml b/chapter05/binutils-pass2.xml
index 8a7cc53ff..eecf6eb5f 100644
--- a/chapter05/binutils-pass2.xml
+++ b/chapter05/binutils-pass2.xml
@@ -49,7 +49,7 @@ cd ../binutils-build</userinput></screen>
<para>Prepare Binutils for compilation:</para>
<screen><userinput>../binutils-&binutils-version;/configure --prefix=/tools \
- --disable-nls --enable-shared --with-lib-path=/tools/lib</userinput></screen>
+ --disable-nls --with-lib-path=/tools/lib</userinput></screen>
<variablelist>
<title>The meaning of the new configure options:</title>
@@ -86,13 +86,9 @@ cd ../binutils-build</userinput></screen>
the next chapter:</para>
<screen><userinput>make -C ld clean
-make -C ld LIB_PATH=/usr/lib:/lib</userinput></screen>
+make -C ld LIB_PATH=/usr/lib:/lib
+cp -v ld/ld-new /tools/bin</userinput></screen>
- <warning>
- <para><emphasis>Do not</emphasis> remove the Binutils source and build
- directories yet. These directories will be needed again in the next
- chapter in their current state.</para>
- </warning>
</sect2>
diff --git a/chapter05/gcc-pass1.xml b/chapter05/gcc-pass1.xml
index aa2ea3623..28fe4385d 100644
--- a/chapter05/gcc-pass1.xml
+++ b/chapter05/gcc-pass1.xml
@@ -93,7 +93,7 @@ cd ../gcc-build</userinput></screen>
<screen><userinput>make bootstrap</userinput></screen>
<variablelist>
- <title>The meaning of the make parameters:</title>
+ <title>The meaning of the make parameter:</title>
<varlistentry>
<term><parameter>bootstrap</parameter></term>
diff --git a/chapter05/gettext.xml b/chapter05/gettext.xml
index 58063a815..cb7a2ea4f 100644
--- a/chapter05/gettext.xml
+++ b/chapter05/gettext.xml
@@ -50,7 +50,7 @@
./configure --prefix=/tools --disable-shared</userinput></screen>
<variablelist>
- <title>The meaning of the configure options:</title>
+ <title>The meaning of the configure option:</title>
<varlistentry>
<term><parameter>--disable-shared</parameter></term>
diff --git a/chapter05/grep.xml b/chapter05/grep.xml
index 49012584a..fbcafbf87 100644
--- a/chapter05/grep.xml
+++ b/chapter05/grep.xml
@@ -47,7 +47,7 @@
--disable-perl-regexp</userinput></screen>
<variablelist>
- <title>The meaning of the configure options:</title>
+ <title>The meaning of the configure option:</title>
<varlistentry>
<term><parameter>--disable-perl-regexp</parameter></term>
diff --git a/chapter05/introduction.xml b/chapter05/introduction.xml
index fd1a3692e..1704086ef 100644
--- a/chapter05/introduction.xml
+++ b/chapter05/introduction.xml
@@ -52,10 +52,7 @@
<important>
<para>After installing each package, delete its source and build directories,
unless specifically instructed otherwise. Deleting the sources prevents
- mis-configuration when the same package is reinstalled later. Only three
- of the packages need to retain the source and build directories in order
- for their contents to be used by later commands. Pay special attention to
- these reminders.</para>
+ mis-configuration when the same package is reinstalled later.</para>
</important>
<para>Check one last time that the <envar>LFS</envar> environment
diff --git a/chapter06/aboutdebug.xml b/chapter06/aboutdebug.xml
index 5ba986652..5cecada9c 100644
--- a/chapter06/aboutdebug.xml
+++ b/chapter06/aboutdebug.xml
@@ -1,50 +1,53 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
-<sect1 id="ch-system-aboutdebug">
-<title>About Debugging Symbols</title>
-<?dbhtml filename="aboutdebug.html"?>
-
-<para>Most programs and libraries are, by default, compiled with
-debugging symbols included (with <command>gcc</command>'s
-<parameter>-g</parameter> option). This means that when debugging a
-program or library that was compiled with debugging information
-included, the debugger can provide not only memory addresses, but also
-the names of the routines and variables.</para>
-
-<para>However, the inclusion of these debugging symbols enlarges a
-program or library significantly. The following is an example of the
-amount of space these symbols occupy:</para>
-
-<itemizedlist>
-
-<listitem><para>a bash binary
-with debugging symbols: 1200 KB</para></listitem>
-
-<listitem><para>a bash binary
-without debugging symbols: 480 KB</para></listitem>
-
-<listitem><para>Glibc and GCC files (<filename class="directory">/lib</filename>
-and <filename class="directory">/usr/lib</filename>)
-with debugging symbols: 87 MB</para></listitem>
-<listitem><para>Glibc and GCC files
-without debugging symbols: 16 MB</para></listitem>
-
-</itemizedlist>
-
-<para>Sizes may vary depending on which compiler and C
-library were used, but when comparing programs with and without debugging
-symbols, the difference will usually be a factor between two and
-five.</para>
-
-<para>Because most users will never use a debugger on their system
-software, a lot of disk space can be regained by removing these
-symbols. The next section shows how to strip all debugging symbols
-from the programs and libraries. Additional information on system
-optimization can be found at <ulink url="&hints-root;optimization.txt"/>.</para>
+<sect1 id="ch-system-aboutdebug">
+ <?dbhtml filename="aboutdebug.html"?>
+
+ <title>About Debugging Symbols</title>
+
+ <para>Most programs and libraries are, by default, compiled with
+ debugging symbols included (with <command>gcc</command>'s
+ <parameter>-g</parameter> option). This means that when debugging a
+ program or library that was compiled with debugging information
+ included, the debugger can provide not only memory addresses, but also
+ the names of the routines and variables.</para>
+
+ <para>However, the inclusion of these debugging symbols enlarges a
+ program or library significantly. The following is an example of the
+ amount of space these symbols occupy:</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>A <command>bash</command> binary with debugging symbols:
+ 1200 KB</para>
+ </listitem>
+ <listitem>
+ <para>A <command>bash</command> binary without debugging symbols:
+ 480 KB</para>
+ </listitem>
+ <listitem>
+ <para>Glibc and GCC files (<filename class="directory">/lib</filename>
+ and <filename class="directory">/usr/lib</filename>) with debugging
+ symbols: 87 MB</para>
+ </listitem>
+ <listitem>
+ <para>Glibc and GCC files without debugging symbols: 16 MB</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>Sizes may vary depending on which compiler and C library were used,
+ but when comparing programs with and without debugging symbols, the
+ difference will usually be a factor between two and five.</para>
+
+ <para>Because most users will never use a debugger on their system software,
+ a lot of disk space can be regained by removing these symbols. The next
+ section shows how to strip all debugging symbols from the programs and
+ libraries. Additional information on system optimization can be found at
+ <ulink url="&hints-root;optimization.txt"/>.</para>
</sect1>
-
diff --git a/chapter06/autoconf.xml b/chapter06/autoconf.xml
index 4067d02d0..77dc301c7 100644
--- a/chapter06/autoconf.xml
+++ b/chapter06/autoconf.xml
@@ -1,143 +1,177 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-autoconf" role="wrap">
-<title>Autoconf-&autoconf-version;</title>
-<?dbhtml filename="autoconf.html"?>
+ <?dbhtml filename="autoconf.html"?>
+
+ <title>Autoconf-&autoconf-version;</title>
+
+ <indexterm zone="ch-system-autoconf">
+ <primary sortas="a-Autoconf">Autoconf</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
-<indexterm zone="ch-system-autoconf"><primary sortas="a-Autoconf">Autoconf</primary></indexterm>
+ <para>The Autoconf package contains programs for producing shell scripts that
+ can automatically configure source code.</para>
-<sect2 role="package"><title/>
-<para>The Autoconf package contains programs for producing shell scripts that
-can automatically configure source code.</para>
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
-<segmentedlist>
-<segtitle>&buildtime;</segtitle>
-<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>0.5 SBU</seg><seg>8.5 MB</seg></seglistitem>
-</segmentedlist>
+ <seglistitem>
+ <seg>0.5 SBU</seg>
+ <seg>8.5 MB</seg>
+ </seglistitem>
+ </segmentedlist>
-<segmentedlist>
-<segtitle>&dependencies;</segtitle>
-<seglistitem><seg>Bash, Coreutils, Diffutils, Grep,
-M4, Make, Perl, and Sed</seg></seglistitem>
-</segmentedlist>
-</sect2>
+ <segmentedlist>
+ <segtitle>&dependencies;</segtitle>
-<sect2 role="installation">
-<title>Installation of Autoconf</title>
+ <seglistitem>
+ <seg>Bash, Coreutils, Diffutils, Grep, M4, Make, Perl, and Sed</seg>
+ </seglistitem>
+ </segmentedlist>
-<para>Prepare Autoconf for compilation:</para>
+ </sect2>
+
+ <sect2 role="installation">
+ <title>Installation of Autoconf</title>
+
+ <para>Prepare Autoconf for compilation:</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen>
-<para>Compile the package:</para>
+ <para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
-<para>To test the results, issue:
-<userinput>make check</userinput>. This takes a long time, about 2 SBUs.</para>
+ <para>To test the results, issue:
+ <userinput>make check</userinput>.
+ This takes a long time, about 2 SBUs.</para>
-<para>Install the package:</para>
+ <para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
-</sect2>
-
-<sect2 id="contents-autoconf" role="content"><title>Contents of Autoconf</title>
-
-<segmentedlist>
-<segtitle>Installed programs</segtitle>
-<seglistitem><seg>autoconf, autoheader, autom4te,
-autoreconf, autoscan, autoupdate, and ifnames</seg></seglistitem>
-</segmentedlist>
-
-<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
-<?dbfo list-presentation="list"?>
-<?dbhtml list-presentation="table"?>
-
-<varlistentry id="autoconf">
-<term><command>autoconf</command></term>
-<listitem>
-<para>Produces shell scripts that automatically
-configure software source code packages to adapt to many kinds of
-Unix-like systems. The configuration scripts it produces are
-independent&mdash;running them does not require the <command>autoconf</command> program.</para>
-<indexterm zone="ch-system-autoconf autoconf"><primary sortas="b-autoconf">autoconf</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="autoheader">
-<term><command>autoheader</command> </term>
-<listitem>
-<para>A tool for creating template files of C
-<emphasis>#define</emphasis> statements for configure to use</para>
-<indexterm zone="ch-system-autoconf autoheader"><primary sortas="b-autoheader">autoheader</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="autom4te">
-<term><command>autom4te</command></term>
-<listitem>
-<para>A wrapper for the M4 macro processor</para>
-<indexterm zone="ch-system-autoconf autom4te"><primary sortas="b-autom4te">autom4te</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="autoreconf">
-<term><command>autoreconf</command></term>
-<listitem>
-<para>Automatically runs <command>autoconf</command>,
-<command>autoheader</command>, <command>aclocal</command>,
-<command>automake</command>, <command>gettextize</command>, and
-<command>libtoolize</command> in the correct order to save time
-when changes are made to <command>autoconf</command> and
-<command>automake</command> template files</para>
-<indexterm zone="ch-system-autoconf autoreconf"><primary sortas="b-autoreconf">autoreconf</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="autoscan">
-<term><command>autoscan</command> </term>
-<listitem>
-<para>Helps to create a <filename>configure.in</filename> file for a
-software package; it examines the source files in a directory tree,
-searching them for common portability issues, and creates a
-<filename>configure.scan</filename> file that serves as as a
-preliminary <filename>configure.in</filename> file for the
-package</para>
-<indexterm zone="ch-system-autoconf autoscan"><primary sortas="b-autoscan">autoscan</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="autoupdate">
-<term><command>autoupdate</command></term>
-<listitem>
-<para>Modifies a <filename>configure.in</filename> file that still
-calls <command>autoconf</command> macros by their old names to use the
-current macro names</para>
-<indexterm zone="ch-system-autoconf autoupdate"><primary sortas="b-autoupdate">autoupdate</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="ifnames">
-<term><command>ifnames</command> </term>
-<listitem>
-<para>Helps when writing <filename>configure.in</filename> files
-for a software package; it prints the identifiers that the package
-uses in C preprocessor conditionals. If a package has already been set
-up to have some portability, this program can help determine what
-<command>configure</command> needs to check for. It can also fill in
-gaps in a <filename>configure.in</filename> file generated by
-<command>autoscan</command></para>
-<indexterm zone="ch-system-autoconf ifnames"><primary sortas="b-ifnames">ifnames</primary></indexterm>
-</listitem>
-</varlistentry>
-</variablelist>
-
-</sect2>
+ </sect2>
+
+ <sect2 id="contents-autoconf" role="content">
+ <title>Contents of Autoconf</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+
+ <seglistitem>
+ <seg>autoconf, autoheader, autom4te, autoreconf, autoscan, autoupdate,
+ and ifnames</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="autoconf">
+ <term><command>autoconf</command></term>
+ <listitem>
+ <para>Produces shell scripts that automatically configure software
+ source code packages to adapt to many kinds of Unix-like systems.
+ The configuration scripts it produces are independent&mdash;running
+ them does not require the <command>autoconf</command> program.</para>
+ <indexterm zone="ch-system-autoconf autoconf">
+ <primary sortas="b-autoconf">autoconf</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="autoheader">
+ <term><command>autoheader</command> </term>
+ <listitem>
+ <para>A tool for creating template files of C
+ <emphasis>#define</emphasis> statements for configure to use</para>
+ <indexterm zone="ch-system-autoconf autoheader">
+ <primary sortas="b-autoheader">autoheader</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="autom4te">
+ <term><command>autom4te</command></term>
+ <listitem>
+ <para>A wrapper for the M4 macro processor</para>
+ <indexterm zone="ch-system-autoconf autom4te">
+ <primary sortas="b-autom4te">autom4te</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="autoreconf">
+ <term><command>autoreconf</command></term>
+ <listitem>
+ <para>Automatically runs <command>autoconf</command>,
+ <command>autoheader</command>, <command>aclocal</command>,
+ <command>automake</command>, <command>gettextize</command>, and
+ <command>libtoolize</command> in the correct order to save time
+ when changes are made to <command>autoconf</command> and
+ <command>automake</command> template files</para>
+ <indexterm zone="ch-system-autoconf autoreconf">
+ <primary sortas="b-autoreconf">autoreconf</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="autoscan">
+ <term><command>autoscan</command> </term>
+ <listitem>
+ <para>Helps to create a <filename>configure.in</filename> file for a
+ software package; it examines the source files in a directory tree,
+ searching them for common portability issues, and creates a
+ <filename>configure.scan</filename> file that serves as as a
+ preliminary <filename>configure.in</filename> file for the
+ package</para>
+ <indexterm zone="ch-system-autoconf autoscan">
+ <primary sortas="b-autoscan">autoscan</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="autoupdate">
+ <term><command>autoupdate</command></term>
+ <listitem>
+ <para>Modifies a <filename>configure.in</filename> file that still
+ calls <command>autoconf</command> macros by their old names to use the
+ current macro names</para>
+ <indexterm zone="ch-system-autoconf autoupdate">
+ <primary sortas="b-autoupdate">autoupdate</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="ifnames">
+ <term><command>ifnames</command> </term>
+ <listitem>
+ <para>Helps when writing <filename>configure.in</filename> files
+ for a software package; it prints the identifiers that the package
+ uses in C preprocessor conditionals. If a package has already been set
+ up to have some portability, this program can help determine what
+ <command>configure</command> needs to check for. It can also fill in
+ gaps in a <filename>configure.in</filename> file generated by
+ <command>autoscan</command></para>
+ <indexterm zone="ch-system-autoconf ifnames">
+ <primary sortas="b-ifnames">ifnames</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
</sect1>
-
diff --git a/chapter06/automake.xml b/chapter06/automake.xml
index 71350a2db..884776983 100644
--- a/chapter06/automake.xml
+++ b/chapter06/automake.xml
@@ -1,217 +1,272 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-automake" role="wrap">
-<title>Automake-&automake-version;</title>
-<?dbhtml filename="automake.html"?>
+ <?dbhtml filename="automake.html"?>
+
+ <title>Automake-&automake-version;</title>
+
+ <indexterm zone="ch-system-automake">
+ <primary sortas="a-Automake">Automake</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
-<indexterm zone="ch-system-automake"><primary sortas="a-Automake">Automake</primary></indexterm>
+ <para>The Automake package contains programs for generating Makefiles for use
+ with Autoconf.</para>
-<sect2 role="package"><title/>
-<para>The Automake package contains programs for generating Makefiles for use
-with Autoconf.</para>
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
-<segmentedlist>
-<segtitle>&buildtime;</segtitle>
-<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>0.2 SBU</seg><seg>8.8 MB</seg></seglistitem>
-</segmentedlist>
+ <seglistitem>
+ <seg>0.2 SBU</seg>
+ <seg>8.8 MB</seg>
+ </seglistitem>
+ </segmentedlist>
-<segmentedlist>
-<segtitle>&dependencies;</segtitle>
-<seglistitem><seg>Autoconf, Bash, Coreutils,
-Diffutils, Grep, M4, Make, Perl, and Sed</seg></seglistitem>
-</segmentedlist>
-</sect2>
+ <segmentedlist>
+ <segtitle>&dependencies;</segtitle>
-<sect2 role="installation">
-<title>Installation of Automake</title>
+ <seglistitem>
+ <seg>Autoconf, Bash, Coreutils, Diffutils, Grep, M4, Make, Perl,
+ and Sed</seg>
+ </seglistitem>
+ </segmentedlist>
-<para>Prepare Automake for compilation:</para>
+ </sect2>
+
+ <sect2 role="installation">
+ <title>Installation of Automake</title>
+
+ <para>Prepare Automake for compilation:</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen>
-<para>Compile the package:</para>
+ <para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
-<para>To test the results, issue:
-<userinput>make check</userinput>. This takes a long time, about 5 SBUs.</para>
+ <para>To test the results, issue:
+ <userinput>make check</userinput>.
+ This takes a long time, about 5 SBUs.</para>
-<para>Install the package:</para>
+ <para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
-</sect2>
-
-
-<sect2 id="contents-automake" role="content"><title>Contents of Automake</title>
-
-<segmentedlist>
-<segtitle>Installed programs</segtitle>
-<seglistitem><seg>acinstall, aclocal, aclocal-&automake-version;,
-automake, automake-&automake-version;,
-compile, config.guess, config.sub, depcomp, elisp-comp, install-sh, mdate-sh,
-missing, mkinstalldirs, py-compile, symlink-tree, and ylwrap</seg></seglistitem>
-</segmentedlist>
-
-<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
-<?dbfo list-presentation="list"?>
-<?dbhtml list-presentation="table"?>
-
-<varlistentry id="acinstall">
-<term><command>acinstall</command></term>
-<listitem>
-<para>A script that installs aclocal-style M4 files</para>
-<indexterm zone="ch-system-automake acinstall"><primary sortas="b-acinstall">acinstall</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="aclocal">
-<term><command>aclocal</command></term>
-<listitem>
-<para>Generates <filename>aclocal.m4</filename>
-files based on the contents of <filename>configure.in</filename> files</para>
-<indexterm zone="ch-system-automake aclocal"><primary sortas="b-aclocal">aclocal</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="aclocal-version">
-<term><command>aclocal-&automake-version;</command></term>
-<listitem>
-<para>A hard link to <command>aclocal</command></para>
-<indexterm zone="ch-system-automake aclocal-version"><primary
-sortas="b-aclocal-&automake-version;">aclocal-&automake-version;</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="automake">
-<term><command>automake</command></term>
-<listitem>
-<para>A tool for automatically generating
-<filename>Makefile.in</filename> files from
-<filename>Makefile.am</filename> files. To create all the
-<filename>Makefile.in</filename> files for a package, run this program
-in the top-level directory. By scanning the
-<filename>configure.in</filename> file, it automatically finds each
-appropriate <filename>Makefile.am</filename> file and generates the
-corresponding <filename>Makefile.in</filename> file</para>
-<indexterm zone="ch-system-automake automake"><primary sortas="b-automake">automake</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="automake-version">
-<term><command>automake-&automake-version;</command></term>
-<listitem>
-<para>A hard link to <command>automake</command></para>
-<indexterm zone="ch-system-automake automake-version"><primary
-sortas="b-automake-&automake-version;">automake-&automake-version;</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="compile">
-<term><command>compile</command></term>
-<listitem>
-<para>A wrapper for compilers</para>
-<indexterm zone="ch-system-automake compile"><primary sortas="b-compile">compile</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="config.guess">
-<term><command>config.guess</command></term>
-<listitem>
-<para>A script that attempts to guess
-the canonical triplet for the given build, host, or target architecture</para>
-<indexterm zone="ch-system-automake config.guess"><primary sortas="b-config.guess">config.guess</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="config.sub">
-<term><command>config.sub</command></term>
-<listitem>
-<para>A configuration validation subroutine script</para>
-<indexterm zone="ch-system-automake config.sub"><primary sortas="b-config.sub">config.sub</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="depcomp">
-<term><command>depcomp</command></term>
-<listitem>
-<para>A script for compiling a program so that dependency information
-is generated in addition to the desired output</para>
-<indexterm zone="ch-system-automake depcomp"><primary sortas="b-depcomp">depcomp</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="elisp-comp">
-<term><command>elisp-comp</command></term>
-<listitem>
-<para>Byte-compiles Emacs Lisp code</para>
-<indexterm zone="ch-system-automake elisp-comp"><primary sortas="b-elisp-comp">elisp-comp</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="install-sh">
-<term><command>install-sh</command></term>
-<listitem>
-<para>A script that installs a program, script, or data file</para>
-<indexterm zone="ch-system-automake install-sh"><primary sortas="b-install-sh">install-sh</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="mdate-sh">
-<term><command>mdate-sh</command></term>
-<listitem>
-<para>A script that prints the modification time of a file or directory</para>
-<indexterm zone="ch-system-automake mdate-sh"><primary sortas="b-mdate-sh">mdate-sh</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="missing">
-<term><command>missing</command></term>
-<listitem>
-<para>A script acting as a common stub for missing GNU programs during
-an installation</para>
-<indexterm zone="ch-system-automake missing"><primary sortas="b-missing">missing</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="mkinstalldirs">
-<term><command>mkinstalldirs</command></term>
-<listitem>
-<para>A script that creates a directory tree</para>
-<indexterm zone="ch-system-automake mkinstalldirs"><primary sortas="b-mkinstalldirs">mkinstalldirs</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="py-compile">
-<term><command>py-compile</command></term>
-<listitem>
-<para>Compiles a Python program</para>
-<indexterm zone="ch-system-automake py-compile"><primary sortas="b-py-compile">py-compile</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="symlink-tree">
-<term><command>symlink-tree</command></term>
-<listitem>
-<para>A script to create a symlink tree of a directory tree</para>
-<indexterm zone="ch-system-automake symlink-tree"><primary sortas="b-symlink-tree">symlink-tree</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="ylwrap">
-<term><command>ylwrap</command></term>
-<listitem>
-<para>A wrapper for <command>lex</command> and <command>yacc</command></para>
-<indexterm zone="ch-system-automake ylwrap"><primary sortas="b-ylwrap">ylwrap</primary></indexterm>
-</listitem>
-</varlistentry>
-</variablelist>
-
-</sect2>
+ </sect2>
+
+
+ <sect2 id="contents-automake" role="content">
+ <title>Contents of Automake</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+
+ <seglistitem>
+ <seg>acinstall, aclocal, aclocal-&automake-version;, automake,
+ automake-&automake-version;, compile, config.guess, config.sub,
+ depcomp, elisp-comp, install-sh, mdate-sh, missing, mkinstalldirs,
+ py-compile, symlink-tree, and ylwrap</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="acinstall">
+ <term><command>acinstall</command></term>
+ <listitem>
+ <para>A script that installs aclocal-style M4 files</para>
+ <indexterm zone="ch-system-automake acinstall">
+ <primary sortas="b-acinstall">acinstall</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="aclocal">
+ <term><command>aclocal</command></term>
+ <listitem>
+ <para>Generates <filename>aclocal.m4</filename> files based on the
+ contents of <filename>configure.in</filename> files</para>
+ <indexterm zone="ch-system-automake aclocal">
+ <primary sortas="b-aclocal">aclocal</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="aclocal-version">
+ <term><command>aclocal-&automake-version;</command></term>
+ <listitem>
+ <para>A hard link to <command>aclocal</command></para>
+ <indexterm zone="ch-system-automake aclocal-version">
+ <primary sortas="b-aclocal-&automake-version;">aclocal-&automake-version;</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="automake">
+ <term><command>automake</command></term>
+ <listitem>
+ <para>A tool for automatically generating
+ <filename>Makefile.in</filename> files from
+ <filename>Makefile.am</filename> files. To create all the
+ <filename>Makefile.in</filename> files for a package, run this program
+ in the top-level directory. By scanning the
+ <filename>configure.in</filename> file, it automatically finds each
+ appropriate <filename>Makefile.am</filename> file and generates the
+ corresponding <filename>Makefile.in</filename> file</para>
+ <indexterm zone="ch-system-automake automake">
+ <primary sortas="b-automake">automake</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="automake-version">
+ <term><command>automake-&automake-version;</command></term>
+ <listitem>
+ <para>A hard link to <command>automake</command></para>
+ <indexterm zone="ch-system-automake automake-version">
+ <primary sortas="b-automake-&automake-version;">automake-&automake-version;</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="compile">
+ <term><command>compile</command></term>
+ <listitem>
+ <para>A wrapper for compilers</para>
+ <indexterm zone="ch-system-automake compile">
+ <primary sortas="b-compile">compile</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="config.guess">
+ <term><command>config.guess</command></term>
+ <listitem>
+ <para>A script that attempts to guess the canonical triplet for
+ the given build, host, or target architecture</para>
+ <indexterm zone="ch-system-automake config.guess">
+ <primary sortas="b-config.guess">config.guess</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="config.sub">
+ <term><command>config.sub</command></term>
+ <listitem>
+ <para>A configuration validation subroutine script</para>
+ <indexterm zone="ch-system-automake config.sub">
+ <primary sortas="b-config.sub">config.sub</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="depcomp">
+ <term><command>depcomp</command></term>
+ <listitem>
+ <para>A script for compiling a program so that dependency information
+ is generated in addition to the desired output</para>
+ <indexterm zone="ch-system-automake depcomp">
+ <primary sortas="b-depcomp">depcomp</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="elisp-comp">
+ <term><command>elisp-comp</command></term>
+ <listitem>
+ <para>Byte-compiles Emacs Lisp code</para>
+ <indexterm zone="ch-system-automake elisp-comp">
+ <primary sortas="b-elisp-comp">elisp-comp</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="install-sh">
+ <term><command>install-sh</command></term>
+ <listitem>
+ <para>A script that installs a program, script, or data file</para>
+ <indexterm zone="ch-system-automake install-sh">
+ <primary sortas="b-install-sh">install-sh</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="mdate-sh">
+ <term><command>mdate-sh</command></term>
+ <listitem>
+ <para>A script that prints the modification time of a file or
+ directory</para>
+ <indexterm zone="ch-system-automake mdate-sh">
+ <primary sortas="b-mdate-sh">mdate-sh</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="missing">
+ <term><command>missing</command></term>
+ <listitem>
+ <para>A script acting as a common stub for missing GNU programs during
+ an installation</para>
+ <indexterm zone="ch-system-automake missing">
+ <primary sortas="b-missing">missing</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="mkinstalldirs">
+ <term><command>mkinstalldirs</command></term>
+ <listitem>
+ <para>A script that creates a directory tree</para>
+ <indexterm zone="ch-system-automake mkinstalldirs">
+ <primary sortas="b-mkinstalldirs">mkinstalldirs</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="py-compile">
+ <term><command>py-compile</command></term>
+ <listitem>
+ <para>Compiles a Python program</para>
+ <indexterm zone="ch-system-automake py-compile">
+ <primary sortas="b-py-compile">py-compile</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="symlink-tree">
+ <term><command>symlink-tree</command></term>
+ <listitem>
+ <para>A script to create a symlink tree of a directory tree</para>
+ <indexterm zone="ch-system-automake symlink-tree">
+ <primary sortas="b-symlink-tree">symlink-tree</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="ylwrap">
+ <term><command>ylwrap</command></term>
+ <listitem>
+ <para>A wrapper for <command>lex</command> and
+ <command>yacc</command></para>
+ <indexterm zone="ch-system-automake ylwrap">
+ <primary sortas="b-ylwrap">ylwrap</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
</sect1>
-
diff --git a/chapter06/bash.xml b/chapter06/bash.xml
index 81c52ef0d..4d07b8109 100644
--- a/chapter06/bash.xml
+++ b/chapter06/bash.xml
@@ -1,122 +1,154 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-bash" role="wrap">
-<title>Bash-&bash-version;</title>
-<?dbhtml filename="bash.html"?>
+ <?dbhtml filename="bash.html"?>
+
+ <title>Bash-&bash-version;</title>
+
+ <indexterm zone="ch-system-bash">
+ <primary sortas="a-Bash">Bash</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
-<indexterm zone="ch-system-bash"><primary sortas="a-Bash">Bash</primary></indexterm>
+ <para>The Bash package contains the Bourne-Again SHell.</para>
-<sect2 role="package"><title/>
-<para>The Bash package contains the Bourne-Again SHell.</para>
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
-<segmentedlist>
-<segtitle>&buildtime;</segtitle>
-<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>1.2 SBU</seg><seg>24.6 MB</seg></seglistitem>
-</segmentedlist>
+ <seglistitem>
+ <seg>1.2 SBU</seg>
+ <seg>24.6 MB</seg>
+ </seglistitem>
+ </segmentedlist>
-<segmentedlist>
-<segtitle>&dependencies;</segtitle>
-<seglistitem><seg>Binutils, Coreutils, Diffutils, Gawk,
-GCC, Glibc, Grep, Make, Ncurses, Readline, and Sed.</seg></seglistitem>
-</segmentedlist>
-</sect2>
+ <segmentedlist>
+ <segtitle>&dependencies;</segtitle>
-<sect2 role="installation">
-<title>Installation of Bash</title>
+ <seglistitem>
+ <seg>Binutils, Coreutils, Diffutils, Gawk, GCC, Glibc, Grep, Make,
+ Ncurses, Readline, and Sed</seg>
+ </seglistitem>
+ </segmentedlist>
-<para>If you downloaded the Bash documentation tarball and wish to install HTML
-documentation, issue the following commands:</para>
+ </sect2>
+
+ <sect2 role="installation">
+ <title>Installation of Bash</title>
+
+ <para>If you downloaded the Bash documentation tarball and wish to install
+ HTML documentation, issue the following commands:</para>
<screen><userinput>tar -xvf ../bash-doc-&bash-doc-version;.tar.gz &amp;&amp;
sed -i "s|htmldir = @htmldir@|htmldir = /usr/share/doc/bash-&bash-version;|" \
Makefile.in</userinput></screen>
-<para>Prepare Bash for compilation:</para>
+ <para>Prepare Bash for compilation:</para>
<screen><userinput>./configure --prefix=/usr --bindir=/bin \
--without-bash-malloc --with-installed-readline</userinput></screen>
-<para>The meaning of the configure options:</para>
+ <variablelist>
+ <title>The meaning of the configure options:</title>
-<variablelist>
-<varlistentry>
-<term><parameter>--with-installed-readline</parameter></term>
-<listitem><para>This option tells Bash to use the
-<filename class="libraryfile">readline</filename> library that is already installed
-on the system rather than using its own readline version.</para></listitem>
-</varlistentry>
-</variablelist>
+ <varlistentry>
+ <term><parameter>--with-installed-readline</parameter></term>
+ <listitem>
+ <para>This option tells Bash to use the <filename
+ class="libraryfile">readline</filename> library that is already
+ installed on the system rather than using its own readline
+ version.</para>
+ </listitem>
+ </varlistentry>
-<para>Compile the package:</para>
+ </variablelist>
+
+ <para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
-<para>To test the results, issue:
-<userinput>make tests</userinput>.</para>
+ <para>To test the results, issue:
+ <userinput>make tests</userinput>.</para>
-<para>Install the package:</para>
+ <para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
-<para>Run the newly compiled <command>bash</command> program (replacing the one that is
-currently being executed):</para>
+ <para>Run the newly compiled <command>bash</command> program (replacing the one that is
+ currently being executed):</para>
<screen role="nodump"><userinput>exec /bin/bash --login +h</userinput></screen>
-<note><para>The parameters used make the <command>bash</command>
-process an interactive login shell and continue to disable hashing so
-that new programs are found as they become available.</para></note>
-
-</sect2>
-
-
-<sect2 id="contents-bash" role="content"><title>Contents of Bash</title>
-
-<segmentedlist>
-<segtitle>Installed programs</segtitle>
-<seglistitem><seg>bash, bashbug, and sh (link to bash)</seg></seglistitem>
-</segmentedlist>
-
-<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
-<?dbfo list-presentation="list"?>
-<?dbhtml list-presentation="table"?>
-
-<varlistentry id="bash">
-<term><command>bash</command></term>
-<listitem>
-<para>A widely-used command interpreter; it performs many types of
-expansions and substitutions on a given command line before executing
-it, thus making this interpreter a powerful tool</para>
-<indexterm zone="ch-system-bash bash"><primary sortas="b-bash">bash</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bashbug">
-<term><command>bashbug</command></term>
-<listitem>
-<para>A shell script to help the user compose and mail standard formatted bug
-reports concerning <command>bash</command></para>
-<indexterm zone="ch-system-bash bashbug"><primary sortas="b-bashbug">bashbug</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="sh">
-<term><command>sh</command></term>
-<listitem>
-<para>A symlink to the <command>bash</command> program; when invoked
-as <command>sh</command>, <command>bash</command> tries to mimic the
-startup behavior of historical versions of <command>sh</command> as
-closely as possible, while conforming to the POSIX standard as well</para>
-<indexterm zone="ch-system-bash sh"><primary sortas="b-sh">sh</primary></indexterm>
-</listitem>
-</varlistentry>
-</variablelist>
-
-</sect2>
+ <note>
+ <para>The parameters used make the <command>bash</command>
+ process an interactive login shell and continue to disable hashing so
+ that new programs are found as they become available.</para>
+ </note>
+
+ </sect2>
+
+ <sect2 id="contents-bash" role="content">
+ <title>Contents of Bash</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+
+ <seglistitem>
+ <seg>bash, bashbug, and sh (link to bash)</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="bash">
+ <term><command>bash</command></term>
+ <listitem>
+ <para>A widely-used command interpreter; it performs many types of
+ expansions and substitutions on a given command line before executing
+ it, thus making this interpreter a powerful tool</para>
+ <indexterm zone="ch-system-bash bash">
+ <primary sortas="b-bash">bash</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bashbug">
+ <term><command>bashbug</command></term>
+ <listitem>
+ <para>A shell script to help the user compose and mail standard
+ formatted bug reports concerning <command>bash</command></para>
+ <indexterm zone="ch-system-bash bashbug">
+ <primary sortas="b-bashbug">bashbug</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="sh">
+ <term><command>sh</command></term>
+ <listitem>
+ <para>A symlink to the <command>bash</command> program; when invoked
+ as <command>sh</command>, <command>bash</command> tries to mimic the
+ startup behavior of historical versions of <command>sh</command> as
+ closely as possible, while conforming to the POSIX standard as
+ well</para>
+ <indexterm zone="ch-system-bash sh">
+ <primary sortas="b-sh">sh</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
</sect1>
-
diff --git a/chapter06/binutils.xml b/chapter06/binutils.xml
index d26a32303..0d1184ebf 100644
--- a/chapter06/binutils.xml
+++ b/chapter06/binutils.xml
@@ -1,268 +1,336 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-binutils" role="wrap">
-<title>Binutils-&binutils-version;</title>
-<?dbhtml filename="binutils.html"?>
+ <?dbhtml filename="binutils.html"?>
+
+ <title>Binutils-&binutils-version;</title>
+
+ <indexterm zone="ch-system-binutils">
+ <primary sortas="a-Binutils">Binutils</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
+
+ <para>The Binutils package contains a linker, an assembler, and other
+ tools for handling object files.</para>
-<indexterm zone="ch-system-binutils"><primary sortas="a-Binutils">Binutils</primary></indexterm>
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
-<sect2 role="package"><title/>
-<para>The Binutils package contains a linker, an assembler, and other tools for
-handling object files.</para>
+ <seglistitem>
+ <seg>1.3 SBU</seg>
+ <seg>158 MB</seg>
+ </seglistitem>
+ </segmentedlist>
-<segmentedlist>
-<segtitle>&buildtime;</segtitle>
-<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>1.3 SBU</seg><seg>158 MB</seg></seglistitem>
-</segmentedlist>
+ <segmentedlist>
+ <segtitle>&dependencies;</segtitle>
-<segmentedlist>
-<segtitle>&dependencies;</segtitle>
-<seglistitem><seg>Bash, Coreutils, Diffutils, Expect, GCC, Gettext,
-Glibc, Grep, Make, Perl, Sed, Tcl, and Texinfo</seg></seglistitem>
-</segmentedlist>
-</sect2>
+ <seglistitem>
+ <seg>Bash, Coreutils, Diffutils, Expect, GCC, Gettext, Glibc, Grep,
+ Make, Perl, Sed, Tcl, and Texinfo</seg>
+ </seglistitem>
+ </segmentedlist>
-<sect2 role="installation">
-<title>Installation of Binutils</title>
+ </sect2>
-<para>Verify that the PTYs are working properly inside the chroot
-environment. Check that everything is set up correctly by performing a
-simple test:</para>
+ <sect2 role="installation">
+ <title>Installation of Binutils</title>
+
+ <para>Verify that the PTYs are working properly inside the chroot
+ environment. Check that everything is set up correctly by performing a
+ simple test:</para>
<screen><userinput>expect -c "spawn ls"</userinput></screen>
-<para>If the following message shows up, the chroot environment is not
-set up for proper PTY operation:</para>
+ <para>If the following message shows up, the chroot environment is not
+ set up for proper PTY operation:</para>
-<screen><computeroutput>The system has no more ptys.
+<screen><computeroutput>The system has no more ptys.
Ask your system administrator to create more.</computeroutput></screen>
-<para>This issue needs to be resolved before running the test suites
-for Binutils and GCC.</para>
+ <para>This issue needs to be resolved before running the test suites
+ for Binutils and GCC.</para>
-<para>The Binutils documentation recommends building Binutils outside of the
-source directory in a dedicated build directory:</para>
+ <para>The Binutils documentation recommends building Binutils outside of the
+ source directory in a dedicated build directory:</para>
<screen><userinput>mkdir -v ../binutils-build
cd ../binutils-build</userinput></screen>
-<para>Prepare Binutils for compilation:</para>
+ <para>Prepare Binutils for compilation:</para>
<screen><userinput>../binutils-&binutils-version;/configure --prefix=/usr \
--enable-shared</userinput></screen>
-<para>Compile the package:</para>
+ <para>Compile the package:</para>
<screen><userinput>make tooldir=/usr</userinput></screen>
-<para>Normally, the tooldir (the directory where the executables will ultimately
-be located) is set to <filename
-class="directory">$(exec_prefix)/$(target_alias)</filename>. For example, i686
-machines would expand that to <filename
-class="directory">/usr/i686-pc-linux-gnu</filename>. Because this is a custom
-system, this target-specific directory in <filename
-class="directory">/usr</filename> is not required. <filename
-class="directory">$(exec_prefix)/$(target_alias)</filename> would be used if the
-system was used to cross-compile (for example, compiling a package on an Intel
-machine that generates code that can be executed on PowerPC machines).</para>
-
-<important><para>The test suite for Binutils in this section is
-considered critical. Do not skip it under any
-circumstances.</para></important>
-
-<para>Test the results:</para>
+ <variablelist>
+ <title>The meaning of the make parameter:</title>
+
+ <varlistentry>
+ <term><parameter>tooldir=/usr</parameter></term>
+ <listitem>
+ <para>Normally, the tooldir (the directory where the executables will
+ ultimately be located) is set to <filename
+ class="directory">$(exec_prefix)/$(target_alias)</filename>. For
+ example, i686 machines would expand that to <filename
+ class="directory">/usr/i686-pc-linux-gnu</filename>. Because this is
+ a custom system, this target-specific directory in <filename
+ class="directory">/usr</filename> is not required. <filename
+ class="directory">$(exec_prefix)/$(target_alias)</filename> would be
+ used if the system was used to cross-compile (for example, compiling a
+ package on an Intel machine that generates code that can be executed
+ on PowerPC machines).</para>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ <important>
+ <para>The test suite for Binutils in this section is considered critical.
+ Do not skip it under any circumstances.</para>
+ </important>
+
+ <para>Test the results:</para>
<screen><userinput>make check</userinput></screen>
-<para>Install the package:</para>
+ <para>Install the package:</para>
<screen><userinput>make tooldir=/usr install</userinput></screen>
-<para>Install the <filename class="headerfile">libiberty</filename> header file that is needed by
-some packages:</para>
+ <para>Install the <filename class="headerfile">libiberty</filename> header
+ file that is needed by some packages:</para>
<screen><userinput>cp -v ../binutils-&binutils-version;/include/libiberty.h /usr/include</userinput></screen>
-</sect2>
-
-
-<sect2 id="contents-binutils" role="content"><title>Contents of Binutils</title>
-
-<segmentedlist>
-<segtitle>Installed programs</segtitle>
-<segtitle>Installed libraries</segtitle>
-<seglistitem><seg>addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump,
-ranlib, readelf, size, strings, and strip</seg>
-<seg>libiberty.a, libbfd.[a,so], and libopcodes.[a,so]</seg></seglistitem>
-</segmentedlist>
-
-<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
-<?dbfo list-presentation="list"?>
-<?dbhtml list-presentation="table"?>
-
-<varlistentry id="addr2line">
-<term><command>addr2line</command></term>
-<listitem>
-<para>Translates program addresses to file names and line numbers;
-given an address and the name of an executable, it uses the debugging
-information in the executable to determine which source file and line
-number are associated with the address</para>
-<indexterm zone="ch-system-binutils addr2line"><primary sortas="b-addr2line">addr2line</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="ar">
-<term><command>ar</command></term>
-<listitem>
-<para>Creates, modifies, and extracts from archives</para>
-<indexterm zone="ch-system-binutils ar"><primary sortas="b-ar">ar</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="as">
-<term><command>as</command></term>
-<listitem>
-<para>An assembler that assembles the output of <command>gcc</command>
-into object files</para>
-<indexterm zone="ch-system-binutils as"><primary sortas="b-as">as</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="c-filt">
-<term><command>c++filt</command></term>
-<listitem>
-<para>Used by the linker to de-mangle C++ and Java symbols and to keep
-overloaded functions from clashing</para>
-<indexterm zone="ch-system-binutils c-filt"><primary sortas="b-c++filt">c++filt</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="gprof">
-<term><command>gprof</command></term>
-<listitem>
-<para>Displays call graph profile data</para>
-<indexterm zone="ch-system-binutils gprof"><primary sortas="b-gprof">gprof</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="ld">
-<term><command>ld</command></term>
-<listitem>
-<para>A linker that combines a number of object and archive files into a single file,
-relocating their data and tying up symbol references</para>
-<indexterm zone="ch-system-binutils ld"><primary sortas="b-ld">ld</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="nm">
-<term><command>nm</command></term>
-<listitem>
-<para>Lists the symbols occurring in a given object file</para>
-<indexterm zone="ch-system-binutils nm"><primary sortas="b-nm">nm</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="objcopy">
-<term><command>objcopy</command></term>
-<listitem>
-<para>Translates one type of object file into another</para>
-<indexterm zone="ch-system-binutils objcopy"><primary sortas="b-objcopy">objcopy</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="objdump">
-<term><command>objdump</command></term>
-<listitem>
-<para>Displays information about the given object file, with options
-controlling the particular information to display; the information
-shown is useful to programmers who are working on the compilation
-tools</para>
-<indexterm zone="ch-system-binutils objdump"><primary sortas="b-objdump">objdump</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="ranlib">
-<term><command>ranlib</command></term>
-<listitem>
-<para>Generates an index of the contents of an archive and stores it
-in the archive; the index lists all of the symbols defined by archive
-members that are relocatable object files</para>
-<indexterm zone="ch-system-binutils ranlib"><primary sortas="b-ranlib">ranlib</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="readelf">
-<term><command>readelf</command></term>
-<listitem>
-<para>Displays information about ELF type binaries</para>
-<indexterm zone="ch-system-binutils readelf"><primary sortas="b-readelf">readelf</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="size">
-<term><command>size</command></term>
-<listitem>
-<para>Lists the section sizes and the total size for the given object files</para>
-<indexterm zone="ch-system-binutils size"><primary sortas="b-size">size</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="strings">
-<term><command>strings</command></term>
-<listitem>
-<para>Outputs, for each given file, the sequences of printable
-characters that are of at least the specified length (defaulting to
-four); for object files, it prints, by default, only the strings from
-the initializing and loading sections while for other types of files, it
-scans the entire file</para>
-<indexterm zone="ch-system-binutils strings"><primary sortas="b-strings">strings</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="strip">
-<term><command>strip</command></term>
-<listitem>
-<para>Discards symbols from object files</para>
-<indexterm zone="ch-system-binutils strip"><primary sortas="b-strip">strip</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="libiberty">
-<term><filename class="libraryfile">libiberty</filename></term>
-<listitem>
-<para>Contains routines used by various GNU programs, including
-<command>getopt</command>, <command>obstack</command>,
-<command>strerror</command>, <command>strtol</command>, and
-<command>strtoul</command></para>
-<indexterm zone="ch-system-binutils libiberty"><primary sortas="c-libiberty">libiberty</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="libbfd">
-<term><filename class="libraryfile">libbfd</filename></term>
-<listitem>
-<para>The Binary File Descriptor library</para>
-<indexterm zone="ch-system-binutils libbfd"><primary sortas="c-libbfd">libbfd</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="libopcodes">
-<term><filename class="libraryfile">libopcodes</filename></term>
-<listitem>
-<para>A library for dealing with opcodes&mdash;the <quote>readable
-text</quote> versions of instructions for the processor;
-it is used for building utilities like
-<command>objdump</command>.</para>
-<indexterm zone="ch-system-binutils libopcodes"><primary sortas="c-libopcodes">libopcodes</primary></indexterm>
-</listitem>
-</varlistentry>
-</variablelist>
-
-</sect2>
+ </sect2>
+
+
+ <sect2 id="contents-binutils" role="content">
+ <title>Contents of Binutils</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+ <segtitle>Installed libraries</segtitle>
+
+ <seglistitem>
+ <seg>addr2line, ar, as, c++filt, gprof, ld, nm, objcopy, objdump,
+ ranlib, readelf, size, strings, and strip</seg>
+ <seg>libiberty.a, libbfd.[a,so], and libopcodes.[a,so]</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="addr2line">
+ <term><command>addr2line</command></term>
+ <listitem>
+ <para>Translates program addresses to file names and line numbers;
+ given an address and the name of an executable, it uses the debugging
+ information in the executable to determine which source file and line
+ number are associated with the address</para>
+ <indexterm zone="ch-system-binutils addr2line">
+ <primary sortas="b-addr2line">addr2line</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="ar">
+ <term><command>ar</command></term>
+ <listitem>
+ <para>Creates, modifies, and extracts from archives</para>
+ <indexterm zone="ch-system-binutils ar">
+ <primary sortas="b-ar">ar</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="as">
+ <term><command>as</command></term>
+ <listitem>
+ <para>An assembler that assembles the output of <command>gcc</command>
+ into object files</para>
+ <indexterm zone="ch-system-binutils as">
+ <primary sortas="b-as">as</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="c-filt">
+ <term><command>c++filt</command></term>
+ <listitem>
+ <para>Used by the linker to de-mangle C++ and Java symbols and to keep
+ overloaded functions from clashing</para>
+ <indexterm zone="ch-system-binutils c-filt">
+ <primary sortas="b-c++filt">c++filt</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="gprof">
+ <term><command>gprof</command></term>
+ <listitem>
+ <para>Displays call graph profile data</para>
+ <indexterm zone="ch-system-binutils gprof">
+ <primary sortas="b-gprof">gprof</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="ld">
+ <term><command>ld</command></term>
+ <listitem>
+ <para>A linker that combines a number of object and archive files
+ into a single file, relocating their data and tying up symbol
+ references</para>
+ <indexterm zone="ch-system-binutils ld">
+ <primary sortas="b-ld">ld</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="nm">
+ <term><command>nm</command></term>
+ <listitem>
+ <para>Lists the symbols occurring in a given object file</para>
+ <indexterm zone="ch-system-binutils nm">
+ <primary sortas="b-nm">nm</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="objcopy">
+ <term><command>objcopy</command></term>
+ <listitem>
+ <para>Translates one type of object file into another</para>
+ <indexterm zone="ch-system-binutils objcopy">
+ <primary sortas="b-objcopy">objcopy</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="objdump">
+ <term><command>objdump</command></term>
+ <listitem>
+ <para>Displays information about the given object file, with options
+ controlling the particular information to display; the information
+ shown is useful to programmers who are working on the compilation
+ tools</para>
+ <indexterm zone="ch-system-binutils objdump">
+ <primary sortas="b-objdump">objdump</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="ranlib">
+ <term><command>ranlib</command></term>
+ <listitem>
+ <para>Generates an index of the contents of an archive and stores it
+ in the archive; the index lists all of the symbols defined by archive
+ members that are relocatable object files</para>
+ <indexterm zone="ch-system-binutils ranlib">
+ <primary sortas="b-ranlib">ranlib</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="readelf">
+ <term><command>readelf</command></term>
+ <listitem>
+ <para>Displays information about ELF type binaries</para>
+ <indexterm zone="ch-system-binutils readelf">
+ <primary sortas="b-readelf">readelf</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="size">
+ <term><command>size</command></term>
+ <listitem>
+ <para>Lists the section sizes and the total size for the given
+ object files</para>
+ <indexterm zone="ch-system-binutils size">
+ <primary sortas="b-size">size</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="strings">
+ <term><command>strings</command></term>
+ <listitem>
+ <para>Outputs, for each given file, the sequences of printable
+ characters that are of at least the specified length (defaulting to
+ four); for object files, it prints, by default, only the strings from
+ the initializing and loading sections while for other types of files, it
+ scans the entire file</para>
+ <indexterm zone="ch-system-binutils strings">
+ <primary sortas="b-strings">strings</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="strip">
+ <term><command>strip</command></term>
+ <listitem>
+ <para>Discards symbols from object files</para>
+ <indexterm zone="ch-system-binutils strip">
+ <primary sortas="b-strip">strip</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="libiberty">
+ <term><filename class="libraryfile">libiberty</filename></term>
+ <listitem>
+ <para>Contains routines used by various GNU programs, including
+ <command>getopt</command>, <command>obstack</command>,
+ <command>strerror</command>, <command>strtol</command>, and
+ <command>strtoul</command></para>
+ <indexterm zone="ch-system-binutils libiberty">
+ <primary sortas="c-libiberty">libiberty</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="libbfd">
+ <term><filename class="libraryfile">libbfd</filename></term>
+ <listitem>
+ <para>The Binary File Descriptor library</para>
+ <indexterm zone="ch-system-binutils libbfd">
+ <primary sortas="c-libbfd">libbfd</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="libopcodes">
+ <term><filename class="libraryfile">libopcodes</filename></term>
+ <listitem>
+ <para>A library for dealing with opcodes&mdash;the <quote>readable
+ text</quote> versions of instructions for the processor;
+ it is used for building utilities like
+ <command>objdump</command>.</para>
+ <indexterm zone="ch-system-binutils libopcodes">
+ <primary sortas="c-libopcodes">libopcodes</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
</sect1>
-
diff --git a/chapter06/bison.xml b/chapter06/bison.xml
index f0b3d3fec..9b7076df5 100644
--- a/chapter06/bison.xml
+++ b/chapter06/bison.xml
@@ -1,95 +1,122 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-bison" role="wrap">
-<title>Bison-&bison-version;</title>
-<?dbhtml filename="bison.html"?>
+ <?dbhtml filename="bison.html"?>
+
+ <title>Bison-&bison-version;</title>
+
+ <indexterm zone="ch-system-bison">
+ <primary sortas="a-Bison">Bison</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
-<indexterm zone="ch-system-bison"><primary sortas="a-Bison">Bison</primary></indexterm>
+ <para>The Bison package contains a parser generator.</para>
-<sect2 role="package"><title/>
-<para>The Bison package contains a parser generator.</para>
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
-<segmentedlist>
-<segtitle>&buildtime;</segtitle>
-<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>0.6 SBU</seg><seg>9.9 MB</seg></seglistitem>
-</segmentedlist>
+ <seglistitem>
+ <seg>0.6 SBU</seg>
+ <seg>9.9 MB</seg>
+ </seglistitem>
+ </segmentedlist>
-<segmentedlist>
-<segtitle>&dependencies;</segtitle>
-<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
-GCC, Gettext, Glibc, Grep, M4, Make, and Sed</seg></seglistitem>
-</segmentedlist>
-</sect2>
+ <segmentedlist>
+ <segtitle>&dependencies;</segtitle>
-<sect2 role="installation">
-<title>Installation of Bison</title>
+ <seglistitem>
+ <seg>Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc,
+ Grep, M4, Make, and Sed</seg>
+ </seglistitem>
+ </segmentedlist>
-<para>Prepare Bison for compilation:</para>
+ </sect2>
+
+ <sect2 role="installation">
+ <title>Installation of Bison</title>
+
+ <para>Prepare Bison for compilation:</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen>
-<para>Compile the package:</para>
+ <para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
-<para>To test the results, issue:
-<userinput>make check</userinput>.</para>
+ <para>To test the results, issue:
+ <userinput>make check</userinput>.</para>
-<para>Install the package:</para>
+ <para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
-</sect2>
-
-<sect2 id="contents-bison" role="content"><title>Contents of Bison</title>
-
-<segmentedlist>
-<segtitle>Installed programs</segtitle>
-<segtitle>Installed library</segtitle>
-<seglistitem><seg>bison and yacc</seg><seg>liby.a</seg></seglistitem>
-</segmentedlist>
-
-<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
-<?dbfo list-presentation="list"?>
-<?dbhtml list-presentation="table"?>
-
-<varlistentry id="bison">
-<term><command>bison</command></term>
-<listitem>
-<para>Generates, from a series of rules, a program for analyzing the structure
-of text files; Bison is a replacement for Yacc (Yet Another Compiler
-Compiler)</para>
-<indexterm zone="ch-system-bison bison"><primary sortas="b-bison">bison</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="yacc">
-<term><command>yacc</command></term>
-<listitem>
-<para>A wrapper for <command>bison</command>, meant for programs
-that still call <command>yacc</command> instead of <command>bison</command>;
-it calls <command>bison</command> with the <parameter>-y</parameter> option</para>
-<indexterm zone="ch-system-bison yacc"><primary sortas="b-yacc">yacc</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="liby.a">
-<term><filename class="libraryfile">liby.a</filename></term>
-<listitem>
-<para>The Yacc library containing implementations of Yacc-compatible
-<emphasis>yyerror</emphasis> and <emphasis>main</emphasis> functions;
-this library is normally not very useful, but POSIX requires
-it</para>
-<indexterm zone="ch-system-bison liby.a"><primary sortas="c-liby.a">liby.a</primary></indexterm>
-</listitem>
-</varlistentry>
-</variablelist>
-
-</sect2>
+ </sect2>
+
+ <sect2 id="contents-bison" role="content">
+ <title>Contents of Bison</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+ <segtitle>Installed library</segtitle>
+
+ <seglistitem>
+ <seg>bison and yacc</seg>
+ <seg>liby.a</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="bison">
+ <term><command>bison</command></term>
+ <listitem>
+ <para>Generates, from a series of rules, a program for analyzing the
+ structure of text files; Bison is a replacement for Yacc (Yet Another
+ Compiler Compiler)</para>
+ <indexterm zone="ch-system-bison bison">
+ <primary sortas="b-bison">bison</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="yacc">
+ <term><command>yacc</command></term>
+ <listitem>
+ <para>A wrapper for <command>bison</command>, meant for programs that
+ still call <command>yacc</command> instead of <command>bison</command>;
+ it calls <command>bison</command> with the <parameter>-y</parameter>
+ option</para>
+ <indexterm zone="ch-system-bison yacc">
+ <primary sortas="b-yacc">yacc</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="liby.a">
+ <term><filename class="libraryfile">liby.a</filename></term>
+ <listitem>
+ <para>The Yacc library containing implementations of Yacc-compatible
+ <function>yyerror</function> and <function>main</function> functions;
+ this library is normally not very useful, but POSIX requires it</para>
+ <indexterm zone="ch-system-bison liby.a">
+ <primary sortas="c-liby.a">liby.a</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
</sect1>
-
diff --git a/chapter06/bzip2.xml b/chapter06/bzip2.xml
index afe95056f..8e89f525d 100644
--- a/chapter06/bzip2.xml
+++ b/chapter06/bzip2.xml
@@ -1,72 +1,98 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-bzip2" role="wrap">
-<title>Bzip2-&bzip2-version;</title>
-<?dbhtml filename="bzip2.html"?>
+ <?dbhtml filename="bzip2.html"?>
+
+ <title>Bzip2-&bzip2-version;</title>
+
+ <indexterm zone="ch-system-bzip2">
+ <primary sortas="a-Bzip2">Bzip2</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
+
+ <para>The Bzip2 package contains programs for compressing and decompressing
+ files. Compressing text files with <command>bzip2</command> yields a much
+ better compression percentage than with the traditional
+ <command>gzip</command>.</para>
-<indexterm zone="ch-system-bzip2"><primary sortas="a-Bzip2">Bzip2</primary></indexterm>
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
-<sect2 role="package"><title/>
-<para>The Bzip2 package contains programs for compressing and decompressing
-files. Compressing text files with <command>bzip2</command> yields a much better
-compression percentage than with the traditional <command>gzip</command>.</para>
+ <seglistitem>
+ <seg>0.1 SBU</seg>
+ <seg>3.9 MB</seg>
+ </seglistitem>
+ </segmentedlist>
-<segmentedlist>
-<segtitle>&buildtime;</segtitle>
-<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>0.1 SBU</seg><seg>3.9 MB</seg></seglistitem>
-</segmentedlist>
+ <segmentedlist>
+ <segtitle>&dependencies;</segtitle>
-<segmentedlist>
-<segtitle>&dependencies;</segtitle>
-<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
-GCC, Glibc, Patch, and Make</seg></seglistitem>
-</segmentedlist>
-</sect2>
+ <seglistitem>
+ <seg>Bash, Binutils, Coreutils, Diffutils, GCC, Glibc, Patch,
+ and Make</seg>
+ </seglistitem>
+ </segmentedlist>
-<sect2 role="installation">
-<title>Installation of Bzip2</title>
+ </sect2>
-<para>Apply a patch to install the documentation for this package:</para>
+ <sect2 role="installation">
+ <title>Installation of Bzip2</title>
+
+ <para>Apply a patch to install the documentation for this package:</para>
<screen><userinput>patch -Np1 -i ../&bzip2-docs-patch;</userinput></screen>
-<para>The <command>bzgrep</command> command does not escape '|' and '&amp;' in
-filenames passed to it. This allows arbitrary commands to be executed with the
-privileges of the user running <command>bzgrep</command>. Apply the following to
-address this:</para>
+ <para>The <command>bzgrep</command> command does not escape '|' and '&amp;'
+ in filenames passed to it. This allows arbitrary commands to be executed
+ with the privileges of the user running <command>bzgrep</command>. Apply
+ the following to address this:</para>
<screen><userinput>patch -Np1 -i ../&bzip2-bzgrep-patch;</userinput></screen>
-<para>Prepare Bzip2 for compilation with:</para>
+ <para>Prepare Bzip2 for compilation with:</para>
<screen><userinput>make -f Makefile-libbz2_so
make clean</userinput></screen>
-<para>The <parameter>-f</parameter> flag will cause Bzip2 to be built
-using a different <filename>Makefile</filename> file, in this case the
-<filename>Makefile-libbz2_so</filename> file, which creates a dynamic
-<filename class="libraryfile">libbz2.so</filename> library and links the Bzip2
-utilities against it.</para>
+ <variablelist>
+ <title>The meaning of the make parameter:</title>
+
+ <varlistentry>
+ <term><parameter>-f Makefile-libbz2_so</parameter></term>
+ <listitem>
+ <para>This will cause Bzip2 to be built using a different
+ <filename>Makefile</filename> file, in this case the
+ <filename>Makefile-libbz2_so</filename> file, which creates a dynamic
+ <filename class="libraryfile">libbz2.so</filename> library and links
+ the Bzip2 utilities against it.</para>
+ </listitem>
+ </varlistentry>
-<para>Compile and test the package:</para>
+ </variablelist>
+
+ <para>Compile and test the package:</para>
<screen><userinput>make</userinput></screen>
-<para>If reinstalling Bzip2, perform
-<userinput>rm -vf /usr/bin/bz*</userinput> first, otherwise the following
-<command>make install</command> will fail.</para>
+ <para>If reinstalling Bzip2, perform
+ <userinput>rm -vf /usr/bin/bz*</userinput> first, otherwise the following
+ <command>make install</command> will fail.</para>
-<para>Install the programs:</para>
+ <para>Install the programs:</para>
<screen><userinput>make install</userinput></screen>
-<para>Install the shared <command>bzip2</command> binary into the
-<filename class="directory">/bin</filename> directory, make
-some necessary symbolic links, and clean up:</para>
+ <para>Install the shared <command>bzip2</command> binary into the
+ <filename class="directory">/bin</filename> directory, make
+ some necessary symbolic links, and clean up:</para>
<screen><userinput>cp -v bzip2-shared /bin/bzip2
cp -av libbz2.so* /lib
@@ -75,125 +101,153 @@ rm -v /usr/bin/{bunzip2,bzcat,bzip2}
ln -sv bzip2 /bin/bunzip2
ln -sv bzip2 /bin/bzcat</userinput></screen>
-</sect2>
-
-
-<sect2 id="contents-bzip2" role="content"><title>Contents of Bzip2</title>
-
-<segmentedlist>
-<segtitle>Installed programs</segtitle>
-<segtitle>Installed libraries</segtitle>
-<seglistitem><seg>bunzip2 (link to bzip2), bzcat (link to bzip2), bzcmp, bzdiff,
-bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless, and bzmore</seg>
-<seg>libbz2.[a,so]</seg></seglistitem>
-</segmentedlist>
-
-<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
-<?dbfo list-presentation="list"?>
-<?dbhtml list-presentation="table"?>
-
-<varlistentry id="bunzip2">
-<term><command>bunzip2</command></term>
-<listitem>
-<para>Decompresses bzipped files</para>
-<indexterm zone="ch-system-bzip2 bunzip2"><primary sortas="b-bunzip2">bunzip2</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzcat">
-<term><command>bzcat</command></term>
-<listitem>
-<para>Decompresses to standard output</para>
-<indexterm zone="ch-system-bzip2 bzcat"><primary sortas="b-bzcat">bzcat</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzcmp">
-<term><command>bzcmp</command></term>
-<listitem>
-<para>Runs <command>cmp</command> on bzipped files</para>
-<indexterm zone="ch-system-bzip2 bzcmp"><primary sortas="b-bzcmp">bzcmp</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzdiff">
-<term><command>bzdiff</command></term>
-<listitem>
-<para>Runs <command>diff</command> on bzipped files</para>
-<indexterm zone="ch-system-bzip2 bzdiff"><primary sortas="b-bzdiff">bzdiff</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzgrep">
-<term><command>bzgrep</command></term>
-<listitem>
-<para>Runs <command>grep</command> on bzipped files</para>
-<indexterm zone="ch-system-bzip2 bzgrep"><primary sortas="b-bzgrep">bzgrep</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzegrep">
-<term><command>bzegrep</command></term>
-<listitem>
-<para>Runs <command>egrep</command> on bzipped files</para>
-<indexterm zone="ch-system-bzip2 bzegrep"><primary sortas="b-bzegrep">bzegrep</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzfgrep">
-<term><command>bzfgrep</command></term>
-<listitem>
-<para>Runs <command>fgrep</command> on bzipped files</para>
-<indexterm zone="ch-system-bzip2 bzfgrep"><primary sortas="b-bzfgrep">bzfgrep</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzip2">
-<term><command>bzip2</command></term>
-<listitem>
-<para>Compresses files using the Burrows-Wheeler block sorting text
-compression algorithm with Huffman coding; the compression rate is
-better than that achieved by more conventional compressors using
-<quote>Lempel-Ziv</quote> algorithms, like <command>gzip</command></para>
-<indexterm zone="ch-system-bzip2 bzip2"><primary sortas="b-bzip2">bzip2</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzip2recover">
-<term><command>bzip2recover</command></term>
-<listitem>
-<para>Tries to recover data from damaged bzipped files</para>
-<indexterm zone="ch-system-bzip2 bzip2recover"><primary sortas="b-bzip2recover">bzip2recover</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzless">
-<term><command>bzless</command></term>
-<listitem>
-<para>Runs <command>less</command> on bzipped files</para>
-<indexterm zone="ch-system-bzip2 bzless"><primary sortas="b-bzless">bzless</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="bzmore">
-<term><command>bzmore</command></term>
-<listitem>
-<para>Runs <command>more</command> on bzipped files</para>
-<indexterm zone="ch-system-bzip2 bzmore"><primary sortas="b-bzmore">bzmore</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="libbz2">
-<term><filename class="libraryfile">libbz2*</filename></term>
-<listitem>
-<para>The library implementing lossless, block-sorting data
-compression, using the Burrows-Wheeler algorithm</para>
-<indexterm zone="ch-system-bzip2 libbz2"><primary sortas="c-libbz2*">libbz2*</primary></indexterm>
-</listitem>
-</varlistentry>
-</variablelist>
-
-</sect2>
+ </sect2>
+
+ <sect2 id="contents-bzip2" role="content">
+ <title>Contents of Bzip2</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+ <segtitle>Installed libraries</segtitle>
+
+ <seglistitem>
+ <seg>bunzip2 (link to bzip2), bzcat (link to bzip2), bzcmp, bzdiff,
+ bzegrep, bzfgrep, bzgrep, bzip2, bzip2recover, bzless, and bzmore</seg>
+ <seg>libbz2.[a,so]</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="bunzip2">
+ <term><command>bunzip2</command></term>
+ <listitem>
+ <para>Decompresses bzipped files</para>
+ <indexterm zone="ch-system-bzip2 bunzip2">
+ <primary sortas="b-bunzip2">bunzip2</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzcat">
+ <term><command>bzcat</command></term>
+ <listitem>
+ <para>Decompresses to standard output</para>
+ <indexterm zone="ch-system-bzip2 bzcat">
+ <primary sortas="b-bzcat">bzcat</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzcmp">
+ <term><command>bzcmp</command></term>
+ <listitem>
+ <para>Runs <command>cmp</command> on bzipped files</para>
+ <indexterm zone="ch-system-bzip2 bzcmp">
+ <primary sortas="b-bzcmp">bzcmp</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzdiff">
+ <term><command>bzdiff</command></term>
+ <listitem>
+ <para>Runs <command>diff</command> on bzipped files</para>
+ <indexterm zone="ch-system-bzip2 bzdiff">
+ <primary sortas="b-bzdiff">bzdiff</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzgrep">
+ <term><command>bzgrep</command></term>
+ <listitem>
+ <para>Runs <command>grep</command> on bzipped files</para>
+ <indexterm zone="ch-system-bzip2 bzgrep">
+ <primary sortas="b-bzgrep">bzgrep</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzegrep">
+ <term><command>bzegrep</command></term>
+ <listitem>
+ <para>Runs <command>egrep</command> on bzipped files</para>
+ <indexterm zone="ch-system-bzip2 bzegrep">
+ <primary sortas="b-bzegrep">bzegrep</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzfgrep">
+ <term><command>bzfgrep</command></term>
+ <listitem>
+ <para>Runs <command>fgrep</command> on bzipped files</para>
+ <indexterm zone="ch-system-bzip2 bzfgrep">
+ <primary sortas="b-bzfgrep">bzfgrep</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzip2">
+ <term><command>bzip2</command></term>
+ <listitem>
+ <para>Compresses files using the Burrows-Wheeler block sorting text
+ compression algorithm with Huffman coding; the compression rate is
+ better than that achieved by more conventional compressors using
+ <quote>Lempel-Ziv</quote> algorithms, like <command>gzip</command></para>
+ <indexterm zone="ch-system-bzip2 bzip2">
+ <primary sortas="b-bzip2">bzip2</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzip2recover">
+ <term><command>bzip2recover</command></term>
+ <listitem>
+ <para>Tries to recover data from damaged bzipped files</para>
+ <indexterm zone="ch-system-bzip2 bzip2recover">
+ <primary sortas="b-bzip2recover">bzip2recover</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzless">
+ <term><command>bzless</command></term>
+ <listitem>
+ <para>Runs <command>less</command> on bzipped files</para>
+ <indexterm zone="ch-system-bzip2 bzless">
+ <primary sortas="b-bzless">bzless</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="bzmore">
+ <term><command>bzmore</command></term>
+ <listitem>
+ <para>Runs <command>more</command> on bzipped files</para>
+ <indexterm zone="ch-system-bzip2 bzmore">
+ <primary sortas="b-bzmore">bzmore</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="libbz2">
+ <term><filename class="libraryfile">libbz2*</filename></term>
+ <listitem>
+ <para>The library implementing lossless, block-sorting data
+ compression, using the Burrows-Wheeler algorithm</para>
+ <indexterm zone="ch-system-bzip2 libbz2">
+ <primary sortas="c-libbz2*">libbz2*</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
</sect1>
-
diff --git a/chapter06/changingowner.xml b/chapter06/changingowner.xml
index a22e199c5..83deca414 100644
--- a/chapter06/changingowner.xml
+++ b/chapter06/changingowner.xml
@@ -1,40 +1,40 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-changingowner">
-<title>Changing Ownership</title>
-<?dbhtml filename="changingowner.html"?>
+ <?dbhtml filename="changingowner.html"?>
+
+ <title>Changing Ownership</title>
-<para>Currently, the <filename class="directory">/tools</filename>
-directory is owned by the user <emphasis>lfs</emphasis>, a user that
-exists only on the host system. Although the <filename
-class="directory">/tools</filename> directory can be deleted once the
-LFS system has been finished, it can be retained to build additional
-LFS systems. If the <filename class="directory">/tools</filename>
-directory is kept as is, the files are owned by a user ID without a
-corresponding account. This is dangerous because a user account
-created later could get this same user ID and would own the <filename
-class="directory">/tools</filename> directory and all the files
-therein, thus exposing these files to possible malicious
-manipulation.</para>
+ <para>Currently, the <filename class="directory">/tools</filename> directory
+ is owned by the user <systemitem class="username">lfs</systemitem>, a user
+ that exists only on the host system. Although the <filename
+ class="directory">/tools</filename> directory can be deleted once the LFS
+ system has been finished, it can be retained to build additional LFS systems.
+ If the <filename class="directory">/tools</filename> directory is kept as is,
+ the files are owned by a user ID without a corresponding account. This is
+ dangerous because a user account created later could get this same user ID
+ and would own the <filename class="directory">/tools</filename> directory
+ and all the files therein, thus exposing these files to possible malicious
+ manipulation.</para>
-<para>To avoid this issue, add the <emphasis>lfs</emphasis> user to
-the new LFS system later when creating the
-<filename>/etc/passwd</filename> file, taking care to assign it the
-same user and group IDs as on the host system. Alternatively, assign
-the contents of the <filename class="directory">/tools</filename>
-directory to user <emphasis>root</emphasis> by running the following
-command:</para>
+ <para>To avoid this issue, add the <systemitem class="username">lfs</systemitem>
+ user to the new LFS system later when creating the
+ <filename>/etc/passwd</filename> file, taking care to assign it the same user
+ and group IDs as on the host system. Alternatively, assign the contents of
+ the <filename class="directory">/tools</filename> directory to user
+ <systemitem class="username">root</systemitem> by running the following
+ command:</para>
<screen><userinput>chown -R 0:0 /tools</userinput></screen>
-<para>The command uses <parameter>0:0</parameter> instead of
-<parameter>root:root</parameter>, because <command>chown</command>
-is unable to resolve the name <quote>root</quote> until the password
-file has been created. This book assumes you ran this
-<command>chown</command> command.</para>
+ <para>The command uses <parameter>0:0</parameter> instead of
+ <parameter>root:root</parameter>, because <command>chown</command>
+ is unable to resolve the name <quote>root</quote> until the
+ <filename>passwd</filename> file has been created.</para>
</sect1>
-
diff --git a/chapter06/chapter06.xml b/chapter06/chapter06.xml
index e85ec3381..b59092984 100644
--- a/chapter06/chapter06.xml
+++ b/chapter06/chapter06.xml
@@ -1,75 +1,79 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<chapter id="chapter-building-system" xreflabel="Chapter 6">
-<?dbhtml dir="chapter06"?>
-<title>Installing Basic System Software</title>
-<?dbhtml filename="chapter06.html"?>
+ <?dbhtml dir="chapter06"?>
+ <?dbhtml filename="chapter06.html"?>
+
+ <title>Installing Basic System Software</title>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernfs.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chroot.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="changingowner.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingdirs.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="createfiles.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="pwdgroup.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="devices.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="linux-libc-headers.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man-pages.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="glibc.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="readjusting.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="binutils.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="coreutils.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="flex.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gettext.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="groff.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="iana-etc.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="m4.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="ncurses.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="procps.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sed.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="perl.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="readline.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="zlib.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="autoconf.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="automake.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bash.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bison.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bzip2.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="diffutils.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="db.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="e2fsprogs.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="file.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="findutils.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gawk.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grep.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gzip.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hotplug.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="inetutils.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="iproute2.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kbd.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="less.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="libtool.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="make.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man-db.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="mktemp.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="module-init-tools.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="patch.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="psmisc.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="shadow.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysklogd.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysvinit.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="tar.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="texinfo.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="udev.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="util-linux.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="vim.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="aboutdebug.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="strippingagain.xml"/>
-<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="revisedchroot.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="introduction.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="pkgmgt.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kernfs.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="chroot.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="changingowner.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="creatingdirs.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="createfiles.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="pwdgroup.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="devices.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="linux-libc-headers.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man-pages.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="glibc.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="readjusting.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="binutils.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="coreutils.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="flex.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gettext.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="groff.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="iana-etc.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="m4.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="ncurses.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="procps.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sed.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="perl.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="readline.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="zlib.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="autoconf.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="automake.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bash.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bison.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="bzip2.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="diffutils.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="db.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="e2fsprogs.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="file.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="findutils.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grub.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gawk.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="grep.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gzip.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="hotplug.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="inetutils.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="iproute2.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="kbd.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="less.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="libtool.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="make.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="man-db.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="mktemp.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="module-init-tools.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="patch.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="psmisc.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="shadow.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysklogd.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="sysvinit.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="tar.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="texinfo.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="udev.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="util-linux.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="vim.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="aboutdebug.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="strippingagain.xml"/>
+ <xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="revisedchroot.xml"/>
</chapter>
diff --git a/chapter06/chroot.xml b/chapter06/chroot.xml
index d02c94e40..ca3e86a92 100644
--- a/chapter06/chroot.xml
+++ b/chapter06/chroot.xml
@@ -1,61 +1,59 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-chroot">
-<title>Entering the Chroot Environment</title>
-<?dbhtml filename="chroot.html"?>
+ <?dbhtml filename="chroot.html"?>
+
+ <title>Entering the Chroot Environment</title>
-<para>It is time to enter the chroot environment to begin
-building and installing the final LFS system. As user
-<emphasis>root</emphasis>, run the following command to enter the
-realm that is, at the moment, populated with only the temporary
-tools:</para>
+ <para>It is time to enter the chroot environment to begin building and
+ installing the final LFS system. As user <systemitem
+ class="username">root</systemitem>, run the following command to enter the
+ realm that is, at the moment, populated with only the temporary tools:</para>
<screen><userinput>chroot "$LFS" /tools/bin/env -i \
HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/tools/bin \
/tools/bin/bash --login +h</userinput></screen>
-<para>The <parameter>-i</parameter> option given to the
-<command>env</command> command will clear all variables of the chroot
-environment. After that, only the <envar>HOME</envar>,
-<envar>TERM</envar>, <envar>PS1</envar>, and
-<envar>PATH</envar> variables are set again. The
-<parameter>TERM=$TERM</parameter> construct will set the
-<envar>TERM</envar> variable inside chroot to the same value as
-outside chroot. This variable is needed for programs like
-<command>vim</command> and <command>less</command> to operate
-properly. If other variables are needed, such as
-<envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is
-a good place to set them again.</para>
-
-<para>From this point on, there is no need to use the
-<envar>LFS</envar> variable anymore, because all work will be
-restricted to the LFS file system. This is because the Bash shell is
-told that <filename class="directory">$LFS</filename> is now the root
-(<filename class="directory">/</filename>) directory.</para>
-
-<para>Notice that <filename class="directory">/tools/bin</filename> comes last
-in the <envar>PATH</envar>. This means that a temporary tool will no longer be
-used once its final version is installed. This occurs when the shell does not
-<quote>remember</quote> the locations of executed binaries&mdash;for this
-reason, hashing is switched off by passing the <parameter>+h</parameter> option
-to <command>bash</command>.</para>
-
-<para>It is important that all the commands throughout the remainder
-of this chapter and the following chapters are run from within the
-chroot environment. If you leave this environment for any reason
-(rebooting for example), remember to first mount the <systemitem
-class="filesystem">proc</systemitem> and <systemitem
-class="filesystem">devpts</systemitem> file systems (discussed in the
-previous section) and enter chroot again before continuing with the
-installations.</para>
-
-<para>Note that the <command>bash</command> prompt will say
-<computeroutput>I have no name!</computeroutput> This is normal because the
-<filename>/etc/passwd</filename> file has not been created yet.</para>
+ <para>The <parameter>-i</parameter> option given to the <command>env</command>
+ command will clear all variables of the chroot environment. After that, only
+ the <envar>HOME</envar>, <envar>TERM</envar>, <envar>PS1</envar>, and
+ <envar>PATH</envar> variables are set again. The
+ <parameter>TERM=$TERM</parameter> construct will set the <envar>TERM</envar>
+ variable inside chroot to the same value as outside chroot. This variable is
+ needed for programs like <command>vim</command> and <command>less</command>
+ to operate properly. If other variables are needed, such as
+ <envar>CFLAGS</envar> or <envar>CXXFLAGS</envar>, this is a good place to set
+ them again.</para>
+
+ <para>From this point on, there is no need to use the
+ <envar>LFS</envar> variable anymore, because all work will be restricted
+ to the LFS file system. This is because the Bash shell is told that
+ <filename class="directory">$LFS</filename> is now the root
+ (<filename class="directory">/</filename>) directory.</para>
+
+ <para>Notice that <filename class="directory">/tools/bin</filename> comes last
+ in the <envar>PATH</envar>. This means that a temporary tool will no longer be
+ used once its final version is installed. This occurs when the shell does not
+ <quote>remember</quote> the locations of executed binaries&mdash;for this
+ reason, hashing is switched off by passing the <parameter>+h</parameter> option
+ to <command>bash</command>.</para>
+
+ <para>It is important that all the commands throughout the remainder of this
+ chapter and the following chapters are run from within the chroot environment.
+ If you leave this environment for any reason (rebooting for example), remember
+ to first mount the <systemitem class="filesystem">proc</systemitem> and
+ <systemitem class="filesystem">devpts</systemitem> file systems (discussed
+ in the previous section) and enter chroot again before continuing with the
+ installations.</para>
+
+ <para>Note that the <command>bash</command> prompt will say
+ <computeroutput>I have no name!</computeroutput> This is normal because the
+ <filename>/etc/passwd</filename> file has not been created yet.</para>
</sect1>
-
diff --git a/chapter06/coreutils.xml b/chapter06/coreutils.xml
index 5cd071580..4f84ff37a 100644
--- a/chapter06/coreutils.xml
+++ b/chapter06/coreutils.xml
@@ -1,871 +1,1071 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-coreutils" role="wrap">
-<title>Coreutils-&coreutils-version;</title>
-<?dbhtml filename="coreutils.html"?>
+ <?dbhtml filename="coreutils.html"?>
+
+ <title>Coreutils-&coreutils-version;</title>
+
+ <indexterm zone="ch-system-coreutils">
+ <primary sortas="a-Coreutils">Coreutils</primary>
+ </indexterm>
+
+ <sect2 role="package">
+ <title/>
-<indexterm zone="ch-system-coreutils"><primary sortas="a-Coreutils">Coreutils</primary></indexterm>
+ <para>The Coreutils package contains utilities for showing and setting the
+ basic system characteristics.</para>
-<sect2 role="package"><title/>
-<para>The Coreutils package contains utilities for showing and setting the
-basic system characteristics.</para>
+ <segmentedlist>
+ <segtitle>&buildtime;</segtitle>
+ <segtitle>&diskspace;</segtitle>
-<segmentedlist>
-<segtitle>&buildtime;</segtitle>
-<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>0.9 SBU</seg><seg>52.8 MB</seg></seglistitem>
-</segmentedlist>
+ <seglistitem>
+ <seg>0.9 SBU</seg>
+ <seg>52.8 MB</seg>
+ </seglistitem>
+ </segmentedlist>
-<segmentedlist>
-<segtitle>&dependencies;</segtitle>
-<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils, GCC,
-Gettext, Glibc, Grep, Make, Patch, Perl, and Sed</seg></seglistitem>
-</segmentedlist>
-</sect2>
+ <segmentedlist>
+ <segtitle>&dependencies;</segtitle>
-<sect2 role="installation">
-<title>Installation of Coreutils</title>
+ <seglistitem>
+ <seg>Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep,
+ Make, Patch, Perl, and Sed</seg>
+ </seglistitem>
+ </segmentedlist>
-<para>A known issue with the <command>uname</command> program from
-this package is that the <parameter>-p</parameter> switch always
-returns <computeroutput>unknown</computeroutput>. The following patch
-fixes this behavior for Intel architectures:</para>
+ </sect2>
+
+ <sect2 role="installation">
+ <title>Installation of Coreutils</title>
+
+ <para>A known issue with the <command>uname</command> program from
+ this package is that the <parameter>-p</parameter> switch always
+ returns <computeroutput>unknown</computeroutput>. The following patch
+ fixes this behavior for Intel architectures:</para>
<screen><userinput>patch -Np1 -i ../&coreutils-uname-patch;</userinput></screen>
-<para>Prevent Coreutils from installing binaries that will be installed by
-other packages later:</para>
+ <para>Prevent Coreutils from installing binaries that will be installed by
+ other packages later:</para>
<screen><userinput>patch -Np1 -i ../&coreutils-suppress-patch;</userinput></screen>
-<para>POSIX requires that programs from Coreutils recognize character
-boundaries correctly even in multibyte locales. The following patch
-fixes this non-compliance and other internationalization-related bugs:</para>
+ <para>POSIX requires that programs from Coreutils recognize character
+ boundaries correctly even in multibyte locales. The following patch
+ fixes this non-compliance and other internationalization-related bugs:</para>
<screen><userinput>patch -Np1 -i ../&coreutils-i18n-patch;</userinput></screen>
-<para>In order for the tests added by this patch to pass, the permissions for
-the test file have to be changed:</para>
+ <para>In order for the tests added by this patch to pass, the permissions for
+ the test file have to be changed:</para>
<screen><userinput>chmod +x tests/sort/sort-mb-tests</userinput></screen>
-<note><para>In the past, many bugs were found in this patch. When reporting
-new bugs to Coreutils maintainers, please check first if they are reproducible
-without this patch.</para></note>
+ <note>
+ <para>In the past, many bugs were found in this patch. When reporting new
+ bugs to Coreutils maintainers, please check first if they are reproducible
+ without this patch.</para>
+ </note>
-<para>It has been found that translated messages sometimes overflow a buffer
-in the <command>who -Hu</command> command. Increase the buffer size:</para>
+ <para>It has been found that translated messages sometimes overflow a buffer
+ in the <command>who -Hu</command> command. Increase the buffer size:</para>
<screen><userinput>sed -i 's/_LEN 6/_LEN 20/' src/who.c</userinput></screen>
-<para>Now prepare Coreutils for compilation:</para>
+ <para>Now prepare Coreutils for compilation:</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen>
-<para>Compile the package:</para>
+ <para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
-<para>The test suite of Coreutils makes several assumptions about the presence
-of system users and groups that are not valid within the minimal environment
-that exists at the moment. Therefore, additional items need to be set up before
-running the tests. Skip down to <quote>Install the package</quote> if not
-running the test suite.</para>
+ <para>The test suite of Coreutils makes several assumptions about the
+ presence of system users and groups that are not valid within the minimal
+ environment that exists at the moment. Therefore, additional items need
+ to be set up before running the tests. Skip down to <quote>Install the
+ package</quote> if not running the test suite.</para>
-<para>Create two dummy groups and a dummy user:</para>
+ <para>Create two dummy groups and a dummy user:</para>
<screen><userinput>echo "dummy1:x:1000:" &gt;&gt; /etc/group
echo "dummy2:x:1001:dummy" &gt;&gt; /etc/group
echo "dummy:x:1000:1000::/root:/bin/bash" &gt;&gt; /etc/passwd</userinput></screen>
-<para>Now the test suite is ready to be run. First, run the tests that
-are meant to be run as user <emphasis>root</emphasis>:</para>
+ <para>Now the test suite is ready to be run. First, run the tests that are
+ meant to be run as user <systemitem class="username">root</systemitem>:</para>
<screen><userinput>make NON_ROOT_USERNAME=dummy check-root</userinput></screen>
-<para>Then run the remainder of the tests as the
-<emphasis>dummy</emphasis> user:</para>
+ <para>Then run the remainder of the tests as the
+ <systemitem class="username">dummy</systemitem> user:</para>
<screen><userinput>src/su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"</userinput></screen>
-<para>When testing is complete, remove the dummy user and
-groups:</para>
+ <para>When testing is complete, remove the dummy user and groups:</para>
<screen><userinput>sed -i '/dummy/d' /etc/passwd /etc/group</userinput></screen>
-<para>Install the package:</para>
+ <para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
-<para>Move programs to the locations specified by the FHS:</para>
+ <para>Move programs to the locations specified by the FHS:</para>
<screen><userinput>mv -v /usr/bin/{cat,chgrp,chmod,chown,cp,date,dd,df,echo} /bin
mv -v /usr/bin/{false,hostname,ln,ls,mkdir,mknod,mv,pwd,rm} /bin
mv -v /usr/bin/{rmdir,stty,sync,true,uname} /bin
mv -v /usr/bin/chroot /usr/sbin</userinput></screen>
-<para>Some of the scripts in the LFS-Bootscripts package depend on
-<command>head</command> and <command>sleep</command>. As
-<filename class="directory">/usr</filename> may not be available during the
-early stages of booting, those binaries need to be on the root partition:</para>
+ <para>Some of the scripts in the LFS-Bootscripts package depend on
+ <command>head</command> and <command>sleep</command>. As
+ <filename class="directory">/usr</filename> may not be available during the
+ early stages of booting, those binaries need to be on the root
+ partition:</para>
<screen><userinput>mv -v /usr/bin/{head,sleep} /bin</userinput></screen>
-</sect2>
-
-
-<sect2 id="contents-coreutils" role="content"><title>Contents of Coreutils</title>
-
-<segmentedlist>
-<segtitle>Installed programs</segtitle>
-<seglistitem><seg>basename, cat, chgrp, chmod, chown, chroot, cksum,
-comm, cp, csplit, cut, date, dd, df, dir, dircolors, dirname, du,
-echo, env, expand, expr, factor, false, fmt, fold, groups, head,
-hostid, hostname, id, install, join, link, ln, logname, ls, md5sum,
-mkdir, mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky,
-pr, printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum,
-shred, sleep, sort, split, stat, stty, sum, sync, tac, tail, tee,
-test, touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink,
-users, vdir, wc, who, whoami, and yes</seg></seglistitem>
-</segmentedlist>
-
-<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
-<?dbfo list-presentation="list"?>
-<?dbhtml list-presentation="table"?>
-
-<varlistentry id="basename">
-<term><command>basename</command></term>
-<listitem>
-<para>Strips any path and a given suffix from a file name</para>
-<indexterm zone="ch-system-coreutils basename"><primary sortas="b-basename">basename</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="cat">
-<term><command>cat</command></term>
-<listitem>
-<para>Concatenates files to standard output</para>
-<indexterm zone="ch-system-coreutils cat"><primary sortas="b-cat">cat</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="chgrp">
-<term><command>chgrp</command></term>
-<listitem>
-<para>Changes the group ownership of files and directories</para>
-<indexterm zone="ch-system-coreutils chgrp"><primary sortas="b-chgrp">chgrp</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="chmod">
-<term><command>chmod</command></term>
-<listitem>
-<para>Changes the permissions of each file to the given mode; the mode
-can be either a symbolic representation of the changes to make or an
-octal number representing the new permissions</para>
-<indexterm zone="ch-system-coreutils chmod"><primary sortas="b-chmod">chmod</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="chown">
-<term><command>chown</command></term>
-<listitem>
-<para>Changes the user and/or group ownership of files and directories</para>
-<indexterm zone="ch-system-coreutils chown"><primary sortas="b-chown">chown</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="chroot">
-<term><command>chroot</command></term>
-<listitem>
-<para>Runs a command with the specified directory as the
-<filename class="directory">/</filename> directory</para>
-<indexterm zone="ch-system-coreutils chroot"><primary sortas="b-chroot">chroot</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="cksum">
-<term><command>cksum</command></term>
-<listitem>
-<para>Prints the Cyclic Redundancy Check (CRC) checksum and the byte
-counts of each specified file</para>
-<indexterm zone="ch-system-coreutils cksum"><primary sortas="b-cksum">cksum</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="comm">
-<term><command>comm</command></term>
-<listitem>
-<para>Compares two sorted files, outputting in three columns the lines
-that are unique and the lines that are common</para>
-<indexterm zone="ch-system-coreutils comm"><primary sortas="b-comm">comm</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="cp">
-<term><command>cp</command></term>
-<listitem>
-<para>Copies files</para>
-<indexterm zone="ch-system-coreutils cp"><primary sortas="b-cp">cp</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="csplit">
-<term><command>csplit</command></term>
-<listitem>
-<para>Splits a given file into several new files, separating them
-according to given patterns or line numbers and outputting the byte
-count of each new file</para>
-<indexterm zone="ch-system-coreutils csplit"><primary sortas="b-csplit">csplit</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="cut">
-<term><command>cut</command></term>
-<listitem>
-<para>Prints sections of lines, selecting the parts according to given
-fields or positions</para>
-<indexterm zone="ch-system-coreutils cut"><primary sortas="b-cut">cut</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="date">
-<term><command>date</command></term>
-<listitem>
-<para>Displays the current time in the given format, or sets the
-system date</para>
-<indexterm zone="ch-system-coreutils date"><primary sortas="b-date">date</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="dd">
-<term><command>dd</command> </term>
-<listitem>
-<para>Copies a file using the given block size and count, while
-optionally performing conversions on it</para>
-<indexterm zone="ch-system-coreutils dd"><primary sortas="b-dd">dd</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="df">
-<term><command>df</command></term>
-<listitem>
-<para>Reports the amount of disk space available (and used) on all
-mounted file systems, or only on the file systems holding the selected
-files</para>
-<indexterm zone="ch-system-coreutils df"><primary sortas="b-df">df</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="dir">
-<term><command>dir</command></term>
-<listitem>
-<para>Lists the contents of each given directory (the same as
-the <command>ls</command> command)</para>
-<indexterm zone="ch-system-coreutils dir"><primary sortas="b-dir">dir</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="dircolors">
-<term><command>dircolors</command></term>
-<listitem>
-<para>Outputs commands to set the <envar>LS_COLOR</envar>
-environment variable to change the color scheme used by
-<command>ls</command></para>
-<indexterm zone="ch-system-coreutils dircolors"><primary sortas="b-dircolors">dircolors</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="dirname">
-<term><command>dirname</command></term>
-<listitem>
-<para>Strips the non-directory suffix from a file name</para>
-<indexterm zone="ch-system-coreutils dirname"><primary sortas="b-dirname">dirname</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="du">
-<term><command>du</command></term>
-<listitem>
-<para>Reports the amount of disk space used by the current directory,
-by each of the given directories (including all subdirectories) or by
-each of the given files</para>
-<indexterm zone="ch-system-coreutils du"><primary sortas="b-du">du</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="echo">
-<term><command>echo</command></term>
-<listitem>
-<para>Displays the given strings</para>
-<indexterm zone="ch-system-coreutils echo"><primary sortas="b-echo">echo</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="env">
-<term><command>env</command></term>
-<listitem>
-<para>Runs a command in a modified environment</para>
-<indexterm zone="ch-system-coreutils env"><primary sortas="b-env">env</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="expand">
-<term><command>expand</command></term>
-<listitem>
-<para>Converts tabs to spaces</para>
-<indexterm zone="ch-system-coreutils expand"><primary sortas="b-expand">expand</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="expr">
-<term><command>expr</command></term>
-<listitem>
-<para>Evaluates expressions</para>
-<indexterm zone="ch-system-coreutils expr"><primary sortas="b-expr">expr</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="factor">
-<term><command>factor</command></term>
-<listitem>
-<para>Prints the prime factors of all specified integer numbers</para>
-<indexterm zone="ch-system-coreutils factor"><primary sortas="b-factor">factor</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="false">
-<term><command>false</command></term>
-<listitem>
-<para>Does nothing, unsuccessfully; it always exits with a status code
-indicating failure</para>
-<indexterm zone="ch-system-coreutils false"><primary sortas="b-false">false</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="fmt">
-<term><command>fmt</command></term>
-<listitem>
-<para>Reformats the paragraphs in the given files</para>
-<indexterm zone="ch-system-coreutils fmt"><primary sortas="b-fmt">fmt</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="fold">
-<term><command>fold</command></term>
-<listitem>
-<para>Wraps the lines in the given files</para>
-<indexterm zone="ch-system-coreutils fold"><primary sortas="b-fold">fold</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="groups">
-<term><command>groups</command></term>
-<listitem>
-<para>Reports a user's group memberships</para>
-<indexterm zone="ch-system-coreutils groups"><primary sortas="b-groups">groups</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="head">
-<term><command>head</command></term>
-<listitem>
-<para>Prints the first ten lines (or the given number of lines) of each given file</para>
-<indexterm zone="ch-system-coreutils head"><primary sortas="b-head">head</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="hostid">
-<term><command>hostid</command></term>
-<listitem>
-<para>Reports the numeric identifier (in hexadecimal) of the host</para>
-<indexterm zone="ch-system-coreutils hostid"><primary sortas="b-hostid">hostid</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="hostname">
-<term><command>hostname</command></term>
-<listitem>
-<para>Reports or sets the name of the host</para>
-<indexterm zone="ch-system-coreutils hostname"><primary sortas="b-hostname">hostname</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="id">
-<term><command>id</command></term>
-<listitem>
-<para>Reports the effective user ID, group ID, and
-group memberships of the current user or specified user</para>
-<indexterm zone="ch-system-coreutils id"><primary sortas="b-id">id</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="install">
-<term><command>install</command> </term>
-<listitem>
-<para>Copies files while setting their
-permission modes and, if possible, their owner and group</para>
-<indexterm zone="ch-system-coreutils install"><primary sortas="b-install">install</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="join">
-<term><command>join</command></term>
-<listitem>
-<para>Joins the lines that have identical join fields from two
-separate files</para>
-<indexterm zone="ch-system-coreutils join"><primary sortas="b-join">join</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="link">
-<term><command>link</command></term>
-<listitem>
-<para>Creates a hard link with the given name to a file</para>
-<indexterm zone="ch-system-coreutils link"><primary sortas="b-link">link</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="ln">
-<term><command>ln</command></term>
-<listitem>
-<para>Makes hard links or soft (symbolic) links between files</para>
-<indexterm zone="ch-system-coreutils ln"><primary sortas="b-ln">ln</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="logname">
-<term><command>logname</command></term>
-<listitem>
-<para>Reports the current user's login name</para>
-<indexterm zone="ch-system-coreutils logname"><primary sortas="b-logname">logname</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="ls">
-<term><command>ls</command></term>
-<listitem>
-<para>Lists the contents of each given directory</para>
-<indexterm zone="ch-system-coreutils ls"><primary sortas="b-ls">ls</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="md5sum">
-<term><command>md5sum</command></term>
-<listitem>
-<para>Reports or checks Message Digest 5 (MD5) checksums</para>
-<indexterm zone="ch-system-coreutils md5sum"><primary sortas="b-md5sum">md5sum</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="mkdir">
-<term><command>mkdir</command></term>
-<listitem>
-<para>Creates directories with the given names</para>
-<indexterm zone="ch-system-coreutils mkdir"><primary sortas="b-mkdir">mkdir</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="mkfifo">
-<term><command>mkfifo</command></term>
-<listitem>
-<para>Creates First-In, First-Outs (FIFOs), a <quote>named
-pipe</quote> in UNIX parlance, with the given names</para>
-<indexterm zone="ch-system-coreutils mkfifo"><primary sortas="b-mkfifo">mkfifo</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="mknod">
-<term><command>mknod</command></term>
-<listitem>
-<para>Creates device nodes with the given names; a device node is a
-character special file, a block special file, or a FIFO</para>
-<indexterm zone="ch-system-coreutils mknod"><primary sortas="b-mknod">mknod</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="mv">
-<term><command>mv</command></term>
-<listitem>
-<para>Moves or renames files or directories</para>
-<indexterm zone="ch-system-coreutils mv"><primary sortas="b-mv">mv</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="nice">
-<term><command>nice</command></term>
-<listitem>
-<para>Runs a program with modified scheduling priority</para>
-<indexterm zone="ch-system-coreutils nice"><primary sortas="b-nice">nice</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="nl">
-<term><command>nl</command></term>
-<listitem>
-<para>Numbers the lines from the given files</para>
-<indexterm zone="ch-system-coreutils nl"><primary sortas="b-nl">nl</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="nohup">
-<term><command>nohup</command></term>
-<listitem>
-<para>Runs a command immune to hangups, with its output redirected to
-a log file</para>
-<indexterm zone="ch-system-coreutils nohup"><primary sortas="b-nohup">nohup</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="od">
-<term><command>od</command></term>
-<listitem>
-<para>Dumps files in octal and other formats</para>
-<indexterm zone="ch-system-coreutils od"><primary sortas="b-od">od</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="paste">
-<term><command>paste</command></term>
-<listitem>
-<para>Merges the given files, joining sequentially corresponding lines
-side by side, separated by tab characters</para>
-<indexterm zone="ch-system-coreutils paste"><primary sortas="b-paste">paste</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="pathchk">
-<term><command>pathchk</command></term>
-<listitem>
-<para>Checks if file names are valid or portable</para>
-<indexterm zone="ch-system-coreutils pathchk"><primary sortas="b-pathchk">pathchk</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="pinky">
-<term><command>pinky</command></term>
-<listitem>
-<para>Is a lightweight finger client; it reports some information about the given users</para>
-<indexterm zone="ch-system-coreutils pinky"><primary sortas="b-pinky">pinky</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="pr">
-<term><command>pr</command></term>
-<listitem>
-<para>Paginates and columnates files for printing</para>
-<indexterm zone="ch-system-coreutils pr"><primary sortas="b-pr">pr</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="printenv">
-<term><command>printenv</command></term>
-<listitem>
-<para>Prints the environment</para>
-<indexterm zone="ch-system-coreutils printenv"><primary sortas="b-printenv">printenv</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="printf">
-<term><command>printf</command></term>
-<listitem>
-<para>Prints the given arguments according to the given format, much
-like the C printf function</para>
-<indexterm zone="ch-system-coreutils printf"><primary sortas="b-printf">printf</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="ptx">
-<term><command>ptx</command></term>
-<listitem>
-<para>Produces a permuted index from the contents of the given files,
-with each keyword in its context</para>
-<indexterm zone="ch-system-coreutils ptx"><primary sortas="b-ptx">ptx</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="pwd">
-<term><command>pwd</command></term>
-<listitem>
-<para>Reports the name of the current working directory</para>
-<indexterm zone="ch-system-coreutils pwd"><primary sortas="b-pwd">pwd</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="readlink">
-<term><command>readlink</command></term>
-<listitem>
-<para>Reports the value of the given symbolic link</para>
-<indexterm zone="ch-system-coreutils readlink"><primary sortas="b-readlink">readlink</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="rm">
-<term><command>rm</command></term>
-<listitem>
-<para>Removes files or directories</para>
-<indexterm zone="ch-system-coreutils rm"><primary sortas="b-rm">rm</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="rmdir">
-<term><command>rmdir</command></term>
-<listitem>
-<para>Removes directories if they are empty</para>
-<indexterm zone="ch-system-coreutils rmdir"><primary sortas="b-rmdir">rmdir</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="seq">
-<term><command>seq</command></term>
-<listitem>
-<para>Prints a sequence of numbers within a given range and with a
-given increment</para>
-<indexterm zone="ch-system-coreutils seq"><primary sortas="b-seq">seq</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="sha1sum">
-<term><command>sha1sum</command></term>
-<listitem>
-<para>Prints or checks 160-bit Secure Hash Algorithm 1 (SHA1) checksums</para>
-<indexterm zone="ch-system-coreutils sha1sum"><primary sortas="b-sha1sum">sha1sum</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="shred">
-<term><command>shred</command></term>
-<listitem>
-<para>Overwrites the given files repeatedly with complex patterns,
-making it difficult to recover the data</para>
-<indexterm zone="ch-system-coreutils shred"><primary sortas="b-shred">shred</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="sleep">
-<term><command>sleep</command></term>
-<listitem>
-<para>Pauses for the given amount of time</para>
-<indexterm zone="ch-system-coreutils sleep"><primary sortas="b-sleep">sleep</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="sort">
-<term><command>sort</command></term>
-<listitem>
-<para>Sorts the lines from the given files</para>
-<indexterm zone="ch-system-coreutils sort"><primary sortas="b-sort">sort</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="split">
-<term><command>split</command></term>
-<listitem>
-<para>Splits the given file into pieces, by size or by number of lines</para>
-<indexterm zone="ch-system-coreutils split"><primary sortas="b-split">split</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="stat">
-<term><command>stat</command></term>
-<listitem>
-<para>Displays file or filesystem status</para>
-<indexterm zone="ch-system-coreutils stat"><primary sortas="b-stat">stat</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="stty">
-<term><command>stty</command></term>
-<listitem>
-<para>Sets or reports terminal line settings</para>
-<indexterm zone="ch-system-coreutils stty"><primary sortas="b-stty">stty</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="sum">
-<term><command>sum</command></term>
-<listitem>
-<para>Prints checksum and block counts for each given file</para>
-<indexterm zone="ch-system-coreutils sum"><primary sortas="b-sum">sum</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="sync">
-<term><command>sync</command></term>
-<listitem>
-<para>Flushes file system buffers; it forces changed blocks to disk
-and updates the super block</para>
-<indexterm zone="ch-system-coreutils sync"><primary sortas="b-sync">sync</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="tac">
-<term><command>tac</command></term>
-<listitem>
-<para>Concatenates the given files in reverse</para>
-<indexterm zone="ch-system-coreutils tac"><primary sortas="b-tac">tac</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="tail">
-<term><command>tail</command></term>
-<listitem>
-<para>Prints the last ten lines (or the given number of lines) of each
-given file</para>
-<indexterm zone="ch-system-coreutils tail"><primary sortas="b-tail">tail</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="tee">
-<term><command>tee</command></term>
-<listitem>
-<para>Reads from standard input while writing both to standard output
-and to the given files</para>
-<indexterm zone="ch-system-coreutils tee"><primary sortas="b-tee">tee</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="test">
-<term><command>test</command></term>
-<listitem>
-<para>Compares values and checks file types</para>
-<indexterm zone="ch-system-coreutils test"><primary sortas="b-test">test</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="touch">
-<term><command>touch</command></term>
-<listitem>
-<para>Changes file timestamps, setting the access and modification
-times of the given files to the current time; files that do not exist
-are created with zero length</para>
-<indexterm zone="ch-system-coreutils touch"><primary sortas="b-touch">touch</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="tr">
-<term><command>tr</command></term>
-<listitem>
-<para>Translates, squeezes, and deletes the given characters from
-standard input</para>
-<indexterm zone="ch-system-coreutils tr"><primary sortas="b-tr">tr</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="true">
-<term><command>true</command></term>
-<listitem>
-<para>Does nothing, successfully; it always exits with a status code
-indicating success</para>
-<indexterm zone="ch-system-coreutils true"><primary sortas="b-true">true</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="tsort">
-<term><command>tsort</command></term>
-<listitem>
-<para>Performs a topological sort; it writes a completely ordered list
-according to the partial ordering in a given file</para>
-<indexterm zone="ch-system-coreutils tsort"><primary sortas="b-tsort">tsort</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="tty">
-<term><command>tty</command></term>
-<listitem>
-<para>Reports the file name of the terminal connected to standard
-input</para>
-<indexterm zone="ch-system-coreutils tty"><primary sortas="b-tty">tty</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="uname">
-<term><command>uname</command></term>
-<listitem>
-<para>Reports system information</para>
-<indexterm zone="ch-system-coreutils uname"><primary sortas="b-uname">uname</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="unexpand">
-<term><command>unexpand</command></term>
-<listitem>
-<para>Converts spaces to tabs</para>
-<indexterm zone="ch-system-coreutils unexpand"><primary sortas="b-unexpand">unexpand</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="uniq">
-<term><command>uniq</command></term>
-<listitem>
-<para>Discards all but one of successive identical lines</para>
-<indexterm zone="ch-system-coreutils uniq"><primary sortas="b-uniq">uniq</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="unlink">
-<term><command>unlink</command></term>
-<listitem>
-<para>Removes the given file</para>
-<indexterm zone="ch-system-coreutils unlink"><primary sortas="b-unlink">unlink</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="users">
-<term><command>users</command></term>
-<listitem>
-<para>Reports the names of the users currently logged on</para>
-<indexterm zone="ch-system-coreutils users"><primary sortas="b-users">users</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="vdir">
-<term><command>vdir</command></term>
-<listitem>
-<para>Is the same as <command>ls -l</command></para>
-<indexterm zone="ch-system-coreutils vdir"><primary sortas="b-vdir">vdir</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="wc">
-<term><command>wc</command></term>
-<listitem>
-<para>Reports the number of lines, words, and bytes for each given
-file, as well as a total line when more than one file is given</para>
-<indexterm zone="ch-system-coreutils wc"><primary sortas="b-wc">wc</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="who">
-<term><command>who</command></term>
-<listitem>
-<para>Reports who is logged on</para>
-<indexterm zone="ch-system-coreutils who"><primary sortas="b-who">who</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="whoami">
-<term><command>whoami</command></term>
-<listitem>
-<para>Reports the user name associated with the current effective user ID</para>
-<indexterm zone="ch-system-coreutils whoami"><primary sortas="b-whoami">whoami</primary></indexterm>
-</listitem>
-</varlistentry>
-
-<varlistentry id="yes">
-<term><command>yes</command></term>
-<listitem>
-<para>Repeatedly outputs <quote>y</quote> or a given string until
-killed</para>
-<indexterm zone="ch-system-coreutils yes"><primary sortas="b-yes">yes</primary></indexterm>
-</listitem>
-</varlistentry>
-</variablelist>
-
-</sect2>
+ </sect2>
+
+
+ <sect2 id="contents-coreutils" role="content">
+ <title>Contents of Coreutils</title>
+
+ <segmentedlist>
+ <segtitle>Installed programs</segtitle>
+
+ <seglistitem>
+ <seg>basename, cat, chgrp, chmod, chown, chroot, cksum, comm, cp,
+ csplit, cut, date, dd, df, dir, dircolors, dirname, du, echo, env,
+ expand, expr, factor, false, fmt, fold, groups, head, hostid,
+ hostname, id, install, join, link, ln, logname, ls, md5sum, mkdir,
+ mkfifo, mknod, mv, nice, nl, nohup, od, paste, pathchk, pinky, pr,
+ printenv, printf, ptx, pwd, readlink, rm, rmdir, seq, sha1sum, shred,
+ sleep, sort, split, stat, stty, sum, sync, tac, tail, tee, test,
+ touch, tr, true, tsort, tty, uname, unexpand, uniq, unlink, users,
+ vdir, wc, who, whoami, and yes</seg>
+ </seglistitem>
+ </segmentedlist>
+
+ <variablelist>
+ <bridgehead renderas="sect3">Short Descriptions</bridgehead>
+ <?dbfo list-presentation="list"?>
+ <?dbhtml list-presentation="table"?>
+
+ <varlistentry id="basename">
+ <term><command>basename</command></term>
+ <listitem>
+ <para>Strips any path and a given suffix from a file name</para>
+ <indexterm zone="ch-system-coreutils basename">
+ <primary sortas="b-basename">basename</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="cat">
+ <term><command>cat</command></term>
+ <listitem>
+ <para>Concatenates files to standard output</para>
+ <indexterm zone="ch-system-coreutils cat">
+ <primary sortas="b-cat">cat</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="chgrp">
+ <term><command>chgrp</command></term>
+ <listitem>
+ <para>Changes the group ownership of files and directories</para>
+ <indexterm zone="ch-system-coreutils chgrp">
+ <primary sortas="b-chgrp">chgrp</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="chmod">
+ <term><command>chmod</command></term>
+ <listitem>
+ <para>Changes the permissions of each file to the given mode; the mode
+ can be either a symbolic representation of the changes to make or an
+ octal number representing the new permissions</para>
+ <indexterm zone="ch-system-coreutils chmod">
+ <primary sortas="b-chmod">chmod</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="chown">
+ <term><command>chown</command></term>
+ <listitem>
+ <para>Changes the user and/or group ownership of files and
+ directories</para>
+ <indexterm zone="ch-system-coreutils chown">
+ <primary sortas="b-chown">chown</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="chroot">
+ <term><command>chroot</command></term>
+ <listitem>
+ <para>Runs a command with the specified directory as the
+ <filename class="directory">/</filename> directory</para>
+ <indexterm zone="ch-system-coreutils chroot">
+ <primary sortas="b-chroot">chroot</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="cksum">
+ <term><command>cksum</command></term>
+ <listitem>
+ <para>Prints the Cyclic Redundancy Check (CRC) checksum and the byte
+ counts of each specified file</para>
+ <indexterm zone="ch-system-coreutils cksum">
+ <primary sortas="b-cksum">cksum</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="comm">
+ <term><command>comm</command></term>
+ <listitem>
+ <para>Compares two sorted files, outputting in three columns the lines
+ that are unique and the lines that are common</para>
+ <indexterm zone="ch-system-coreutils comm">
+ <primary sortas="b-comm">comm</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="cp">
+ <term><command>cp</command></term>
+ <listitem>
+ <para>Copies files</para>
+ <indexterm zone="ch-system-coreutils cp">
+ <primary sortas="b-cp">cp</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="csplit">
+ <term><command>csplit</command></term>
+ <listitem>
+ <para>Splits a given file into several new files, separating them
+ according to given patterns or line numbers and outputting the byte
+ count of each new file</para>
+ <indexterm zone="ch-system-coreutils csplit">
+ <primary sortas="b-csplit">csplit</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="cut">
+ <term><command>cut</command></term>
+ <listitem>
+ <para>Prints sections of lines, selecting the parts according to given
+ fields or positions</para>
+ <indexterm zone="ch-system-coreutils cut">
+ <primary sortas="b-cut">cut</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="date">
+ <term><command>date</command></term>
+ <listitem>
+ <para>Displays the current time in the given format, or sets the
+ system date</para>
+ <indexterm zone="ch-system-coreutils date">
+ <primary sortas="b-date">date</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="dd">
+ <term><command>dd</command> </term>
+ <listitem>
+ <para>Copies a file using the given block size and count, while
+ optionally performing conversions on it</para>
+ <indexterm zone="ch-system-coreutils dd">
+ <primary sortas="b-dd">dd</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="df">
+ <term><command>df</command></term>
+ <listitem>
+ <para>Reports the amount of disk space available (and used) on all
+ mounted file systems, or only on the file systems holding the selected
+ files</para>
+ <indexterm zone="ch-system-coreutils df">
+ <primary sortas="b-df">df</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="dir">
+ <term><command>dir</command></term>
+ <listitem>
+ <para>Lists the contents of each given directory (the same as
+ the <command>ls</command> command)</para>
+ <indexterm zone="ch-system-coreutils dir">
+ <primary sortas="b-dir">dir</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="dircolors">
+ <term><command>dircolors</command></term>
+ <listitem>
+ <para>Outputs commands to set the <envar>LS_COLOR</envar>
+ environment variable to change the color scheme used by
+ <command>ls</command></para>
+ <indexterm zone="ch-system-coreutils dircolors">
+ <primary sortas="b-dircolors">dircolors</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="dirname">
+ <term><command>dirname</command></term>
+ <listitem>
+ <para>Strips the non-directory suffix from a file name</para>
+ <indexterm zone="ch-system-coreutils dirname">
+ <primary sortas="b-dirname">dirname</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="du">
+ <term><command>du</command></term>
+ <listitem>
+ <para>Reports the amount of disk space used by the current directory,
+ by each of the given directories (including all subdirectories) or by
+ each of the given files</para>
+ <indexterm zone="ch-system-coreutils du">
+ <primary sortas="b-du">du</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="echo">
+ <term><command>echo</command></term>
+ <listitem>
+ <para>Displays the given strings</para>
+ <indexterm zone="ch-system-coreutils echo">
+ <primary sortas="b-echo">echo</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="env">
+ <term><command>env</command></term>
+ <listitem>
+ <para>Runs a command in a modified environment</para>
+ <indexterm zone="ch-system-coreutils env">
+ <primary sortas="b-env">env</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="expand">
+ <term><command>expand</command></term>
+ <listitem>
+ <para>Converts tabs to spaces</para>
+ <indexterm zone="ch-system-coreutils expand">
+ <primary sortas="b-expand">expand</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="expr">
+ <term><command>expr</command></term>
+ <listitem>
+ <para>Evaluates expressions</para>
+ <indexterm zone="ch-system-coreutils expr">
+ <primary sortas="b-expr">expr</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="factor">
+ <term><command>factor</command></term>
+ <listitem>
+ <para>Prints the prime factors of all specified integer numbers</para>
+ <indexterm zone="ch-system-coreutils factor">
+ <primary sortas="b-factor">factor</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="false">
+ <term><command>false</command></term>
+ <listitem>
+ <para>Does nothing, unsuccessfully; it always exits with a status code
+ indicating failure</para>
+ <indexterm zone="ch-system-coreutils false">
+ <primary sortas="b-false">false</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="fmt">
+ <term><command>fmt</command></term>
+ <listitem>
+ <para>Reformats the paragraphs in the given files</para>
+ <indexterm zone="ch-system-coreutils fmt">
+ <primary sortas="b-fmt">fmt</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="fold">
+ <term><command>fold</command></term>
+ <listitem>
+ <para>Wraps the lines in the given files</para>
+ <indexterm zone="ch-system-coreutils fold">
+ <primary sortas="b-fold">fold</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="groups">
+ <term><command>groups</command></term>
+ <listitem>
+ <para>Reports a user's group memberships</para>
+ <indexterm zone="ch-system-coreutils groups">
+ <primary sortas="b-groups">groups</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="head">
+ <term><command>head</command></term>
+ <listitem>
+ <para>Prints the first ten lines (or the given number of lines)
+ of each given file</para>
+ <indexterm zone="ch-system-coreutils head">
+ <primary sortas="b-head">head</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="hostid">
+ <term><command>hostid</command></term>
+ <listitem>
+ <para>Reports the numeric identifier (in hexadecimal) of the host</para>
+ <indexterm zone="ch-system-coreutils hostid">
+ <primary sortas="b-hostid">hostid</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="hostname">
+ <term><command>hostname</command></term>
+ <listitem>
+ <para>Reports or sets the name of the host</para>
+ <indexterm zone="ch-system-coreutils hostname">
+ <primary sortas="b-hostname">hostname</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="id">
+ <term><command>id</command></term>
+ <listitem>
+ <para>Reports the effective user ID, group ID, and group memberships
+ of the current user or specified user</para>
+ <indexterm zone="ch-system-coreutils id">
+ <primary sortas="b-id">id</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="install">
+ <term><command>install</command> </term>
+ <listitem>
+ <para>Copies files while setting their permission modes and, if
+ possible, their owner and group</para>
+ <indexterm zone="ch-system-coreutils install">
+ <primary sortas="b-install">install</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="join">
+ <term><command>join</command></term>
+ <listitem>
+ <para>Joins the lines that have identical join fields from two
+ separate files</para>
+ <indexterm zone="ch-system-coreutils join">
+ <primary sortas="b-join">join</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="link">
+ <term><command>link</command></term>
+ <listitem>
+ <para>Creates a hard link with the given name to a file</para>
+ <indexterm zone="ch-system-coreutils link">
+ <primary sortas="b-link">link</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="ln">
+ <term><command>ln</command></term>
+ <listitem>
+ <para>Makes hard links or soft (symbolic) links between files</para>
+ <indexterm zone="ch-system-coreutils ln">
+ <primary sortas="b-ln">ln</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="logname">
+ <term><command>logname</command></term>
+ <listitem>
+ <para>Reports the current user's login name</para>
+ <indexterm zone="ch-system-coreutils logname">
+ <primary sortas="b-logname">logname</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="ls">
+ <term><command>ls</command></term>
+ <listitem>
+ <para>Lists the contents of each given directory</para>
+ <indexterm zone="ch-system-coreutils ls">
+ <primary sortas="b-ls">ls</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="md5sum">
+ <term><command>md5sum</command></term>
+ <listitem>
+ <para>Reports or checks Message Digest 5 (MD5) checksums</para>
+ <indexterm zone="ch-system-coreutils md5sum">
+ <primary sortas="b-md5sum">md5sum</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="mkdir">
+ <term><command>mkdir</command></term>
+ <listitem>
+ <para>Creates directories with the given names</para>
+ <indexterm zone="ch-system-coreutils mkdir">
+ <primary sortas="b-mkdir">mkdir</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="mkfifo">
+ <term><command>mkfifo</command></term>
+ <listitem>
+ <para>Creates First-In, First-Outs (FIFOs), a <quote>named
+ pipe</quote> in UNIX parlance, with the given names</para>
+ <indexterm zone="ch-system-coreutils mkfifo">
+ <primary sortas="b-mkfifo">mkfifo</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="mknod">
+ <term><command>mknod</command></term>
+ <listitem>
+ <para>Creates device nodes with the given names; a device node is a
+ character special file, a block special file, or a FIFO</para>
+ <indexterm zone="ch-system-coreutils mknod">
+ <primary sortas="b-mknod">mknod</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="mv">
+ <term><command>mv</command></term>
+ <listitem>
+ <para>Moves or renames files or directories</para>
+ <indexterm zone="ch-system-coreutils mv">
+ <primary sortas="b-mv">mv</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="nice">
+ <term><command>nice</command></term>
+ <listitem>
+ <para>Runs a program with modified scheduling priority</para>
+ <indexterm zone="ch-system-coreutils nice">
+ <primary sortas="b-nice">nice</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="nl">
+ <term><command>nl</command></term>
+ <listitem>
+ <para>Numbers the lines from the given files</para>
+ <indexterm zone="ch-system-coreutils nl">
+ <primary sortas="b-nl">nl</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="nohup">
+ <term><command>nohup</command></term>
+ <listitem>
+ <para>Runs a command immune to hangups, with its output redirected to
+ a log file</para>
+ <indexterm zone="ch-system-coreutils nohup">
+ <primary sortas="b-nohup">nohup</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="od">
+ <term><command>od</command></term>
+ <listitem>
+ <para>Dumps files in octal and other formats</para>
+ <indexterm zone="ch-system-coreutils od">
+ <primary sortas="b-od">od</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="paste">
+ <term><command>paste</command></term>
+ <listitem>
+ <para>Merges the given files, joining sequentially corresponding lines
+ side by side, separated by tab characters</para>
+ <indexterm zone="ch-system-coreutils paste">
+ <primary sortas="b-paste">paste</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="pathchk">
+ <term><command>pathchk</command></term>
+ <listitem>
+ <para>Checks if file names are valid or portable</para>
+ <indexterm zone="ch-system-coreutils pathchk">
+ <primary sortas="b-pathchk">pathchk</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="pinky">
+ <term><command>pinky</command></term>
+ <listitem>
+ <para>Is a lightweight finger client; it reports some information
+ about the given users</para>
+ <indexterm zone="ch-system-coreutils pinky">
+ <primary sortas="b-pinky">pinky</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="pr">
+ <term><command>pr</command></term>
+ <listitem>
+ <para>Paginates and columnates files for printing</para>
+ <indexterm zone="ch-system-coreutils pr">
+ <primary sortas="b-pr">pr</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="printenv">
+ <term><command>printenv</command></term>
+ <listitem>
+ <para>Prints the environment</para>
+ <indexterm zone="ch-system-coreutils printenv">
+ <primary sortas="b-printenv">printenv</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="printf">
+ <term><command>printf</command></term>
+ <listitem>
+ <para>Prints the given arguments according to the given format, much
+ like the C printf function</para>
+ <indexterm zone="ch-system-coreutils printf">
+ <primary sortas="b-printf">printf</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="ptx">
+ <term><command>ptx</command></term>
+ <listitem>
+ <para>Produces a permuted index from the contents of the given files,
+ with each keyword in its context</para>
+ <indexterm zone="ch-system-coreutils ptx">
+ <primary sortas="b-ptx">ptx</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="pwd">
+ <term><command>pwd</command></term>
+ <listitem>
+ <para>Reports the name of the current working directory</para>
+ <indexterm zone="ch-system-coreutils pwd">
+ <primary sortas="b-pwd">pwd</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="readlink">
+ <term><command>readlink</command></term>
+ <listitem>
+ <para>Reports the value of the given symbolic link</para>
+ <indexterm zone="ch-system-coreutils readlink">
+ <primary sortas="b-readlink">readlink</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="rm">
+ <term><command>rm</command></term>
+ <listitem>
+ <para>Removes files or directories</para>
+ <indexterm zone="ch-system-coreutils rm">
+ <primary sortas="b-rm">rm</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="rmdir">
+ <term><command>rmdir</command></term>
+ <listitem>
+ <para>Removes directories if they are empty</para>
+ <indexterm zone="ch-system-coreutils rmdir">
+ <primary sortas="b-rmdir">rmdir</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="seq">
+ <term><command>seq</command></term>
+ <listitem>
+ <para>Prints a sequence of numbers within a given range and with a
+ given increment</para>
+ <indexterm zone="ch-system-coreutils seq">
+ <primary sortas="b-seq">seq</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="sha1sum">
+ <term><command>sha1sum</command></term>
+ <listitem>
+ <para>Prints or checks 160-bit Secure Hash Algorithm 1 (SHA1)
+ checksums</para>
+ <indexterm zone="ch-system-coreutils sha1sum">
+ <primary sortas="b-sha1sum">sha1sum</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="shred">
+ <term><command>shred</command></term>
+ <listitem>
+ <para>Overwrites the given files repeatedly with complex patterns,
+ making it difficult to recover the data</para>
+ <indexterm zone="ch-system-coreutils shred">
+ <primary sortas="b-shred">shred</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="sleep">
+ <term><command>sleep</command></term>
+ <listitem>
+ <para>Pauses for the given amount of time</para>
+ <indexterm zone="ch-system-coreutils sleep">
+ <primary sortas="b-sleep">sleep</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="sort">
+ <term><command>sort</command></term>
+ <listitem>
+ <para>Sorts the lines from the given files</para>
+ <indexterm zone="ch-system-coreutils sort">
+ <primary sortas="b-sort">sort</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="split">
+ <term><command>split</command></term>
+ <listitem>
+ <para>Splits the given file into pieces, by size or by number of
+ lines</para>
+ <indexterm zone="ch-system-coreutils split">
+ <primary sortas="b-split">split</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="stat">
+ <term><command>stat</command></term>
+ <listitem>
+ <para>Displays file or filesystem status</para>
+ <indexterm zone="ch-system-coreutils stat">
+ <primary sortas="b-stat">stat</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="stty">
+ <term><command>stty</command></term>
+ <listitem>
+ <para>Sets or reports terminal line settings</para>
+ <indexterm zone="ch-system-coreutils stty">
+ <primary sortas="b-stty">stty</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="sum">
+ <term><command>sum</command></term>
+ <listitem>
+ <para>Prints checksum and block counts for each given file</para>
+ <indexterm zone="ch-system-coreutils sum">
+ <primary sortas="b-sum">sum</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="sync">
+ <term><command>sync</command></term>
+ <listitem>
+ <para>Flushes file system buffers; it forces changed blocks to disk
+ and updates the super block</para>
+ <indexterm zone="ch-system-coreutils sync">
+ <primary sortas="b-sync">sync</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="tac">
+ <term><command>tac</command></term>
+ <listitem>
+ <para>Concatenates the given files in reverse</para>
+ <indexterm zone="ch-system-coreutils tac">
+ <primary sortas="b-tac">tac</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="tail">
+ <term><command>tail</command></term>
+ <listitem>
+ <para>Prints the last ten lines (or the given number of lines) of each
+ given file</para>
+ <indexterm zone="ch-system-coreutils tail">
+ <primary sortas="b-tail">tail</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="tee">
+ <term><command>tee</command></term>
+ <listitem>
+ <para>Reads from standard input while writing both to standard output
+ and to the given files</para>
+ <indexterm zone="ch-system-coreutils tee">
+ <primary sortas="b-tee">tee</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="test">
+ <term><command>test</command></term>
+ <listitem>
+ <para>Compares values and checks file types</para>
+ <indexterm zone="ch-system-coreutils test">
+ <primary sortas="b-test">test</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="touch">
+ <term><command>touch</command></term>
+ <listitem>
+ <para>Changes file timestamps, setting the access and modification
+ times of the given files to the current time; files that do not exist
+ are created with zero length</para>
+ <indexterm zone="ch-system-coreutils touch">
+ <primary sortas="b-touch">touch</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="tr">
+ <term><command>tr</command></term>
+ <listitem>
+ <para>Translates, squeezes, and deletes the given characters from
+ standard input</para>
+ <indexterm zone="ch-system-coreutils tr">
+ <primary sortas="b-tr">tr</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="true">
+ <term><command>true</command></term>
+ <listitem>
+ <para>Does nothing, successfully; it always exits with a status code
+ indicating success</para>
+ <indexterm zone="ch-system-coreutils true">
+ <primary sortas="b-true">true</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="tsort">
+ <term><command>tsort</command></term>
+ <listitem>
+ <para>Performs a topological sort; it writes a completely ordered list
+ according to the partial ordering in a given file</para>
+ <indexterm zone="ch-system-coreutils tsort">
+ <primary sortas="b-tsort">tsort</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="tty">
+ <term><command>tty</command></term>
+ <listitem>
+ <para>Reports the file name of the terminal connected to standard
+ input</para>
+ <indexterm zone="ch-system-coreutils tty">
+ <primary sortas="b-tty">tty</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="uname">
+ <term><command>uname</command></term>
+ <listitem>
+ <para>Reports system information</para>
+ <indexterm zone="ch-system-coreutils uname">
+ <primary sortas="b-uname">uname</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="unexpand">
+ <term><command>unexpand</command></term>
+ <listitem>
+ <para>Converts spaces to tabs</para>
+ <indexterm zone="ch-system-coreutils unexpand">
+ <primary sortas="b-unexpand">unexpand</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="uniq">
+ <term><command>uniq</command></term>
+ <listitem>
+ <para>Discards all but one of successive identical lines</para>
+ <indexterm zone="ch-system-coreutils uniq">
+ <primary sortas="b-uniq">uniq</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="unlink">
+ <term><command>unlink</command></term>
+ <listitem>
+ <para>Removes the given file</para>
+ <indexterm zone="ch-system-coreutils unlink">
+ <primary sortas="b-unlink">unlink</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="users">
+ <term><command>users</command></term>
+ <listitem>
+ <para>Reports the names of the users currently logged on</para>
+ <indexterm zone="ch-system-coreutils users">
+ <primary sortas="b-users">users</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="vdir">
+ <term><command>vdir</command></term>
+ <listitem>
+ <para>Is the same as <command>ls -l</command></para>
+ <indexterm zone="ch-system-coreutils vdir">
+ <primary sortas="b-vdir">vdir</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="wc">
+ <term><command>wc</command></term>
+ <listitem>
+ <para>Reports the number of lines, words, and bytes for each given
+ file, as well as a total line when more than one file is given</para>
+ <indexterm zone="ch-system-coreutils wc">
+ <primary sortas="b-wc">wc</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="who">
+ <term><command>who</command></term>
+ <listitem>
+ <para>Reports who is logged on</para>
+ <indexterm zone="ch-system-coreutils who">
+ <primary sortas="b-who">who</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="whoami">
+ <term><command>whoami</command></term>
+ <listitem>
+ <para>Reports the user name associated with the current effective
+ user ID</para>
+ <indexterm zone="ch-system-coreutils whoami">
+ <primary sortas="b-whoami">whoami</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry id="yes">
+ <term><command>yes</command></term>
+ <listitem>
+ <para>Repeatedly outputs <quote>y</quote> or a given string until
+ killed</para>
+ <indexterm zone="ch-system-coreutils yes">
+ <primary sortas="b-yes">yes</primary>
+ </indexterm>
+ </listitem>
+ </varlistentry>
+
+ </variablelist>
+
+ </sect2>
</sect1>
-
diff --git a/chapter06/createfiles.xml b/chapter06/createfiles.xml
index 734fedc33..03107ce8d 100644
--- a/chapter06/createfiles.xml
+++ b/chapter06/createfiles.xml
@@ -1,16 +1,19 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-createfiles">
-<title>Creating Essential Symlinks</title>
-<?dbhtml filename="createfiles.html"?>
+ <?dbhtml filename="createfiles.html"?>
+
+ <title>Creating Essential Symlinks</title>
-<para>Some programs use hard-wired paths to programs which do not exist yet. In
-order to satisfy these programs, create a number of symbolic links which will be
-replaced by real files throughout the course of this chapter after the software
-has been installed.</para>
+ <para>Some programs use hard-wired paths to programs which do not exist yet. In
+ order to satisfy these programs, create a number of symbolic links which will be
+ replaced by real files throughout the course of this chapter after the software
+ has been installed.</para>
<screen><userinput>ln -sv /tools/bin/{bash,cat,pwd,stty} /bin
ln -sv /tools/bin/perl /usr/bin
@@ -18,4 +21,3 @@ ln -sv /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -sv bash /bin/sh</userinput></screen>
</sect1>
-
diff --git a/chapter06/creatingdirs.xml b/chapter06/creatingdirs.xml
index a007df15e..b9a269ebc 100644
--- a/chapter06/creatingdirs.xml
+++ b/chapter06/creatingdirs.xml
@@ -1,15 +1,18 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
+
<sect1 id="ch-system-creatingdirs">
-<title>Creating Directories</title>
-<?dbhtml filename="creatingdirs.html"?>
+ <?dbhtml filename="creatingdirs.html"?>
+
+ <title>Creating Directories</title>
+
+ <para>It is time to create some structure in the LFS file system. Create a
+ standard directory tree by issuing the following commands:</para>
-<para>It is time to create some structure in the LFS file system. Create a
-standard directory tree by issuing the following commands:</para>
-
<screen><userinput>install -dv /{bin,boot,dev,etc/opt,home,lib,mnt}
install -dv /{sbin,srv,usr/local,var,opt}
install -dv /root -m 0750
@@ -30,42 +33,42 @@ install -dv /var/{opt,cache,lib/{misc,locate},local}
install -dv /opt/{bin,doc,include,info}
install -dv /opt/{lib,man/man{1,2,3,4,5,6,7,8}}</userinput></screen>
-<para>Directories are, by default, created with permission mode 755,
-but this is not desirable for all directories. In the commands above,
-two changes are made&mdash;one to the home directory of user
-<emphasis>root</emphasis>, and another to the directories for
-temporary files.</para>
+ <para>Directories are, by default, created with permission mode 755, but
+ this is not desirable for all directories. In the commands above, two
+ changes are made&mdash;one to the home directory of user <systemitem
+ class="username">root</systemitem>, and another to the directories for
+ temporary files.</para>
-<para>The first mode change ensures that not just anybody can enter
-the <filename class="directory">/root</filename> directory&mdash;the same
-as a normal user would do with his or her home directory. The second
-mode change makes sure that any user can write to the <filename
-class="directory">/tmp</filename> and <filename
-class="directory">/var/tmp</filename> directories, but cannot remove
-another user's files from them. The latter is prohibited by the
-so-called <quote>sticky bit,</quote> the highest bit (1) in the 1777
-bit mask.</para>
+ <para>The first mode change ensures that not just anybody can enter
+ the <filename class="directory">/root</filename> directory&mdash;the
+ same as a normal user would do with his or her home directory. The
+ second mode change makes sure that any user can write to the
+ <filename class="directory">/tmp</filename> and <filename
+ class="directory">/var/tmp</filename> directories, but cannot remove
+ another user's files from them. The latter is prohibited by the so-called
+ <quote>sticky bit,</quote> the highest bit (1) in the 1777 bit mask.</para>
-<note><para>Notice the two different constructions above for creating multiple
-man directories: <command>install -d /usr/share/man/man{1..8}</command> and
-<command>install -d /usr/local/share/man/man{1,2,3,4,5,6,7,8}</command>. The
-first one is new since Bash 3.0. This new feature will help make repetitive
-commands easier to type.</para></note>
+ <note>
+ <para>Notice the two different constructions above for creating multiple
+ man directories: <command>install -d /usr/share/man/man{1..8}</command> and
+ <command>install -d /usr/local/share/man/man{1,2,3,4,5,6,7,8}</command>. The
+ first one is new since Bash 3.0. This new feature will help make repetitive
+ commands easier to type.</para>
+ </note>
-<sect2>
-<title>FHS Compliance Note</title>
+ <sect2>
+ <title>FHS Compliance Note</title>
-<para>The directory tree is based on the Filesystem Hierarchy Standard (FHS)
- (available at <ulink url="http://www.pathname.com/fhs/"/>). In addition
-to the tree created above, this standard stipulates the existence of <filename
-class="directory">/usr/local/games</filename> and <filename
-class="directory">/usr/share/games</filename>. The FHS is not precise as to the
-structure of the <filename class="directory">/usr/local/share</filename>
-subdirectory, so we create only the directories that are needed. However, feel
-free to create these directories if you prefer to conform more strictly to the
-FHS.</para>
+ <para>The directory tree is based on the Filesystem Hierarchy Standard
+ (FHS) (available at <ulink url="http://www.pathname.com/fhs/"/>). In
+ addition to the tree created above, this standard stipulates the existence
+ of <filename class="directory">/usr/local/games</filename> and <filename
+ class="directory">/usr/share/games</filename>. The FHS is not precise as to
+ the structure of the <filename class="directory">/usr/local/share</filename>
+ subdirectory, so we create only the directories that are needed. However,
+ feel free to create these directories if you prefer to conform more strictly
+ to the FHS.</para>
-</sect2>
+ </sect2>
</sect1>
-
diff --git a/chapter06/glibc.xml b/chapter06/glibc.xml
index db2d0cb00..0ed64a597 100644
--- a/chapter06/glibc.xml
+++ b/chapter06/glibc.xml
@@ -55,7 +55,7 @@ not this add-on.
Unpack the tarball from within the Glibc source
directory:</para>
-<screen><userinput>tar jxf ../glibc-libidn-&glibc-version;.tar.bz2</userinput></screen>
+<screen><userinput>tar -xf ../glibc-libidn-&glibc-version;.tar.bz2</userinput></screen>
<para>In the vi_VN.TCVN locale, <command>bash</command> enters an infinite loop
at startup. It is unknown whether this is a <command>bash</command> bug or a
@@ -64,6 +64,17 @@ problem:</para>
<screen><userinput>sed -i '/vi_VN.TCVN/d' localedata/SUPPORTED</userinput></screen>
+<para>When running <command>make install</command>, a script called
+<filename>test-installation.pl</filename> performs a small sanity test
+on our newly installed Glibc. However, because our toolchain still points to the
+<filename class="directory">/tools</filename> directory, the sanity test would
+be carried out against the wrong Glibc. We can force the script to check the
+Glibc we have just installed with the following:</para>
+
+<screen><userinput>sed -i \
+'s|libs -o|libs -L/usr/lib -Wl,-dynamic-linker=/lib/ld-linux.so.2 -o|' \
+ scripts/test-installation.pl</userinput></screen>
+
<para>The Glibc documentation recommends building Glibc outside of the source
directory in a dedicated build directory:</para>
@@ -138,21 +149,7 @@ Prevent this warning with:</para>
<para>Install the package:</para>
-<screen><userinput>make install_root=/ install</userinput></screen>
-
-<para>The meaning of the make option:</para>
-
-<variablelist>
-<varlistentry>
-<term><parameter>install_root=/</parameter></term>
-<listitem><para>This causes the Glibc Makefile not to run the
-<filename>scripts/test-installation.pl</filename> script at the end
-of Glibc installation. Since the toolchain has not been adjusted yet for
-the new Glibc, this script would test Glibc installed in
-<filename class="directory">/tools</filename> and fail because the
-libidn add-on has not been installed there.</para></listitem>
-</varlistentry>
-</variablelist>
+<screen><userinput>make install</userinput></screen>
<para>The locales that can make the system respond in a different
language were not installed by the above command. None of the
@@ -175,6 +172,7 @@ localedef -i de_DE@euro -f ISO-8859-15 de_DE@euro
localedef -i en_HK -f ISO-8859-1 en_HK
localedef -i en_PH -f ISO-8859-1 en_PH
localedef -i en_US -f ISO-8859-1 en_US
+localedef -i en_US -f UTF-8 en_US.UTF-8
localedef -i es_MX -f ISO-8859-1 es_MX
localedef -i fa_IR -f UTF-8 fa_IR
localedef -i fr_FR -f ISO-8859-1 fr_FR
@@ -266,7 +264,7 @@ mode.</para></listitem>
<sect2 id="conf-ld" role="configuration">
-<title>Configuring Dynamic Loader</title>
+<title>Configuring the Dynamic Loader</title>
<indexterm zone="conf-ld"><primary sortas="e-/etc/ld.so.conf">/etc/ld.so.conf</primary></indexterm>
<para>By default, the dynamic loader (<filename
diff --git a/chapter06/introduction.xml b/chapter06/introduction.xml
index 51845cd85..065baeeed 100644
--- a/chapter06/introduction.xml
+++ b/chapter06/introduction.xml
@@ -58,16 +58,10 @@ package. Following the installation instructions, there is a list of
programs and libraries (along with brief descriptions of these) that
the package installs.</para>
-<para>To keep track of which package installs particular files, a package
-manager can be used. For a general overview of different styles of package
-managers, please refer to <ulink
-url="&blfs-root;view/svn/introduction/important.html"/>.
-For a package management method specifically geared towards LFS, we recommend <ulink
-url="&hints-root;more_control_and_pkg_man.txt"/>.</para>
-
-<note><para>The remainder of this book is to be performed while logged in as
-user <emphasis>root</emphasis> and no longer as user <emphasis>lfs</emphasis>.
-Also, double check that <envar>$LFS</envar> is set.</para></note>
+<note><para>At this point, you may wish to keep your finished temporary
+tools for use in future LFS builds by creating a tarball of the
+<filename class="directory">/tools</filename> directory and
+storing it in a safe location.</para></note>
</sect1>
diff --git a/chapter06/patch.xml b/chapter06/patch.xml
index 9a77dd13f..2b277811f 100644
--- a/chapter06/patch.xml
+++ b/chapter06/patch.xml
@@ -30,11 +30,9 @@ GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
<sect2 role="installation">
<title>Installation of Patch</title>
-<para>Prepare Patch for compilation. The preprocessor flag
-<parameter>-D_GNU_SOURCE</parameter> is only needed on the PowerPC
-platform. It can be left it out on other architectures:</para>
+<para>Prepare Patch for compilation.</para>
-<screen><userinput>CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/usr</userinput></screen>
+<screen><userinput>./configure --prefix=/usr</userinput></screen>
<para>Compile the package:</para>
diff --git a/chapter06/perl.xml b/chapter06/perl.xml
index c6421fb8d..97c818d5c 100644
--- a/chapter06/perl.xml
+++ b/chapter06/perl.xml
@@ -33,6 +33,12 @@ following patch to fix it.</para>
<screen><userinput>patch -Np1 -i ../&perl-sprintf-patch;</userinput></screen>
+<para>The DB_File module that comes with Perl-&perl-version; is incompatible
+with Berkeley DB-&db-version; (the testsuite fails if this module gets built).
+Apply the following patch in order to update the DB_File module:</para>
+
+<screen><userinput>patch -Np1 -i ../&perl-db_file-patch;</userinput></screen>
+
<para>First create a basic <filename>/etc/hosts</filename> file which will be
referenced in one of Perl's configuration files as well as being used used by
the testsuite if you run that.</para>
diff --git a/chapter06/pkgmgt.xml b/chapter06/pkgmgt.xml
new file mode 100644
index 000000000..e6d9bae3f
--- /dev/null
+++ b/chapter06/pkgmgt.xml
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
+ "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
+ <!ENTITY % general-entities SYSTEM "../general.ent">
+ %general-entities;
+]>
+
+<sect1 id="ch-system-pkgmgt">
+ <title>Package Management</title>
+ <?dbhtml filename="pkgmgt.html"?>
+
+ <para>Package Management is an often requested addition to the LFS Book. A
+ Package Manager allows tracking the installation of files making it easy to
+ remove and upgrade packages. Before you begin to wonder, NO&mdash;this section
+ will not talk about nor recommend any particular package manager. What it
+ provides is a roundup of the more popular techniques and how they work. The
+ perfect package manager for you may be among these techniques or may be a
+ combination of two or more of these techniques. This section briefly mentions
+ issues that may arise when upgrading packages.</para>
+
+ <para>Some reasons why no package manager is mentioned in LFS or BLFS include: </para>
+
+ <itemizedlist>
+ <listitem>
+ <para>Dealing with package management takes the focus away from the goals
+ of these books&mdash;teaching how a Linux system is built.</para>
+ </listitem>
+
+ <listitem>
+ <para>There are multiple solutions for package management, each having
+ its strengths and drawbacks. Including one that satisfies all audiences
+ is difficult.</para>
+ </listitem>
+ </itemizedlist>
+
+ <para>There are some hints written on the topic of package management. Visit
+ the <ulink url="&hints-root;">Hints subproject</ulink> and see if one of them
+ fits your need.</para>
+
+ <note><para>As no particular package management technique is mentioned in LFS,
+ the commands in the remainder of this book must be performed while logged in
+ as user <emphasis>root</emphasis> and no longer as user
+ <emphasis>lfs</emphasis>. Also, double check that <envar>$LFS</envar> is set.
+ </para></note>
+
+ <sect2>
+ <title>Upgrade Issues</title>
+
+ <para>A Package Manager makes it easy to upgrade to newer versions when they
+ are released. Generally the instructions in the LFS and BLFS Book can be
+ used to upgrade to the newer versions. Here are some points that you should
+ be aware of when upgrading packages, especially on a running system.</para>
+
+ <itemizedlist>
+ <listitem>
+ <para>If one of the toolchain packages
+ (<application>Glibc</application>, <application>GCC</application> or
+ <application>Binutils</application>) needs to be upgraded to a newer
+ minor version, it is safer to rebuild LFS. Though you
+ <emphasis>may</emphasis> be able to get by rebuilding all the packages
+ in their dependency order, we do not recommend it. For example, if
+ glibc-2.2.x needs to be updated to glibc-2.3.x, it is safer to rebuild.
+ For micro version updates, a simple reinstallation usually works, but
+ is not guaranteed. For example, upgrading from glibc-2.3.4 to
+ glibc-2.3.5 will not usually cause any problems.</para>
+ </listitem>
+
+ <listitem>
+ <para>If a package containing a shared library is updated, and if the
+ name of the library changes, then all the packages dynamically linked
+ to the library need to be recompiled to link against the newer library.
+ (Note that there is no correlation between the package version and the
+ name of the library.) For example, consider a package foo-1.2.3 that
+ installs a shared library with name
+ <filename class='libraryfile'>libfoo.so.1</filename>. Say you upgrade
+ the package to a newer version foo-1.2.4 that installs a shared library
+ with name <filename class='libraryfile'>libfoo.so.2</filename>. In this
+ case, all packages that are dynamically linked to
+ <filename class='libraryfile'>libfoo.so.1</filename> need to be
+ recompiled to link against
+ <filename class='libraryfile'>libfoo.so.2</filename>. Note that you
+ should not remove the previous libraries until the dependent packages
+ are recompiled.</para>
+ </listitem>
+
+ <listitem>
+ <para>If you are upgrading a running system, be on the lookout for
+ packages that use <command>cp</command> instead of
+ <command>install</command> to install files. The latter command is
+ usually safer if the executable or library is already loaded in memory.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ </sect2>
+
+ <sect2>
+ <title>Package Management Techniques</title>
+
+ <para>The following are some common package management techniques. Before
+ making a decision on a package manager, do some research on the various
+ techniques, particularly the drawbacks of the particular scheme.</para>
+
+ <sect3>
+ <title>It is All in My Head!</title>
+
+ <para>Yes, this is a package management technique. Some folks do not find
+ the need for a package manager because they know the packages intimately
+ and know what files are installed by each package. Some users also do not
+ need any package management because they plan on rebuilding the entire
+ system when a package is changed.</para>
+ </sect3>
+
+ <sect3>
+ <title>Install in Separate Directories</title>
+
+ <para>This is a simplistic package management that does not need any extra
+ package to manage the installations. Each package is installed in a
+ separate directory. For example, package foo-1.1 is installed in
+ <filename class='directory'>/usr/pkg/foo-1.1</filename>
+ and a symlink is made from <filename>/usr/pkg/foo</filename> to
+ <filename class='directory'>/usr/pkg/foo-1.1</filename>. When installing
+ a new version foo-1.2, it is installed in
+ <filename class='directory'>/usr/pkg/foo-1.2</filename> and the previous
+ symlink is replaced by a symlink to the new version.</para>
+
+ <para>Environment variables such as <envar>PATH</envar>,
+ <envar>LD_LIBRARY_PATH</envar>, <envar>MANPATH</envar>,
+ <envar>INFOPATH</envar> and <envar>CPPFLAGS</envar> need to be expanded to
+ include <filename>/usr/pkg/foo</filename>. For more than a few packages,
+ this scheme becomes unmanageable.</para>
+ </sect3>
+
+ <sect3>
+ <title>Symlink Style Package Management</title>
+
+ <para>This is a variation of the previous package management technique.
+ Each package is installed similar to the previous scheme. But instead of
+ making the symlink, each file is symlinked into the
+ <filename class='directory'>/usr</filename> hierarchy. This removes the
+ need to expand the environment variables. Though the symlinks can be
+ created by the user to automate the creation, many package managers have
+ been written using this approach. A few of the popular ones include Stow,
+ Epkg, Graft, and Depot.</para>
+
+ <para>The installation needs to be faked, so that the package thinks that
+ it is installed in <filename class="directory">/usr</filename> though in
+ reality it is installed in the
+ <filename class="directory">/usr/pkg</filename> hierarchy. Installing in
+ this manner is not usually a trivial task. For example, consider that you
+ are installing a package libfoo-1.1. The following instructions may
+ not install the package properly:</para>
+
+<screen role="nodump"><userinput>./configure --prefix=/usr/pkg/libfoo/1.1
+make
+make install</userinput></screen>
+
+ <para>The installation will work, but the dependent packages may not link
+ to libfoo as you would expect. If you compile a package that links against
+ libfoo, you may notice that it is linked to
+ <filename class='libraryfile'>/usr/pkg/libfoo/1.1/lib/libfoo.so.1</filename>
+ instead of <filename class='libraryfile'>/usr/lib/libfoo.so.1</filename>
+ as you would expect. The correct approach is to use the
+ <envar>DESTDIR</envar> strategy to fake installation of the package. This
+ approach works as follows:</para>
+
+<screen role="nodump"><userinput>./configure --prefix=/usr
+make
+make DESTDIR=/usr/pkg/libfoo/1.1 install</userinput></screen>
+
+ <para>Most packages support this approach, but there are some which do
+ not. For the non-compliant packages, you may either need to manually
+ install the package, or you may find that it is easier to install some
+ problematic packages into <filename class='directory'>/opt</filename>.
+ </para>
+ </sect3>
+
+ <sect3>
+ <title>Timestamp Based</title>
+
+ <para>In this technique, a file is timestamped before the installation of
+ the package. After the installation, a simple use of the
+ <command>find</command> command with the appropriate options can generate
+ a log of all the files installed after the timestamp file was created. A
+ package manager written with this approach is install-log.</para>
+
+ <para>Though this scheme has the advantage of being simple, it has two
+ drawbacks. If, during installation, the files are installed with any
+ timestamp other than the current time, those files will not be tracked by
+ the package manager. Also, this scheme can only be used when one package
+ is installed at a time. The logs are not reliable if two packages are
+ being installed on two different consoles.</para>
+ </sect3>
+
+ <sect3>
+ <title>LD_PRELOAD Based</title>
+
+ <para>In this approach, a library is preloaded before installation. During
+ installation, this library tracks the packages that are being installed by
+ attaching itself to various executables such as <command>cp</command>,
+ <command>install</command>, <command>mv</command> and tracking the system
+ calls that modify the filesystem. For this approach to work, all the
+ executables need to be dynamically linked without the suid or sgid bit.
+ Preloading the library may cause some unwanted side-effects during
+ installation. Therefore, it is advised that one performs some tests to
+ ensure that the package manager does not break anything and logs all the
+ appropriate files.</para>
+ </sect3>
+
+ <sect3>
+ <title>Creating Package Archives</title>
+
+ <para>In this scheme, the package installation is faked into a separate
+ tree as described in the Symlink style package management. After the
+ installation, a package archive is created using the installed files.
+ This archive is then used to install the package either on the local
+ machine or can even be used to install the package on other machines.
+ </para>
+
+ <para>This approach is used by most of the package managers found in the
+ commercial distributions. Examples of package managers that follow this
+ approach are RPM (which, incidentally, is required by the <ulink
+ url="http://lsbbook.gforge.freestandards.org/package.html#RPM">Linux
+ Standard Base Specification</ulink>), pkg-utils, Debian's apt, and
+ Gentoo's Portage system. A hint describing how to adopt this style of
+ package management for LFS systems is located at <ulink
+ url="&hints-root;/fakeroot.txt"/>.</para>
+ </sect3>
+
+ <sect3>
+ <title>User Based Management</title>
+
+ <para>This scheme, unique to LFS, was devised by Matthias Benkmann, and is
+ available from the <ulink url="&hints-root;">Hints Project</ulink>. In
+ this scheme, each package is installed as a separate user into the
+ standard locations. Files belonging to a package are easily identified by
+ checking the user ID. The features and shortcomings of this approach are
+ too complex to describe in this section. For the details please see the
+ hint at <ulink
+ url="&hints-root;/more_control_and_pkg_man.txt"/>.</para>
+ </sect3>
+
+ </sect2>
+
+</sect1>
diff --git a/chapter06/readjusting.xml b/chapter06/readjusting.xml
index 9a24e7597..18fc83d4a 100644
--- a/chapter06/readjusting.xml
+++ b/chapter06/readjusting.xml
@@ -9,7 +9,7 @@
<para>Now that the final C libraries have been installed, it is time to adjust
the toolchain again. The toolchain will be adjusted so that it will link any
-newly compiled program against these new libraries. This is the same process
+newly compiled program against these new libraries. This is a similar process
used in the <quote>Adjusting</quote> phase in the beginning of <xref
linkend="chapter-temporary-tools"/>, but with the adjustments reversed. In <xref
linkend="chapter-temporary-tools"/>, the chain was guided from the host's
@@ -19,44 +19,24 @@ be guided from that same <filename class="directory">/tools/lib</filename>
directory to the LFS <filename class="directory">/{,usr/}lib</filename>
directories.</para>
-<para>Start by adjusting the linker. The source and build directories from the
-second pass of Binutils were retained for this purpose. Install the adjusted
-linker by running the following command from within the <filename
-class="directory">binutils-build</filename> directory:</para>
-
-<screen><userinput>make -C ld INSTALL=/tools/bin/install install</userinput></screen>
-
-<note><para>If the earlier warning to retain the Binutils source and
-build directories from the second pass in <xref
-linkend="chapter-temporary-tools"/> was missed, or if they were
-accidentally deleted or are inaccessible, ignore the above command.
-The result will be that the next package, Binutils, will link against
-the C libraries in <filename class="directory">/tools</filename>
-rather than in <filename class="directory">/{,usr/}lib</filename>.
-This is not ideal, however, testing has shown that the resulting
-Binutils program binaries should be identical.</para></note>
-
-<para>From now on, every compiled program will link only against the
-libraries in <filename class="directory">/usr/lib</filename> and
-<filename class="directory">/lib</filename>. The extra
-<parameter>INSTALL=/tools/bin/install</parameter> option is needed
-because the <filename>Makefile</filename> file created during the
-second pass still contains the reference to
-<command>/usr/bin/install</command>, which has not been installed yet.
-Some host distributions contain a <filename
-class="symlink">ginstall</filename> symbolic link which takes
-precedence in the <filename>Makefile</filename> file and can cause a
-problem. The above command takes care of this issue.</para>
-
-<para>Remove the Binutils source and build directories now.</para>
+<para>First, backup the <filename class="directory">/tools</filename> linker, and
+replace it with the adjusted linker we made in chapter 5. We'll also create a
+link to its counterpart in <filename class="directory">/tools/$(gcc -dumpmachine)/bin</filename>.</para>
+
+<screen><userinput>mv -v /tools/bin/{ld,ld-old}
+mv -v /tools/$(gcc -dumpmachine)/bin/{ld,ld-old}
+mv -v /tools/bin/{ld-new,ld}
+ln -sv /tools/bin/ld /tools/$(gcc -dumpmachine)/bin/ld</userinput></screen>
<para>Next, amend the GCC specs file so that it points to the new
-dynamic linker. A <command>sed</command> command accomplishes this:</para>
+dynamic linker, and so that GCC knows where to find its start files.
+A <command>perl</command> command accomplishes this:</para>
-<screen><userinput>SPECFILE=`dirname $(gcc -print-libgcc-file-name)`/specs &amp;&amp;
-gcc -dumpspecs > $SPECFILE &amp;&amp;
-sed -i 's@^/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g' $SPECFILE &amp;&amp;
-unset SPECFILE</userinput></screen>
+<screen><userinput>gcc -dumpspecs | \
+perl -p -e 's@/tools/lib/ld-linux.so.2@/lib/ld-linux.so.2@g;' \
+ -e 's@\*startfile_prefix_spec:\n@$_/usr/lib/ @g;' &gt; \
+ `dirname $(gcc --print-libgcc-file-name)`/specs
+</userinput></screen>
<para>It is a good idea to visually inspect the specs file to verify the intended
change was actually made.</para>
@@ -75,7 +55,7 @@ are working as expected. To do this, perform a sanity
check:</para>
<screen><userinput>echo 'main(){}' &gt; dummy.c
-cc dummy.c
+cc dummy.c -Wl,--verbose &amp;&gt; dummy.log
readelf -l a.out | grep ': /lib'</userinput></screen>
<para>If everything is working correctly, there should be no errors,
@@ -87,6 +67,36 @@ platform-specific differences in dynamic linker name):</para>
<para>Note that <filename class="directory">/lib</filename> is now
the prefix of our dynamic linker.</para>
+<para>Now make sure that we're setup to use the correct start files:</para>
+
+<screen><userinput>grep "/usr/lib/crt.* " dummy.log</userinput></screen>
+
+<para>If everything is working correctly, there should be no errors,
+and the output of the last command will be:</para>
+
+<screen><computeroutput>attempt to open /usr/lib/crt1.o succeeded
+attempt to open /usr/lib/crti.o succeeded
+attempt to open /usr/lib/crtn.o succeeded</computeroutput></screen>
+
+<para>Next make sure that we're using the correct libc:</para>
+
+<screen><userinput>grep "/lib/libc.so.6 " dummy.log</userinput></screen>
+
+<para>If everything is working correctly, there should be no errors,
+and the output of the last command will be:</para>
+
+<screen><computeroutput>attempt to open /lib/libc.so.6 succeeded</computeroutput></screen>
+
+<para>Lastly, make sure GCC is using the correct dynamic linker:</para>
+
+<screen><userinput>grep found dummy.log</userinput></screen>
+
+<para>If everything is working correctly, there should be no errors,
+and the output of the last command will be (allowing for
+platform-specific differences in dynamic linker name):</para>
+
+<screen><computeroutput>found ld-linux.so.2 at /lib/ld-linux.so.2</computeroutput></screen>
+
<para>If the output does not appear as shown above or is not received
at all, then something is seriously wrong. Investigate and retrace the
steps to find out where the problem is and correct it. The most likely
@@ -97,7 +107,7 @@ the process.</para>
<para>Once everything is working correctly, clean up the test
files:</para>
-<screen><userinput>rm -v dummy.c a.out</userinput></screen></caution>
+<screen><userinput>rm -v dummy.c a.out dummy.log</userinput></screen></caution>
</sect1>
diff --git a/chapter06/revisedchroot.xml b/chapter06/revisedchroot.xml
index b2f1b3afe..29eeba80a 100644
--- a/chapter06/revisedchroot.xml
+++ b/chapter06/revisedchroot.xml
@@ -18,8 +18,7 @@ exiting, use the following modified chroot command:</para>
<para>The reason for this is that the programs in <filename
class="directory">/tools</filename> are no longer needed. Since they are no
longer needed you can delete the <filename class="directory">/tools</filename>
-directory if so desired or tar it up and keep it to build another final
-system.</para>
+directory if so desired.</para>
<note><para>Removing <filename class="directory">/tools</filename> will also
remove the temporary copies of Tcl, Expect, and DejaGNU which were used for
diff --git a/chapter06/shadow.xml b/chapter06/shadow.xml
index f2df3ccac..9a2e12a76 100644
--- a/chapter06/shadow.xml
+++ b/chapter06/shadow.xml
@@ -16,7 +16,7 @@ way.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
-<seglistitem><seg>0.3 SBU</seg><seg>15.9 MB</seg></seglistitem>
+<seglistitem><seg>0.4 SBU</seg><seg>14.7 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
@@ -34,14 +34,20 @@ Diffutils, GCC, Gettext, Glibc, Grep, Make, Patch, and Sed</seg></seglistitem>
prior to building Shadow. Then add <parameter>--with-libcrack</parameter> to the
<command>configure</command> command below.</para></note>
-<para>Apply a patch to fix a number of incorrect assumptions in Shadow's
-<command>configure</command> script:</para>
+<para>Prepare Shadow for compilation:</para>
-<screen><userinput>patch -Np1 -i ../&shadow-configure-patch;</userinput></screen>
+<screen><userinput>./configure --libdir=/lib --enable-shared --without-selinux</userinput></screen>
-<para>Prepare Shadow for compilation:</para>
+<para>The meaning of the configure options:</para>
-<screen><userinput>./configure --libdir=/lib --enable-shared</userinput></screen>
+<variablelist>
+<varlistentry>
+<term><parameter>--without-selinux</parameter></term>
+<listitem><para>Support for selinux is enabled by default, but selinux is not
+built in a base LFS system. The <command>configure</command> script will fail
+if this option is not used.</para></listitem>
+</varlistentry>
+</variablelist>
<para>Disable the installation of the <command>groups</command> program and its man page, as Coreutils provides a better version:</para>
diff --git a/chapter06/strippingagain.xml b/chapter06/strippingagain.xml
index 7a4090fd3..af1352e04 100644
--- a/chapter06/strippingagain.xml
+++ b/chapter06/strippingagain.xml
@@ -17,7 +17,7 @@ debug the software fully anymore.</para>
experience any difficulties. However, it is easy to make a typo and
render the new system unusable, so before running the
<command>strip</command> command, it is a good idea to make a
-backup of the current situation.</para>
+backup of the LFS system in its current state.</para>
<para>Before performing the stripping, take special care to ensure that
none of the binaries that are about to be stripped are running. If
diff --git a/chapter06/vim.xml b/chapter06/vim.xml
index bd21f2f32..d58dbb6b7 100644
--- a/chapter06/vim.xml
+++ b/chapter06/vim.xml
@@ -113,7 +113,7 @@ url="&blfs-root;view/svn/postlfs/editors.html#postlfs-editors-vim"/>.</para>
</sect2>
<sect2 id="conf-vim" role="configuration"><title>Configuring Vim</title>
-<indexterm zone="conf-vim"><primary sortas="e-/etc/vim">/etc/vim</primary></indexterm>
+<indexterm zone="conf-vim"><primary sortas="e-/etc/vimrc">/etc/vimrc</primary></indexterm>
<para>By default, <command>vim</command> runs in vi-incompatible mode. This may
be new to users who have used other editors in the past. The
diff --git a/chapter08/kernel.xml b/chapter08/kernel.xml
index 457e1c2fb..9a9de871b 100644
--- a/chapter08/kernel.xml
+++ b/chapter08/kernel.xml
@@ -147,6 +147,11 @@
<screen><userinput>cp -v .config /boot/config-&linux-version;</userinput></screen>
+ <para>Install the documentation for the Linux kernel:</para>
+
+<screen>install -d /usr/share/doc/linux-&linux-version; &amp;&amp;
+cp -r Documentation/* /usr/share/doc/linux-&linux-version;</screen>
+
<para>It is important to note that the files in the kernel source
directory are not owned by <emphasis>root</emphasis>. Whenever a
package is unpacked as user <emphasis>root</emphasis> (like we did
diff --git a/general.ent b/general.ent
index c738c51e2..7a525e96d 100644
--- a/general.ent
+++ b/general.ent
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!ENTITY version "ALPHABETICAL-20060122">
-<!ENTITY releasedate "January 22, 2006">
+<!ENTITY version "ALPHABETICAL-20060203">
+<!ENTITY releasedate "Febraury 3, 2006">
<!ENTITY milestone "6.2">
<!ENTITY generic-version "development"> <!-- Use "development", "testing", or "x.y[-pre{x}]" -->
@@ -22,7 +22,6 @@
<!ENTITY alpha-gnu "ftp://alpha.gnu.org/gnu/">
<!ENTITY kernel "http://www.kernel.org/pub/">
<!ENTITY sourceforge "http://prdownloads.sourceforge.net/">
-<!ENTITY alexpatches "&lfs-root;~alexander/patches/">
<!ENTITY % patches-entities SYSTEM "patches.ent">
%patches-entities;
@@ -50,7 +49,7 @@
<!ENTITY glibc-version "2.3.6">
<!ENTITY grep-version "2.5.1a">
<!ENTITY groff-version "1.18.1.1">
-<!ENTITY groff-patchlevel "10">
+<!ENTITY groff-patchlevel "11">
<!ENTITY grub-version "0.97">
<!ENTITY gzip-version "1.3.5">
<!ENTITY hotplug-version "2004_09_23">
@@ -67,7 +66,7 @@
<!ENTITY m4-version "1.4.4">
<!ENTITY make-version "3.80">
<!ENTITY man-db-version "2.4.3">
-<!ENTITY man-pages-version "2.18">
+<!ENTITY man-pages-version "2.21">
<!ENTITY mktemp-version "1.5">
<!ENTITY module-init-tools-version "3.2.2">
<!ENTITY ncurses-version "5.5">
@@ -75,10 +74,10 @@
<!ENTITY patch-version "2.5.4">
<!ENTITY perl-version "5.8.7">
<!ENTITY procps-version "3.2.6">
-<!ENTITY psmisc-version "21.9">
+<!ENTITY psmisc-version "22.1">
<!ENTITY readline-version "5.1">
<!ENTITY sed-version "4.1.4">
-<!ENTITY shadow-version "4.0.13">
+<!ENTITY shadow-version "4.0.14">
<!ENTITY sysklogd-version "1.4.1">
<!ENTITY sysvinit-version "2.86">
<!ENTITY tar-version "1.15.1">
diff --git a/patches.ent b/patches.ent
index fe91241be..1a5903c6a 100644
--- a/patches.ent
+++ b/patches.ent
@@ -4,7 +4,7 @@
<!ENTITY bzip2-bzgrep-patch "bzip2-&bzip2-version;-bzgrep_security-1.patch">
<!ENTITY bzip2-docs-patch "bzip2-&bzip2-version;-install_docs-1.patch">
-<!ENTITY coreutils-i18n-patch "coreutils-&coreutils-version;-i18n-1.patch">
+<!ENTITY coreutils-i18n-patch "coreutils-&coreutils-version;-i18n-2.patch">
<!ENTITY coreutils-suppress-patch "coreutils-&coreutils-version;-suppress_uptime_kill_su-1.patch">
<!ENTITY coreutils-uname-patch "coreutils-&coreutils-version;-uname-1.patch">
@@ -37,11 +37,10 @@
<!ENTITY ncurses-fixes-patch "ncurses-&ncurses-version;-fixes-1.patch">
<!-- <!ENTITY ncurses-rollup-patch "ncurses-&ncurses-version;-&ncurses-date;-patch.sh.bz2"> -->
+<!ENTITY perl-db_file-patch "perl-&perl-version;-update_db_file-1.patch">
<!ENTITY perl-libc-patch "perl-&perl-version;-libc-1.patch">
<!ENTITY perl-sprintf-patch "perl-&perl-version;-sprintf_vulnerability-1.patch">
-<!ENTITY shadow-configure-patch "shadow-&shadow-version;-configure_fix-1.patch">
-
<!ENTITY sysklogd-8bit-patch "sysklogd-&sysklogd-version;-8bit-1.patch">
<!ENTITY sysklogd-fixes-patch "sysklogd-&sysklogd-version;-fixes-1.patch">