Trunk is now identical to Testing

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@4648 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689
This commit is contained in:
Gerard Beekmans 2005-02-19 22:16:42 +00:00
parent 2f9131f839
commit 81fd230419
153 changed files with 12730 additions and 845 deletions

19
INSTALL
View File

@ -20,23 +20,8 @@ If all you want to do is convert XML to HTML perform the following:
* DocBook DTD
- http://www.linuxfromscratch.org/blfs/view/svn/pst/xml.html
* DocBook XSL Stylesheets (1.67.2)
install -d /usr/share/xml/docbook/xsl-stylesheets-1.67.2
chown -R root:root .
cp -af INSTALL VERSION common eclipse extensions fo html htmlhelp images \
javahelp lib manpages params profiling template xhtml \
/usr/share/xml/docbook/xsl-stylesheets-1.67.2
install -d /usr/share/doc/xml
cp -af doc/* /usr/share/doc/xml
cd /usr/share/xml/docbook/xsl-stylesheets-1.67.2 && \
sed -i -e 's@current/@1.67.2/@' INSTALL && \
sh INSTALL
xmlcatalog --noout --add "delegateURI" \
"http://docbook.sourceforge.net/release/xsl/1.67.2/" \
"file:///usr/share/xml/docbook/xsl-stylesheets-1.67.2/catalog.xml" \
/etc/xml/catalog
ln -sf xsl-stylesheets-$(VERSION) \
/usr/share/xml/docbook/xsl-stylesheets-current
* DocBook XSL Stylesheets
- http://www.linuxfromscratch.org/blfs/view/svn/pst/docbook-xsl.html
* HTMLTidy
- http://www.linuxfromscratch.org/blfs/view/svn/general/tidy.html

View File

@ -5,9 +5,9 @@ NOCHUNKS_OUTPUT=LFS-BOOK.html
XSLROOTDIR=/usr/share/xml/docbook/xsl-stylesheets-current
lfs:
xsltproc --xinclude --nonet -stringparam chunk.quietly $(CHUNK_QUIET) \
-stringparam base.dir $(BASEDIR)/ stylesheets/lfs-chunked.xsl \
index.xml
xsltproc --xinclude --nonet -stringparam profile.condition html \
-stringparam chunk.quietly $(CHUNK_QUIET) -stringparam base.dir $(BASEDIR)/ \
stylesheets/lfs-chunked.xsl index.xml
if [ ! -e $(BASEDIR)/stylesheets ]; then \
mkdir -p $(BASEDIR)/stylesheets; \
@ -32,8 +32,9 @@ lfs:
for filename in `find $(BASEDIR) -name "*.html"`; do \
sed -i -e "s@text/html@application/xhtml+xml@g" $$filename; \
done;
#
# This is the old "pdf" target. The old "print" target below has been
# This is the old "pdf" target. The old "print" target below has been
# renamed to "pdf" and will be used. This commented out previous_pdf
# target can be removed eventually. It'll remain here for a bit for
# historical reasons
@ -46,7 +47,7 @@ lfs:
# rm lfs.fo
pdf:
xsltproc --xinclude --nonet --stringparam profile.condition print \
xsltproc --xinclude --nonet --stringparam profile.condition pdf \
--output $(BASEDIR)/lfs-pdf.xml stylesheets/lfs-profile.xsl index.xml
xsltproc --nonet --output $(BASEDIR)/lfs-pdf.fo stylesheets/lfs-pdf.xsl \
$(BASEDIR)/lfs-pdf.xml
@ -55,10 +56,15 @@ pdf:
rm $(BASEDIR)/lfs-pdf.xml $(BASEDIR)/lfs-pdf.fo
nochunks:
xsltproc --xinclude --nonet --output $(BASEDIR)/$(NOCHUNKS_OUTPUT) \
xsltproc --xinclude --nonet -stringparam profile.condition html \
--output $(BASEDIR)/$(NOCHUNKS_OUTPUT) \
stylesheets/lfs-nochunks.xsl index.xml
tidy -config tidy.conf $(BASEDIR)/$(NOCHUNKS_OUTPUT) || true
sed -i -e "s@text/html@application/xhtml+xml@g" \
$(BASEDIR)/$(NOCHUNKS_OUTPUT)
validate:
xmllint --noout --nonet --xinclude --postvalid index.xml

10
TODO
View File

@ -1,10 +0,0 @@
- Mention --enable-kernel=... where appropriate.
- POSIX compliance patches (aka, removing the coreutils hack).
- Pass --enable-const (and maybe --enable-widec) to ncurses.
- Use that E2fsprogs patch to include Readline support in debugfs.
- See about removing some things from Chapter 5, like patch. We can build
those at the beginning of chapter 6 and have one less package to compile.
We need to be sure this doens't break the pureness though.
- Check for pureness and fix any occurrences of breakage.
- Add more index terms to hotplug page.
- Convert some patches to seds (only sane ones, though).

View File

@ -8,7 +8,402 @@
<title>Acronyms and Terms</title>
<?dbhtml filename="acronymlist.html"?>
<para>See testing</para>
<variablelist>
<?dbfo list-presentation="list"?>
<varlistentry>
<term><emphasis role="bold">ABI</emphasis></term><listitem><para>Application Binary Interface</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ALFS</emphasis></term><listitem><para>Automated Linux From Scratch</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ALSA</emphasis></term><listitem><para>Advanced Linux
Sound Architecture</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">API</emphasis></term><listitem><para>Application
Programming Interface</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ASCII</emphasis></term><listitem><para>American Standard
Code for Information Interchange</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">BIOS</emphasis></term><listitem><para>Basic Input/Output
System</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">BLFS</emphasis></term><listitem><para>Beyond Linux From
Scratch</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">BSD</emphasis></term><listitem><para>Berkeley Software
Distribution</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">chroot</emphasis></term><listitem><para>change root</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">CMOS</emphasis></term><listitem><para>Complementary
Metal Oxide Semiconductor</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">COS</emphasis></term>
<listitem><para>Class Of Service</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">CPU</emphasis></term>
<listitem><para>Central Processing Unit</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">CRC</emphasis></term>
<listitem><para>Cyclic Redundancy Check</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">CVS</emphasis></term>
<listitem><para>Concurrent Versions System</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">DHCP</emphasis></term>
<listitem><para>Dynamic Host Configuration Protocol</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">DNS</emphasis></term>
<listitem><para>Domain Name Service</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">EGA</emphasis></term>
<listitem><para>Enhanced Graphics Adapter</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ELF</emphasis></term>
<listitem><para>Executable and Linkable Format</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">EOF</emphasis></term>
<listitem><para>End of File</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">EQN</emphasis></term>
<listitem><para>equation</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">EVMS</emphasis></term>
<listitem><para>Enterprise Volume Management System</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ext2</emphasis></term>
<listitem><para>second extended file system</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FAQ</emphasis></term>
<listitem><para>Frequently Asked Questions</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FHS</emphasis></term>
<listitem><para>Filesystem Hierarchy Standard</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FIFO</emphasis></term>
<listitem><para>First-In, First Out</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FQDN</emphasis></term>
<listitem><para>Fully Qualified Domain Name</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">FTP</emphasis></term>
<listitem><para>File Transfer Protocol</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">GB</emphasis></term>
<listitem><para>Gibabytes</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">GCC</emphasis></term>
<listitem><para>GNU Compiler Collection</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">GID</emphasis></term>
<listitem><para>Group Identifier</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">GMT</emphasis></term>
<listitem><para>Greenwich Mean Time</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">GPG</emphasis></term>
<listitem><para>GNU Privacy Guard</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">HTML</emphasis></term>
<listitem><para>Hypertext Markup Language</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IDE</emphasis></term>
<listitem><para>Integrated Drive Electronics</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IEEE</emphasis></term>
<listitem><para>Institute of Electrical and Electronic Engineers</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IO</emphasis></term>
<listitem><para>Input/Output</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IP</emphasis></term>
<listitem><para>Internet Protocol</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IPC</emphasis></term>
<listitem><para>Inter-Process Communication</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">IRC</emphasis></term>
<listitem><para>Internet Relay Chat</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ISO</emphasis></term>
<listitem><para>International Organization for Standardization</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">ISP</emphasis></term>
<listitem><para>Internet Service Provider</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">KB</emphasis></term>
<listitem><para>Kilobytes</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">LED</emphasis></term>
<listitem><para>Light Emitting Diode</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">LFS</emphasis></term>
<listitem><para>Linux From Scratch</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">LSB</emphasis></term>
<listitem><para>Linux Standards Base</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">MB</emphasis></term>
<listitem><para>Megabytes</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">MBR</emphasis></term>
<listitem><para>Master Boot Record</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">MD5</emphasis></term>
<listitem><para>Message Digest 5</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">NIC</emphasis></term>
<listitem><para>Network Interface Card</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">NLS</emphasis></term>
<listitem><para>Native Language Support</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">NNTP</emphasis></term>
<listitem><para>Network News Transport Protocol</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">NPTL</emphasis></term>
<listitem><para>Native POSIX Threading Library</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">OSS</emphasis></term>
<listitem><para>Open Sound System</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">PCH</emphasis></term>
<listitem><para>Pre-Compiled Headers</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">PCRE</emphasis></term>
<listitem><para>Perl Compatible Regular Expression</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">PID</emphasis></term>
<listitem><para>Process Identifier</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">PLFS</emphasis></term>
<listitem><para>Pure Linux From Scratch</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">PTY</emphasis></term>
<listitem><para>pseudo terminal</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">QA</emphasis></term>
<listitem><para>Quality Assurance</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">QOS</emphasis></term>
<listitem><para>Quality Of Service</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">RAM</emphasis></term>
<listitem><para>Random Access Memory</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">RPC</emphasis></term>
<listitem><para>Remote Procedure Call</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">RTC</emphasis></term>
<listitem><para>Real Time Clock</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">SBU</emphasis></term>
<listitem><para>Static Binutils Unit</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">SCO</emphasis></term>
<listitem><para>The Santa Cruz Operation</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">SGR</emphasis></term>
<listitem><para>Select Graphic Rendition</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">SHA1</emphasis></term>
<listitem><para>Secure-Hash Algorithm 1</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">SMP</emphasis></term>
<listitem><para>Symmetric Multi-Processor</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">TLDP</emphasis></term>
<listitem><para>The Linux Documentation Project</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">TFTP</emphasis></term>
<listitem><para>Trivial File Transfer Protocol</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">TLS</emphasis></term>
<listitem><para>Thread-Local Storage</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">UID</emphasis></term>
<listitem><para>User Identifier</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">umask</emphasis></term>
<listitem><para>user file-creation mask</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">USB</emphasis></term>
<listitem><para>Universal Serial Bus</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">UTC</emphasis></term>
<listitem><para>Coordinated Universal Time</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">UUID</emphasis></term>
<listitem><para>Universally Unique Identifier</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">VC</emphasis></term>
<listitem><para>Virtual Console</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">VGA</emphasis></term>
<listitem><para>Video Graphics Array</para></listitem>
</varlistentry>
<varlistentry>
<term><emphasis role="bold">VT</emphasis></term>
<listitem><para>Virtual Terminal</para></listitem>
</varlistentry>
</variablelist>
</appendix>

View File

@ -8,7 +8,290 @@
<title>Acknowledgments</title>
<?dbhtml filename="acknowledgements.html"?>
<para>See testing</para>
<para>We would like to thank the following people and organizations
for their contributions to the Linux From Scratch Project.</para>
<bridgehead renderas="sect2">Project Team Members</bridgehead>
<itemizedlist>
<listitem><para><ulink url="mailto:gerard@linuxfromscratch.org">Gerard
Beekmans</ulink> &lt;gerard@linuxfromscratch.org&gt; &ndash; Linux From
Scratch initiator, LFS Project organizer</para></listitem>
<listitem><para><ulink
url="mailto:theladyskye@linuxfromscratch.org">Christine
Barczak</ulink> &lt;theladyskye@linuxfromscratch.org&gt; &ndash; LFS Book
Editor</para></listitem>
<listitem><para><ulink
url="mailto:matthew@linuxfromscratch.org">Matthew Burgess</ulink>
&lt;matthew@linuxfromscratch.org&gt; &ndash; LFS Project Co-Leader, LFS
general package maintainer, LFS Technical Writer.</para></listitem>
<listitem><para><ulink url="mailto:meerkats@bellsouth.net">Craig
Colton</ulink> &lt;meerkats@bellsouth.net&gt; &ndash; LFS, Automated Linux
From Scratch (ALFS), BLFS and hints project logo
creator</para></listitem>
<listitem><para><ulink url="mailto:nathan@linuxfromscratch.org">Nathan
Coulson</ulink> &lt;nathan@linuxfromscratch.org&gt; &ndash; LFS bootscripts
maintainer</para></listitem>
<listitem><para><ulink url="mailto:jeroen@linuxfromscratch.org">Jeroen
Coumans</ulink> &lt;jeroen@linuxfromscratch.org&gt; &ndash; Website
developer, FAQ maintainer</para></listitem>
<listitem><para><ulink url="mailto:bdubbs@linuxfromscratch.org">Bruce
Dubbs</ulink> &lt;bdubbs@linuxfromscratch.org&gt; &ndash; LFS Quality
Assurance (QA) Team leader, BLFS Book Editor</para></listitem>
<listitem><para><ulink url="mailto:manuel@linuxfromscratch.org">Manuel
Canales Esparcia</ulink> &lt;manuel@linuxfromscratch.org&gt; &ndash; LFS
XML/XSL maintainer</para></listitem>
<listitem><para><ulink url="mailto:jim@linuxfromscratch.org">Jim
Gifford</ulink> &lt;jim@linuxfromscratch.org&gt; &ndash; LFS Technical
Writer, Patches maintainer</para></listitem>
<listitem><para><ulink url="mailto:jhuntwork@linuxfromscratch.org">Jeremy
Huntwork</ulink> &lt;jhuntwork@linuxfromscratch.org&gt; &ndash; ALFS Maintainer, LFS Live-CD maintainer</para></listitem>
<listitem><para><ulink
url="mailto:nicholas@linuxfromscratch.org">Nicholas Leippe</ulink>
&lt;nicholas@linuxfromscratch.org&gt; &ndash; Wiki
maintainer</para></listitem>
<listitem><para><ulink
url="mailto:lizardo@linuxfromscratch.org">Anderson Lizardo</ulink>
&lt;lizardo@linuxfromscratch.org&gt; &ndash; Website backend scripts
maintainer</para></listitem>
<listitem><para><ulink url="mailto:scot@linuxfromscratch.org">Scot
Mc Pherson</ulink> &lt;scot@linuxfromscratch.org&gt; &ndash; LFS NNTP gateway
maintainer.</para></listitem>
<listitem><para><ulink url="mailto:ryan@linuxfromscratch.org">Ryan
Oliver</ulink> &lt;ryan@linuxfromscratch.org&gt; &ndash; Testing Team
leader, Toolchain maintainer, co-creator of Pure LFS
(PLFS)</para></listitem>
<listitem><para><ulink url="mailto:semzx@newmail.ru">Alexander
Patrakov</ulink> &lt;semzx@newmail.ru&gt; &ndash; Former LFS Technical
Writer</para></listitem>
<listitem><para><ulink url="mailto:jwrober@linuxfromscratch.org">James
Robertson</ulink> &lt;jwrober@linuxfromscratch.org&gt; &ndash; Bugzilla
maintainer, Wiki developer, LFS Tecnical Writer</para></listitem>
<listitem><para><ulink url="mailto:tushar@linuxfromscratch.org">Tushar
Teredesai</ulink> &lt;tushar@linuxfromscratch.org&gt; &ndash; BLFS Book
Editor, hints and patches projects maintainer</para></listitem>
<listitem><para><ulink url="mailto:jeremy@linuxfromscratch.org">Jeremy
Utley</ulink> &lt;jeremy@linuxfromscratch.org&gt; &ndash; LFS Technical
Writer, Bugzilla maintainer, LFS bootscripts maintainer, LFS Server
co-administrator</para></listitem>
<listitem><para><ulink url="mailto:zwinkles@gmail.com">Zack
Winkles</ulink> &lt;zwinkles@gmail.com&gt; &ndash; Former LFS Technical
Writer</para></listitem>
<listitem><para>Countless other people on the various LFS and BLFS mailing lists
who helped make this book possible by giving their suggestions,
testing the book, and submitting bug reports, instructions, and their
experiences with installing various packages.</para></listitem>
</itemizedlist>
<bridgehead renderas="sect2">Translators</bridgehead>
<itemizedlist>
<listitem><para><ulink url="mailto:macana@lfs-es.com">Manuel Canales
Esparcia</ulink> &lt;macana@lfs-es.com&gt; &ndash; Spanish LFS translation
project</para></listitem>
<listitem><para><ulink url="mailto:johan@linuxfromscratch.org">Johan
Lenglet</ulink> &lt;johan@linuxfromscratch.org&gt; &ndash; French LFS
translation project</para></listitem>
<listitem><para><ulink
url="mailto:lizardo@linuxfromscratch.org">Anderson Lizardo</ulink>
&lt;lizardo@linuxfromscratch.org&gt; &ndash; Portuguese LFS translation
project</para></listitem>
<listitem><para><ulink url="mailto:tr@erdfunkstelle.de">Thomas
Reitelbach </ulink> &lt;tr@erdfunkstelle.de&gt; &ndash; German LFS
translation project</para> </listitem>
</itemizedlist>
<bridgehead renderas="sect2">Mirror Maintainers</bridgehead>
<bridgehead renderas="sect3">North American Mirrors</bridgehead>
<itemizedlist>
<listitem><para><ulink url="mailto:scott@osuosl.org">Scott
Kveton</ulink> &lt;scott@osuosl.org&gt; &ndash; lfs.oregonstate.edu
mirror</para></listitem>
<listitem><para><ulink url="mailto:miha@xuy.biz">Mikhail
Pastukhov</ulink> &lt;miha@xuy.biz&gt; &ndash; lfs.130th.net
mirror</para></listitem>
<listitem><para><ulink url="mailto:lost@l-w.net">William Astle</ulink>
&lt;lost@l-w.net&gt; &ndash; ca.linuxfromscratch.org
mirror</para></listitem>
<listitem><para><ulink url="mailto:jpolen@rackspace.com">Jeremy
Polen</ulink> &lt;jpolen@rackspace.com&gt; &ndash; us2.linuxfromscratch.org
mirror</para></listitem>
<listitem><para><ulink url="mailto:tim@idge.net">Tim Jackson</ulink>
&lt;tim@idge.net&gt; &ndash; linuxfromscratch.idge.net
mirror</para></listitem>
<listitem><para><ulink url="mailto:jeremy@linux-phreak.net">Jeremy
Utley </ulink> &lt;jeremy@linux-phreak.net&gt; &ndash; lfs.linux-phreak.net
mirror</para></listitem>
</itemizedlist>
<bridgehead renderas="sect3">South American Mirrors</bridgehead>
<itemizedlist>
<listitem><para><ulink url="mailto:sysop@mesi.com.ar">Andres
Meggiotto</ulink> &lt;sysop@mesi.com.ar&gt; &ndash; lfs.mesi.com.ar
mirror</para></listitem>
<listitem><para><ulink url="mailto:manuel@linuxfromscratch.org">Manuel
Canales Esparcia</ulink> &lt;manuel@linuxfromscratch.org&gt; &ndash;
www.dattaweb.com/~lfs-eso/lfsmirror mirror</para></listitem>
<listitem><para><ulink url="mailto:ebf@aedsolucoes.com.br">Eduardo B.
Fonseca</ulink> &lt;ebf@aedsolucoes.com.br&gt; &ndash;
br.linuxfromscratch.org mirror</para></listitem>
</itemizedlist>
<bridgehead renderas="sect3">European Mirrors</bridgehead>
<itemizedlist>
<listitem><para><ulink url="mailto:barna@siker.hu">Barna
Koczka</ulink> &lt;barna@siker.hu&gt; &ndash; hu.linuxfromscratch.org
mirror</para></listitem>
<listitem><para><ulink url="http://www.mirror.ac.uk">UK Mirror
Service</ulink> &ndash; linuxfromscratch.mirror.ac.uk
mirror</para></listitem>
<listitem><para><ulink url="mailto:Martin.Voss@ada.de">Martin
Voss</ulink> &lt;Martin.Voss@ada.de&gt; &ndash; lfs.linux-matrix.net
mirror</para></listitem>
<listitem><para><ulink url="mailto:guido@primerelay.net">Guido
Passet</ulink> &lt;guido@primerelay.net&gt; &ndash; nl.linuxfromscratch.org
mirror</para></listitem>
<listitem><para><ulink url="mailto:baafie@planet.nl">Bastiaan
Jacques</ulink> &lt;baafie@planet.nl&gt; &ndash; lfs.pagefault.net
mirror</para></listitem>
<listitem><para><ulink
url="mailto:lfs-mirror@linuxfromscratch.rave.org">Roel Neefs</ulink>
&lt;lfs-mirror@linuxfromscratch.rave.org&gt; &ndash;
linuxfromscratch.rave.org mirror</para></listitem>
<listitem><para><ulink url="mailto:justin@jrknierim.de">Justin
Knierim</ulink> &lt;justin@jrknierim.de&gt; &ndash; www.lfs-matrix.de
mirror</para></listitem>
<listitem><para><ulink url="mailto:stevie@stevie20.de">Stephan
Brendel</ulink> &lt;stevie@stevie20.de&gt; &ndash; lfs.netservice-neuss.de
mirror</para></listitem>
<listitem><para><ulink
url="mailto:Antonin.Sprinzl@tuwien.ac.at">Antonin Sprinzl</ulink>
&lt;Antonin.Sprinzl@tuwien.ac.at&gt; &ndash; at.linuxfromscratch.org
mirror</para></listitem>
<listitem><para><ulink url="mailto:fredan-lfs@fredan.org">Fredrik
Danerklint</ulink> &lt;fredan-lfs@fredan.org&gt; &ndash;
se.linuxfromscratch.org mirror</para></listitem>
<listitem><para><ulink
url="mailto:archive@doc.cs.univ-paris8.fr">Parisian sysadmins</ulink>
&lt;archive@doc.cs.univ-paris8.fr&gt; &ndash; www2.fr.linuxfromscratch.org
mirror</para></listitem>
<listitem><para><ulink url="mailto:velin@zadnik.org">Alexander
Velin</ulink> &lt;velin@zadnik.org&gt; &ndash; bg.linuxfromscratch.org
mirror</para></listitem>
<listitem><para><ulink url="mailto:dirk@securewebservices.co.uk"> Dirk
Webster</ulink> &lt;dirk@securewebservices.co.uk&gt; &ndash;
lfs.securewebservices.co.uk mirror</para></listitem>
<listitem><para><ulink url="mailto:thomas@sofagang.dk">Thomas
Skyt</ulink> &lt;thomas@sofagang.dk&gt; &ndash; dk.linuxfromscratch.org
mirror</para></listitem>
<listitem><para><ulink url="mailto:sime@dot-sime.com">Simon
Nicoll</ulink> &lt;sime@dot-sime.com&gt; &ndash; uk.linuxfromscratch.org
mirror</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Asian Mirrors</bridgehead>
<itemizedlist>
<listitem><para><ulink url="mailto:pyng@spam.averse.net">Pui
Yong</ulink> &lt;pyng@spam.averse.net&gt; &ndash; sg.linuxfromscratch.org
mirror</para></listitem>
<listitem><para><ulink url="mailto:stuart@althalus.me.uk">Stuart
Harris</ulink> &lt;stuart@althalus.me.uk&gt; &ndash;
lfs.mirror.intermedia.com.sg mirror</para></listitem>
</itemizedlist>
<bridgehead renderas="sect3">Australian Mirrors</bridgehead>
<itemizedlist>
<listitem><para><ulink url="mailto:jason@dstc.edu.au">Jason
Andrade</ulink> &lt;jason@dstc.edu.au&gt; &ndash; au.linuxfromscratch.org
mirror</para></listitem>
</itemizedlist>
<bridgehead renderas="sect2">A very special thank you to our donators</bridgehead>
<itemizedlist>
<listitem><para><ulink url="mailto:dean@vipersoft.co.uk">Dean
Benson</ulink> &lt;dean@vipersoft.co.uk&gt; for several monetary
contributions</para></listitem>
<listitem><para><ulink url="mailto:hrx@hrxnet.de">Hagen
Herrschaft</ulink> &lt;hrx@hrxnet.de&gt; for donating a 2.2 GHz P4
system, now running under the name of Lorien</para></listitem>
<listitem><para><ulink url="http://www.vasoftware.com">VA
Software</ulink> who, on behalf of <ulink
url="http://www.linux.com">Linux.com</ulink>, donated a VA Linux 420
(former StartX SP2) workstation</para></listitem>
<listitem><para>Mark Stone for donating Belgarath, the
linuxfromscratch.org server</para></listitem>
</itemizedlist>
</appendix>

View File

@ -7,6 +7,86 @@
<title>Resources</title>
<?dbhtml filename="resources.html"?>
<para>See testing</para>
<sect2 id="ch-scatter-faq">
<title>FAQ</title>
<para>If during the building of the LFS system you encounter any
errors, have any questions, or think there is a typo in the book,
please start by consulting the Frequently Asked Questions (FAQ) at
<ulink url="&faq-root;"/>.</para>
</sect2>
<sect2 id="ch-scatter-maillists" xreflabel="Chapter 1 - Mailing Lists">
<title>Mailing Lists</title>
<para>The <uri>linuxfromscratch.org</uri> server hosts a number of
mailing lists used for the development of the LFS project. These lists
include the main development and support lists, among others.</para>
<para>For information on the different lists, how to subscribe, archive
locations, and additional information, visit
<ulink url="&lfs-root;mail.html"/>.</para>
</sect2>
<sect2 id="ch-scatter-irc">
<title>IRC</title>
<para>Several members of the LFS community offer assistance on our
community Internet Relay Chat (IRC) network. Before using this
support, please make sure that your question is not already answered in the LFS
FAQ or the mailing list archives. You can find the IRC network at
<uri>irc.linuxfromscratch.org</uri>, <uri>irc.linux-phreak.net</uri>
or <uri>irc.lfs-matrix.de</uri>.
The support channel is named #LFS-support.</para>
</sect2>
<sect2 id="ch-scatter-newsserver">
<title>News Server</title>
<para>The mailing lists hosted at <uri>linuxfromscratch.org</uri> are
also accessible via the Network News Transfer Protocol (NNTP) server.
All messages posted to a mailing list are copied to the corresponding
newsgroup, and vice versa.</para>
<para>The news server is located at
<uri>news.linuxfromscratch.org</uri>.</para>
</sect2>
<sect2 id="ch-scatter-wiki">
<title>Wiki</title>
<para>For more information on packages, updated versions, tweaks, and
personal experiences, see the LFS Wiki at <ulink url="&wiki-root;"/>.
Users can also add information there to help others with their future
LFS activities.</para>
</sect2>
<sect2 id="ch-scatter-references">
<title>References</title>
<para>For additional information on the packages, useful tips are
available at
<ulink
url="http://www.linuxfromscratch.org/~matthew/LFS-references.html"/>.</para>
</sect2>
<sect2 id="ch-scatter-mirrors" xreflabel="Chapter 1 - Mirror sites">
<title>Mirror Sites</title>
<para>The LFS project has a number of world-wide mirrors to make
accessing the website and downloading the required packages more
convenient. Please visit the LFS website at <ulink url="&lfs-root;"/>
for a list of current mirrors.</para>
</sect2>
<sect2 id="ch-scatter-contactinfo">
<title>Contact Information</title>
<para>Please direct all your questions and comments to one of the LFS mailing
lists (see above).</para>
</sect2>
</sect1>

View File

@ -7,6 +7,110 @@
<title>Help</title>
<?dbhtml filename="askforhelp.html"?>
<para>See testing</para>
<para>If an issue or a question is encountered while working
through this book, check the FAQ page at <ulink url="&faq-root;#generalfaq"/>.
Questions are often already answered there. If your question is
not answered on this page, try to find the source of the problem. The
following hint will give you some guidance for troubleshooting: <ulink
url="&hints-root;errors.txt"/>.</para>
<para>We also have a wonderful LFS community that is willing to offer
assistance through IRC and the mailing lists (see the <xref
linkend="ch-scatter-administrativa"/> section of this book). In order
to assist with diagnosing and solving the problem, please include
all relevant information in your request for help.</para>
<sect2>
<title>Things to Mention</title>
<para>Apart from a brief explanation of the problem being experienced,
the essential things to include in any request for help are:</para>
<itemizedlist>
<listitem><para>The version of the book being used (in this case
&version;)</para></listitem>
<listitem><para>The host distribution and version being used to
create LFS</para></listitem>
<listitem><para>The package or section the problem was encountered in</para></listitem>
<listitem><para>The exact error message or symptom being received</para></listitem>
<listitem><para>Note whether you have deviated from the book at all </para></listitem>
</itemizedlist>
<note><para>Deviating from this book does <emphasis>not</emphasis>
mean that we will not help you. After all, LFS is about personal
preference. Being upfront about any changes to the established
procedure helps us evaluate and determine possible causes of your
problem.</para></note>
</sect2>
<sect2>
<title>Configure Problems</title>
<para>If something goes wrong during the stage where the configure
script is run, review the <filename>config.log</filename> file. This
file may contain errors encountered during configure which were not
printed to the screen. Include those relevant lines if you need to ask
for help.</para>
</sect2>
<sect2>
<title>Compile Problems</title>
<para>Both the screen output and the contents of various files are
useful in determining the cause of compile issues. The screen output
from the <command>./configure</command> script and the
<command>make</command> run can be helpful. It
is not necessary to include the entire output, but do include enough
of the relevant information. Below is an example of the type of
information to include from the screen output from <command>make</command>:</para>
<screen><computeroutput>gcc -DALIASPATH=\"/mnt/lfs/usr/share/locale:.\"
-DLOCALEDIR=\"/mnt/lfs/usr/share/locale\"
-DLIBDIR=\"/mnt/lfs/usr/lib\"
-DINCLUDEDIR=\"/mnt/lfs/usr/include\" -DHAVE_CONFIG_H -I. -I.
-g -O2 -c getopt1.c
gcc -g -O2 -static -o make ar.o arscan.o commands.o dir.o
expand.o file.o function.o getopt.o implicit.o job.o main.o
misc.o read.o remake.o rule.o signame.o variable.o vpath.o
default.o remote-stub.o version.o opt1.o
-lutil job.o: In function `load_too_high':
/lfs/tmp/make-3.79.1/job.c:1565: undefined reference
to `getloadavg'
collect2: ld returned 1 exit status
make[2]: *** [make] Error 1
make[2]: Leaving directory `/lfs/tmp/make-3.79.1'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/lfs/tmp/make-3.79.1'
make: *** [all-recursive-am] Error 2</computeroutput></screen>
<para>In this case, many people would just include the bottom
section:</para>
<screen><computeroutput>make [2]: *** [make] Error 1</computeroutput></screen>
<para>This is not enough information to properly diagnose the problem
because it only notes that something went wrong, not
<emphasis>what</emphasis> went wrong. The entire section, as in the
example above, is what should be saved because it includes the command
that was executed and the associated error message(s).</para>
<para>An excellent article about asking for help on the Internet is
available online at <ulink
url="http://catb.org/~esr/faqs/smart-questions.html"/>. Read and
follow the hints in this document to increase the likelihood of getting
the help you need.</para>
</sect2>
<sect2>
<title>Test Suite Problems</title>
<para>Many packages provide a test suite which, depending on the
importance of the package, should be run. Sometimes packages will
generate false or expected failures. If these errors are encountered,
check the LFS Wiki page at <ulink url="&wiki-root;"/> to see if we have
noted and investigated these issues. If these issues are noted and
addressed, there is no need to be concerned.</para>
</sect2>
</sect1>

View File

@ -7,7 +7,60 @@
<title>About the Included CD</title>
<?dbhtml filename="bootcd.html"?>
<para>See testing</para>
<para>For your convenience, we have included a CD with this book that
contains the source packages needed for creating a Linux From Scratch
system. The CD is bootable and provides a stable working environment
for building LFS. This book refers to this system as the
<quote>host system.</quote> The CD images are actively maintained and
updated versions can be found at
<ulink url="ftp://ftp.lfs-matrix.net/pub/lfs-livecd/"/></para>
<para>In addition to the tools required to build LFS, the host system
on the CD has a number of other helpful tools installed:</para>
<itemizedlist>
<listitem><para>An HTML version of this book</para></listitem>
<listitem><para>The X Window System Environment</para></listitem>
<listitem>
<para>Web Tools</para>
<itemizedlist>
<listitem><para>Wget (command line file retriever)</para></listitem>
<listitem><para>Lynx (text web browser)</para></listitem>
<listitem><para>Irssi (console IRC client)</para></listitem>
<listitem><para>Firefox (graphical web browser)</para></listitem>
<listitem><para>Xchat (X-based IRC client)</para></listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Text Editors</para>
<itemizedlist>
<listitem><para>Vim</para></listitem>
<listitem><para>Nano</para></listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Network Tools</para>
<itemizedlist>
<listitem><para>SSH Server and Client</para></listitem>
<listitem><para>NFS Server and Client</para></listitem>
<listitem><para>Smbmount (mount.cifs) for Windows shares</para></listitem>
<listitem><para>Subversion</para></listitem>
<listitem><para>Dhcpcd (DHCP client)</para></listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Filesystem Programs</para>
<itemizedlist>
<listitem><para>Reiserfsprogs</para></listitem>
<listitem><para>Xfsprogs</para></listitem>
</itemizedlist>
</listitem>
<listitem><para>nALFS - A tool for automating LFS builds</para></listitem>
</itemizedlist>
</sect1>

View File

@ -3,7 +3,7 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-scatter-changelog" condition="no-print">
<sect1 id="ch-scatter-changelog" condition="html">
<title>Changelog</title>
<?dbhtml filename="changelog.html"?>
@ -12,141 +12,188 @@
version is probably already available. To find out, please check one of the
mirrors via <ulink url="&lfs-root;"/>.</para>
<para>Below is a list of differences between the Testing and Unstable versions
of the LFS Book.</para>
<para>Below is a list of changes made since the previous release of the book,
first a summary, then a detailed log.</para>
<itemizedlist>
<listitem><para>Upgraded to:</para>
<itemizedlist>
<listitem><para>automake-1.9.5</para></listitem>
<listitem><para>e2fsprogs-1.36</para></listitem>
<listitem><para>expect-5.43.0</para></listitem>
<listitem><para>file-4.13</para></listitem>
<listitem><para>findutils-4.2.17</para></listitem>
<listitem><para>glibc-2.3.4</para></listitem>
<listitem><para>grub-0.96</para></listitem>
<listitem><para>lfs-bootscripts-3.1.0</para></listitem>
<listitem><para>libol-0.3.15</para></listitem>
<listitem><para>libtool-1.5.14</para></listitem>
<listitem><para>linux-libc-headers-2.6.10.0</para></listitem>
<listitem><para>procps-3.2.5</para></listitem>
<listitem><para>sed-4.1.4</para></listitem>
<listitem><para>shadow-4.0.7</para></listitem>
<listitem><para>syslog-ng-1.6.6</para></listitem>
<listitem><para>util-linux-2.12q</para></listitem>
<listitem><para>Automake 1.9.5</para></listitem>
<listitem><para>Binutils 2.15.94.0.2</para></listitem>
<listitem><para>Bison 2.0</para></listitem>
<listitem><para>E2fsprogs 1.36</para></listitem>
<listitem><para>Expect 5.43.0</para></listitem>
<listitem><para>File 4.13</para></listitem>
<listitem><para>Findutils 4.2.17</para></listitem>
<listitem><para>GCC 3.4.3</para></listitem>
<listitem><para>Glibc 20041011</para></listitem>
<listitem><para>Grep 2.5.1a</para></listitem>
<listitem><para>Grub 0.96</para></listitem>
<listitem><para>Iana-Etc 1.03</para></listitem>
<listitem><para>Iproute2 2.6.9-041019</para></listitem>
<listitem><para>LFS-Bootscripts 3.1.0</para></listitem>
<listitem><para>Libtool 1.5.14</para></listitem>
<listitem><para>Linux 2.6.10</para></listitem>
<listitem><para>Linux-libc-headers 2.6.10.0</para></listitem>
<listitem><para>Man 1.5p</para></listitem>
<listitem><para>Man-pages 2.01</para></listitem>
<listitem><para>Module-init-tools 3.1</para></listitem>
<listitem><para>Perl 5.8.6</para></listitem>
<listitem><para>Procps 3.2.5</para></listitem>
<listitem><para>Sed 4.1.4</para></listitem>
<listitem><para>Shadow 4.0.7</para></listitem>
<listitem><para>Sysvinit 2.86</para></listitem>
<listitem><para>Tar 1.15.1</para></listitem>
<listitem><para>Texinfo 4.8</para></listitem>
<listitem><para>Tcl 8.4.9</para></listitem>
<listitem><para>Udev 050</para></listitem>
<listitem><para>Util-linux 2.12q</para></listitem>
<listitem><para>Zlib 1.2.2</para></listitem>
</itemizedlist>
</listitem>
<listitem><para>Added:</para>
<itemizedlist>
<listitem><para>bash-3.0-fixes-3.patch</para></listitem>
<listitem><para>bash-3.0-fixes-1.patch</para></listitem>
<listitem><para>bash-3.0-avoid_WCONTINUED-1.patch</para></listitem>
<listitem><para>Hotplug 2004_09_23</para></listitem>
<listitem><para>iproute2-2.6.9_041019-find_update-1.patch</para></listitem>
<listitem><para>Libol 0.3.15</para></listitem>
<listitem><para>linux-2.6.10-security_fix-1.patch</para></listitem>
<listitem><para>Syslog-ng 1.6.6</para></listitem>
<listitem><para>util-linux-2.12p-cramfs-1.patch</para></listitem>
<listitem><para>vim-6.0-security_fix-1.patch</para></listitem>
</itemizedlist>
</listitem>
<listitem><para>Removed:</para>
<itemizedlist>
<listitem><para>bash-3.0-fixes-1.patch</para></listitem>
<listitem><para>bash-3.0-display_wrap-1.patch</para></listitem>
<listitem><para>man-1.5o1-80cols-1.patch</para></listitem>
<listitem><para>Sysklogd 1.4.1</para></listitem>
<listitem><para>sysvinit-2.85-proclen-1.patch</para></listitem>
<listitem><para>texinfo-4.7-segfault-1.patch</para></listitem>
<listitem><para>util-linux-2.12b-sfdisk-1.patch</para></listitem>
<listitem><para>zlib-1.2.1-security-1.patch</para></listitem>
</itemizedlist>
</listitem>
<listitem><para>February 13, 2005 [matt]: Add a link to BLFS' index of
packages requiring kernel configuration. Fixes bug 1028.</para></listitem>
<listitem><para>February 13, 2005 [matt]: Fix bug 1030 by moving the <quote>Get
Counted</quote> section to after the user has rebooted for the first time.
Fixes bug 1030.</para></listitem>
<listitem><para>February 13, 2005 [matt]: Upgraded to glibc-2.3.4</para>
</listitem>
<listitem><para>February 13, 2005 [matt]: Upgraded to grub-0.96</para>
</listitem>
<listitem><para>February 13, 2005 [matt]: Upgraded to e2fsprogs-1.36</para>
</listitem>
<listitem><para>February 13, 2005 [matt]: Upgraded to findutils-4.2.17</para>
</listitem>
<listitem><para>February 13, 2005 [matt]: Upgraded to expect-5.43.0</para>
</listitem>
<listitem><para>February 13, 2005 [matt]: Upgraded to libtool-1.5.14</para>
</listitem>
<listitem><para>February 13, 2005 [matt]: Upgraded to automake-1.9.5</para>
</listitem>
<listitem><para>February 13, 2005 [matt]: Upgraded to file-4.13</para>
</listitem>
<listitem><para>February 5, 2005 [matt]: Added a space to the toolchain
readjustment <command>perl</command> command. This stops the specs file being
incorrectly modified if the command is run more than once. Fixes bug 1023.
</para></listitem>
<listitem><para>February 19, 2005 [gerard]: Synchronized Testing
branch with current Unstable/Trunk. Move Testing branch to Trunk and
discontinue Testing branch as per lfs-dev discussion on branch
changes.</para></listitem>
<listitem><para>February 5, 2005 [matt]: Copy hotplug's pnp.distmap file to
silence its warnings</para></listitem>
silence its warnings. Also tidy up some explanatory text</para></listitem>
<listitem><para>February 5, 2005 [matt]: Upgraded to syslog-ng-1.6.6</para>
<listitem><para>January 29, 2005 [matt]: Upgraded to sed-4.1.4</para></listitem>
<listitem><para>January 29, 2005 [matt]: Upgraded to procps-3.2.5</para>
</listitem>
<listitem><para>February 5, 2005 [matt]: Upgraded to libol-0.3.15</para>
<listitem><para>January 29, 2005 [matt]: Upgraded to shadow-4.0.7</para>
</listitem>
<listitem><para>January 29th, 2005 [matt]: Upgraded to findutils 4.2.15</para>
<listitem><para>January 29, 2005 [matt]: Upgraded to util-linux-2.12q.</para>
</listitem>
<listitem><para>January 28th, 2005 [matt]: Upgraded to sed-4.1.4</para>
</listitem>
<listitem><para>January 27, 2005 [matt]: Added a warning that the
<filename class="symlink">/usr/src/linux</filename> symlink shouldn't be
created. Fixes bug 1012.</para></listitem>
<listitem><para>January 27th, 2005 [matt]: Upgraded to findutils 4.2.14</para>
</listitem>
<listitem><para>January 27, 2005 [matt]: Added link to the live-cd FTP
location. Fixes bug 1014.</para></listitem>
<listitem><para>January 27th, 2005 [matt]: Upgraded to sed-4.1.3</para>
</listitem>
<listitem><para>January 27, 2005 [matt]: Added bison, flex and m4 to binutils
dependency list. Fixes Bug 1018.</para></listitem>
<listitem><para>January 27th, 2005 [matt]: Upgraded to procps-3.2.5</para>
</listitem>
<listitem><para>January 27, 2005 [manuel]: Updated to gcc-3.4.3-specs-2.patch.</para></listitem>
<listitem><para>January 27th, 2005 [matt]: Upgraded to shadow-4.0.7</para>
</listitem>
<listitem><para>January 19, 2005 [jeremy]: Added an extra symlink for
libgcc_s.so to chapter 6 - this never migrated from unstable until now.</para></listitem>
<listitem><para>January 27th, 2005 [matt]: Upgraded to util-linux-2.12q</para>
</listitem>
<listitem><para>January 9, 2005 [matt]: Added a security patch for the kernel</para></listitem>
<listitem><para>January 9th, 2005 [jeremy]: Removed --enable-shared from libol,
since the shared library is installed by default for this package - thanks
Archaic</para></listitem>
<listitem><para>January 9, 2005 [matt]: Added a security patch for vim</para></listitem>
<listitem><para>January 5th, 2005 [jeremy]: Upgraded to findutils 4.2.11</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to man-1.5p</para></listitem>
<listitem><para>December 31st, 2004 [jeremy]: Oops - forgot to remove the
separate targets for hotplug and syslog-ng - fixed.</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to texinfo-4.8</para></listitem>
<listitem><para>December 31st, 2004 [jeremy]: Upgrade to LFS-Bootscripts 3.1.0</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to util-linux-2.12p</para></listitem>
<listitem><para>December 30th, 2004 [jeremy]: Added Archaic's sed to stop
installation of shadow's groups binary, as well as it's man page.</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to udev-050</para></listitem>
<listitem><para>December 25th, 2004 [jeremy]: Upgrade to glibc snapshot
of 20041220</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to tcl-8.4.9</para></listitem>
<listitem><para>December 19th, 2004 [jeremy]: Updated GCC-testresults link to
be appropriate for GCC 3.4.3</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to tar-1.15.1</para></listitem>
<listitem><para>December 6th, 2004 [jim]: Fixes a few typo's done by me.
Added a patch for IPRoute2 to fix usage with the newer findutils.
Updated Readline and Zlib library location changes.
Bumped findutils to 4.2.9 and util-linux 2.12j.
Used the same methodology used on zlib and readline on shadow.</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to perl-5.8.6</para></listitem>
<listitem><para>December 3rd, 2004 [jim]: Changed readline and zlib instructions
to use --libdir for the libraries. Bumped perl to 5.8.6. Corrected wording in
readline.</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to man-pages-2.01</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to linux-libc-headers-2.6.10.0</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to linux-2.6.10</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to gcc-3.4.3</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to bison-2.0</para></listitem>
<listitem><para>January 9, 2005 [matt]: Upgraded to autoconf-1.9.4</para></listitem>
<listitem><para>January 5, 2005 [jeremy]: Minor textual correction in network
configuration, since iproute will not recognize the old eth0:1 format for
ip aliasing. Closes bug 1013.</para></listitem>
<listitem><para>January 5, 2005 [jeremy]: Added the --disable-selinux parameter
to Ch 5 glibc. Allows building from hosts which use SELinux functionality,
like Fedora Core 3</para></listitem>
<listitem><para>December 25, 2004 [jeremy]: Added text suggested by MSB,
closing Bug 943</para></listitem>
<listitem><para>December 25, 2004 [jeremy]: Upgraded binutils to 2.14.94.0.2 -
should fix the TLS strip issue that's been seen, at least on X86</para></listitem>
<listitem><para>December 22, 2004 [manuel]: Readded to chapter09/reboot.xml a para lost
from version 5.1.</para></listitem>
<listitem><para>December 20, 2004 [manuel]: Made Grub's configuration location
FHS compliant.</para></listitem>
<listitem><para>December 19, 2004 [manuel]: Added the irc.lfs-matrix.de IRC server.</para></listitem>
<listitem><para>December 5, 2004 [jeremy]: Added the DOCBOOKTOMAN parameter
to Module-init-utils - without this, compilation fails. Thanks Boris Buegling</para></listitem>
<listitem><para>December 2, 2004 [jeremy]: Removed the old display_wrap bash
patch, in favor of the newer fixes patch, and added the avoid_WCONTINUED
patch as well</para></listitem>
<listitem><para>December 2, 2004 [jeremy]: Upgraded to TCL 8.4.8, Grep 2.5.1a
Util-linux 2.12i, Iana-etc 1.03, File 4.12, Module-init-tools 3.1, Procps 3.2.4
</para></listitem>
<listitem><para>December 2, 2004 [jeremy]: Migrated change from unstable to
build Glibc against sanitized linux-libc-headers instead of raw kernel headers,
bringing us more in line with what the kernel developers think should be
happening.</para></listitem>
<listitem><para>December 1, 2004 [jeremy]: Dropped Udev from being built in
Chapter 5, in favor of creating a minimal set of devices at the beginning
of Chapter 6. All devices are created after the installation of Udev near
the end of Chapter 6</para></listitem>
<listitem><para>December 1, 2004 [jeremy]: Upgraded to Automake 1.9.3,
Binutils 2.15.92.0.2, Findutils 4.2.3, GCC 3.4.2, Glibc 20041011, Iana-Etc 1.02
Iproute2 2.6.9-041019, LFS-Bootscripts 2.2.3, Libtool 1.5.10, Linux 2.6.9
Linux-libc-headers 2.6.9.1, Man 1.5o1, Man-pages 1.70, Shadow 4.0.6,
Udev 046, Zlib 1.2.2, Hotplug 2004_09_23, Libol 0.3.14, Syslog-ng 1.6.5</para></listitem>
</itemizedlist>
<para>Branch frozen for LFS 6.0 as of October 10, 2004</para>
</sect1>

View File

@ -7,6 +7,78 @@
<title>How to Build an LFS System</title>
<?dbhtml filename="how.html"?>
<para>See testing</para>
<para>The LFS system will be built by using a previously installed
Linux distribution (such as Debian, Mandrake, Red Hat, or SuSE). This
existing Linux system (the host) will be used as a starting point to
provide necessary programs, including a compiler, linker, and shell,
to build the new system. Select the <quote>development</quote> option
during the distribution installation to be able to access these
tools.</para>
<para><xref linkend="chapter-partitioning"/> of this book describes how
to create a new Linux native partition and file system, the place
where the new LFS system will be compiled and installed. <xref
linkend="chapter-getting-materials"/> explains which packages and
patches need to be downloaded to build an LFS system and how to store
them on the new file system. <xref linkend="chapter-final-preps"/>
discusses the setup for an appropriate work environment. Please read
<xref linkend="chapter-final-preps"/> carefully as it explains several
important issues the developer should be aware of before beginning to
work through <xref linkend="chapter-temporary-tools"/> and
beyond.</para>
<para><xref linkend="chapter-temporary-tools"/> explains the
installation of a number of packages that will form the basic
development suite (or toolchain) which is used to build the actual
system in <xref linkend="chapter-building-system"/>. Some of these
packages are needed to resolve circular dependencies&mdash;for example,
to compile a compiler, you need a compiler.</para>
<para><xref linkend="chapter-temporary-tools"/> also shows the user how
to build a first pass of the toolchain, including Binutils and GCC
(first pass basically means these two core packages will be
re-installed a second time). The programs from these packages will be
linked statically in order to be used independently of the host
system. The next step is to build Glibc, the C library. Glibc will be
compiled by the toolchain programs built in the first pass. Then, a
second pass of the toolchain will be built. This time, the toolchain
will be dynamically linked against the newly built Glibc. The
remaining <xref linkend="chapter-temporary-tools"/> packages are built
using this second pass toolchain. When this is done, the LFS
installation process will no longer depend on the host distribution,
with the exception of the running kernel.</para>
<para>While this may initially seem like a lot of work to get away
from a host distribution, a full technical explanation is provided at
the beginning of <xref linkend="chapter-temporary-tools"/>,
including notes on the differences between
statically and dynamically-linked programs.</para>
<para>In <xref linkend="chapter-building-system"/>, the full LFS system is
built. The chroot (change root) program is used to enter a virtual
environment and start a new shell whose root directory will be set to
the LFS partition. This is very similar to rebooting and instructing
the kernel to mount the LFS partition as the root partition. The
system does not actually reboot, but instead chroots because creating a
bootable system requires additional work which is not necessary just
yet. The major advantage is that <quote>chrooting</quote> allows the
builder to continue using the host while LFS is being built. While
waiting for package compilation to complete, a user can switch to a
different virtual console (VC) or X desktop and continue using the
computer as normal.</para>
<para>To finish the installation, the bootscripts are set up in <xref
linkend="chapter-bootscripts"/>, and the kernel and boot loader are set
up in <xref linkend="chapter-bootable"/>. <xref
linkend="chapter-finalizing"/> contains information on furthering the
LFS experience beyond this book. After the steps in this book have
been implemented, the computer will be ready to reboot into the new
LFS system.</para>
<para>This is the process in a nutshell. Detailed information on each
step is discussed in the following chapters and package descriptions.
Items that may seem complicated will be clarified, and everything will
fall into place as the developer embarks on the LFS adventure.</para>
</sect1>

View File

@ -7,6 +7,30 @@
<title>Creating a File System on the Partition</title>
<?dbhtml filename="creatingfilesystem.html"?>
<para>See testing</para>
<para>Now that a blank partition has been set up, the file system can
be created. The most widely-used system in the Linux world is the
second extended file system (ext2), but with the newer high-capacity
hard disks, the journaling file systems are becoming increasingly
popular. Here we will create an ext2 file system, but build
instructions for other file systems can be found at <ulink
url="&blfs-root;view/svn/postlfs/filesystems.html"/>.</para>
<para>To create an ext2 file system on the LFS partition, run the following:</para>
<screen><userinput>mke2fs /dev/<replaceable>[xxx]</replaceable></userinput></screen>
<para>Replace <replaceable>[xxx]</replaceable> with the name of the LFS
partition (<filename class="devicefile">hda5</filename> in our previous example).</para>
<para>If a swap partition was created, it will need to be initialized
as a swap partition too (also known as formatting, as described above
with <command>mke2fs</command>) by running the following. If you are using an existing
swap partition, there is no need to format it.</para>
<screen><userinput>mkswap /dev/<replaceable>[yyy]</replaceable></userinput></screen>
<para>Replace <replaceable>[yyy]</replaceable> with the name of the swap
partition.</para>
</sect1>

View File

@ -7,6 +7,51 @@
<title>Creating a New Partition</title>
<?dbhtml filename="creatingpartition.html"?>
<para>See testing</para>
<!--Edit Me-->
<para>Like most other operating systems, LFS is usually installed on
a dedicated partition. If you have an empty partition or enough
unpartitioned space on one of your hard disks to make one, using this
for your LFS installation is recommended. However, an LFS system (in
fact even multiple LFS systems) may also be installed on a partition
already occupied by another operating system and the different systems
will co-exist peacefully. The document
<ulink url="&hints-root;/lfs_next_to_existing_systems.txt"/> explains
how to implement this, whereas this book discusses the method of
using a fresh partition for the installation.</para>
<!--End Edit Me-->
<para>A minimal system requires a partition of around 1.3 gigabytes
(GB). This is enough to store all the source tarballs and compile
the packages. However, if the LFS system is intended to be the primary
Linux system, additional software will probably be installed which
will require additional space (2 or 3 GB). The LFS system itself will
not take up this much space. A large portion of this required amount
of space is to provide sufficient free temporary space. Compiling
packages can require a lot of disk space which will be reclaimed after
the package is installed.</para>
<para>Because there is not always enough Random Access Memory (RAM)
available for compilation processes, it is a good idea to use a small
disk partition as swap space. This space is used by the kernel to
store seldom-used data to make room in memory for active processes.
The swap partition for an LFS system can be the same as the one used
by the host system, so another swap partition will not need to be
created if your host system already has one setup.</para>
<para>Start a disk partitioning program such as
<command>cfdisk</command> or <command>fdisk</command> with a command
line option naming the hard disk on which the new partition will be
created&mdash;for example <filename class="devicefile">/dev/hda</filename> for
the primary Integrated Drive Electronics (IDE) disk. Create a Linux native
partition and a swap partition, if needed. Please refer to the man
pages of <command>cfdisk</command> or <command>fdisk</command> if you
do not yet know how to use the programs.</para>
<para>Remember the designation of the new partition (e.g.,
<filename class="devicefile">hda5</filename>). This book will refer to this as the LFS
partition. Also remember the designation of the swap partition. These
names will be needed later for the <filename>/etc/fstab</filename>
file.</para>
</sect1>

View File

@ -7,6 +7,9 @@
<title>Introduction</title>
<?dbhtml filename="introduction.html"?>
<para>See testing</para>
<para>In this chapter, the partition which will host the LFS system is
prepared. We will create the partition itself, create a file system
on it, and mount it.</para>
</sect1>

View File

@ -7,6 +7,50 @@
<title>Mounting the New Partition</title>
<?dbhtml filename="mounting.html"?>
<para>See testing</para>
<para>Now that a file system has been created, the partition needs to
be made accessible. In order to do this, the partition needs to be
mounted at a chosen mount point. For the purposes of this book, it is
assumed that the file system is mounted under <filename
class="directory">/mnt/lfs</filename>, but the directory choice is up
to you.</para>
<para>Choose a mount point and assign it to the <envar>LFS</envar>
environment variable by running:</para>
<screen><userinput>export LFS=/mnt/lfs</userinput></screen>
<para>Next, create the mount point and mount the LFS file system by
running:</para>
<screen><userinput>mkdir -p $LFS
mount /dev/<replaceable>[xxx]</replaceable> $LFS</userinput></screen>
<para>Replace <replaceable>[xxx]</replaceable> with the designation of the LFS
partition.</para>
<para>If using multiple partitions for LFS (e.g., one for <filename
class="directory">/</filename> and another for <filename
class="directory">/usr</filename>), mount them using:</para>
<screen><userinput>mkdir -p $LFS
mount /dev/<replaceable>[xxx]</replaceable> $LFS
mkdir $LFS/usr
mount /dev/<replaceable>[yyy]</replaceable> $LFS/usr</userinput></screen>
<para>Replace <replaceable>[xxx]</replaceable> and
<replaceable>[yyy]</replaceable> with the appropriate partition
names.</para>
<para>Ensure that this new partition is not mounted with permissions
that are too restrictive (such as the nosuid, nodev, or noatime
options). Run the <command>mount</command> command without any
parameters to see what options are set for the mounted LFS
partition. If <parameter>nosuid</parameter>, <parameter>nodev</parameter>,
and/or <parameter>noatime</parameter> are set, the partition will need
to be remounted.</para>
<para>Now that there is an established place to work, it is time to
download the packages.</para>
</sect1>

View File

@ -7,12 +7,48 @@
<title>Introduction</title>
<?dbhtml filename="introduction.html"?>
<para>Create a dir for the sources:</para>
<para>This chapter includes a list of packages that need to be
downloaded for building a basic Linux system. The listed version numbers
correspond to versions of the software that are known to work, and
this book is based on their use. We highly recommend not using newer
versions because the build commands for one version may not work with
a newer version. The newest package versions may also have problems
that work-arounds have not been developed for yet.</para>
<para>All the URLs, when possible, refer to the package's information
page at <ulink url="http://www.freshmeat.net/"/>. The Freshmeat pages
provide easy access to official download sites, as well as project
websites, mailing lists, FAQ, changelogs, and more.</para>
<para>Download locations may not always be accessible. If a download
location has changed since this book was published, Google (<ulink
url="http://www.google.com"/>) provides a useful search engine for
most packages. If this search is unsuccessful, try one of the
alternate means of downloading discussed at <ulink
url="&lfs-root;lfs/packages.html"/>.</para>
<para>Downloaded packages and patches will need to be stored somewhere
that is conveniently available throughout the entire build. A working
directory is also required to unpack the sources and build them.
<filename class="directory">$LFS/sources</filename> can be used both
as the place to store the tarballs and patches and as a working
directory. By using this directory, the required elements will be
located on the LFS partition and will be available during all stages
of the building process.</para>
<para>To create this directory, execute, as user
<emphasis>root</emphasis>, the following command before starting the
download session:</para>
<screen><userinput>mkdir $LFS/sources</userinput></screen>
<para>Set the permissions of that dir:</para>
<para>Make this directory writable and sticky. <quote>Sticky</quote>
means that even if multiple users have write permission on a
directory, only the owner of a file can delete the file within a
sticky directory. The following command will enable the write and
sticky modes:</para>
<screen><userinput>chmod a+wt $LFS/sources</userinput></screen>
</sect1>

View File

@ -10,131 +10,136 @@
<para>Download or otherwise obtain the following packages:</para>
<variablelist role="materials">
<bridgehead renderas="sect3">Packages</bridgehead>
<varlistentry>
<term>Autoconf (&autoconf-version;) - 903 KB:</term>
<term>Autoconf (&autoconf-version;) - 903 kilobytes (KB):</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/autoconf/"/></para>
<para><ulink url="&freshmeat;autoconf/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Automake (&automake-version;) - 740 KB:</term>
<term>Automake (&automake-version;) - 681 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/automake/"/></para>
<para><ulink url="&freshmeat;automake/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bash (&bash-version;) - 1,910 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/bash/"/></para>
<para><ulink url="&freshmeat;gnubash/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Binutils (&binutils-version;) - 10,666 KB:</term>
<listitem>
<para><ulink url="http://www.kernel.org/pub/linux/devel/binutils/"/></para>
<para><ulink url="&freshmeat;binutils/?branch_id=12688"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bison (&bison-version;) - 796 KB:</term>
<listitem>
<para><ulink url="ftp://alpha.gnu.org/gnu/bison/"/></para>
<para><ulink url="ftp://ftp.linuxfromscratch.org/pub/lfs/lfs-packages/conglomeration/bison/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bzip2 (&bzip2-version;) - 650 KB:</term>
<listitem>
<para><ulink url="ftp://sources.redhat.com/pub/bzip2/v102/"/></para>
<para><ulink url="&freshmeat;bzip2/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Coreutils (&coreutils-version;) - 3,860 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/coreutils/"/></para>
<para><ulink url="&freshmeat;coreutils/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>DejaGNU (&dejagnu-version;) - 1,055 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/dejagnu/"/></para>
<para><ulink url="&freshmeat;dejagnu/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Diffutils (&diffutils-version;) - 762 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/diffutils/"/></para>
<para><ulink url="&freshmeat;diffutils/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>E2fsprogs (&e2fsprogs-version;) - 3,188 KB:</term>
<term>E2fsprogs (&e2fsprogs-version;) - 3,003 KB:</term>
<listitem>
<para><ulink url="http://prdownloads.sourceforge.net/e2fsprogs/"/></para>
<para><ulink url="&freshmeat;e2fsprogs/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Expect (&expect-version;) - 513 KB:</term>
<term>Expect (&expect-version;) - 510 KB:</term>
<listitem>
<para><ulink url="http://expect.nist.gov/src/"/></para>
<para><ulink url="&freshmeat;expect/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>File (&file-version;) - 411 KB:</term>
<term>File (&file-version;) - 356 KB:</term>
<listitem>
<para><ulink url="ftp://ftp.gw.com/mirrors/pub/unix/file/"/></para>
<para><ulink url="&freshmeat;file/"/></para>
<note><para>File (&file-version;) may no longer be available at the
listed location. The site administrators of the master download
location occasionally remove older versions when new ones are
released. An alternate download location that may have the correct
version available is <ulink
url="ftp://ftp.linuxfromscratch.org/pub/lfs/"/>.</para></note>
</listitem>
</varlistentry>
<varlistentry>
<term>Findutils (&findutils-version;) - 914 KB:</term>
<term>Findutils (&findutils-version;) - 760 KB:</term>
<listitem>
<para><ulink url="ftp://alpha.gnu.org/gnu/findutils/"/></para>
<para><ulink url="&freshmeat;findutils/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Flex (&flex-version;) - 372 KB:</term>
<listitem>
<para><ulink url="http://sourceforge.net/projects/lex/"/></para>
<para><ulink url="&freshmeat;flex/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Gawk (&gawk-version;) - 1,596 KB:</term>
<term>Gawk (&gawk-version;) - 1,692 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/gawk/"/></para>
<para><ulink url="&freshmeat;gnuawk/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>GCC (&gcc-version;) - ~27,000KB:</term>
<term>GCC (&gcc-version;) - 27,000 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/gcc/gcc-&gcc-version;/"/></para>
<para><ulink url="&freshmeat;gcc/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Gettext (&gettext-version;) - 6,397 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/gettext/"/></para>
<para><ulink url="&freshmeat;gettext/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Glibc (&glibc-version;) - 12,904 KB: </term>
<term>Glibc (&glibc-version;) - 13,101 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/glibc/"/></para>
<para><ulink url="ftp://sources.redhat.com/pub/glibc/snapshots/"/></para>
</listitem>
</varlistentry>
@ -148,19 +153,19 @@
<varlistentry>
<term>Grep (&grep-version;) - 545 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/grep/"/></para>
<para><ulink url="&freshmeat;grep/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Groff (&groff-version;) - 2,360 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/groff/"/></para>
<para><ulink url="&freshmeat;groff/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Grub (&grub-version;) - 963 KB:</term>
<term>Grub (&grub-version;) - 902 KB:</term>
<listitem>
<para><ulink url="ftp://alpha.gnu.org/pub/gnu/grub/"/></para>
</listitem>
@ -183,19 +188,19 @@
<varlistentry>
<term>Iana-Etc (&iana-etc-version;) - 161 KB:</term>
<listitem>
<para><ulink url="http://www.sethwklein.net/projects/iana-etc/"/></para>
<para><ulink url="&freshmeat;iana-etc/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Inetutils (&inetutils-version;) - 1,019 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/inetutils/"/></para>
<para><ulink url="&freshmeat;inetutils/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>IPRoute2 (&iproute2-version;) - 230 KB:</term>
<term>IPRoute2 (&iproute2-version;) - 264 KB:</term>
<listitem>
<para><ulink url="http://developer.osdl.org/dev/iproute2/download/"/></para>
</listitem>
@ -204,84 +209,84 @@
<varlistentry>
<term>Kbd (&kbd-version;) - 617 KB:</term>
<listitem>
<para><ulink url="http://ftp.kernel.org/pub/linux/utils/kbd/"/></para>
<para><ulink url="&freshmeat;kbd/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Less (&less-version;) - 259 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/less/"/></para>
<para><ulink url="&freshmeat;less/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>LFS-Bootscripts (&lfs-bootscripts-version;) - 14 KB:</term>
<term>LFS-Bootscripts (&lfs-bootscripts-version;) - 16 KB:</term>
<listitem>
<para><ulink url="http://downloads.linuxfromscratch.org/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Libol (&libol-version;) - 337 KB:</term>
<varlistentry>
<term>Libol (&libol-version;) - 336 KB:</term>
<listitem>
<para><ulink url="http://www.balabit.com/downloads/syslog-ng/libol/0.3/"/></para>
<para><ulink url="http://www.balabit.com/downloads/syslog-ng/libol/0.3"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Libtool (&libtool-version;) - 2,668 KB:</term>
<term>Libtool (&libtool-version;) - 2,602 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/libtool/"/></para>
<para><ulink url="&freshmeat;libtool/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Linux (&linux-version;) - 30,051 KB:</term>
<term>Linux (&linux-version;) - 34,793 KB:</term>
<listitem>
<para><ulink url="http://www.kernel.org/pub/linux/kernel/v2.6"/></para>
<para><ulink url="&freshmeat;linux/?branch_id=46339"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Linux-Libc-Headers (&linux-libc-headers-version;) - 2,460 KB:</term>
<term>Linux-Libc-Headers (&linux-libc-headers-version;) - 2,602 KB:</term>
<listitem>
<para><ulink url="http://ep09.pld-linux.org/~mmazur/linux-libc-headers/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>M4 (&m4-version;) - 310 KB:</term>
<term>M4 (&m4-version;) - 337 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/m4/"/></para>
<para><ulink url="&freshmeat;gnum4/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Make (&make-version;) - 899 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/make/"/></para>
<para><ulink url="&freshmeat;gnumake/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Man (&man-version;) - 228 KB:</term>
<term>Man (&man-version;) - 223 KB:</term>
<listitem>
<para><ulink url="ftp://ftp.win.tue.nl/pub/linux-local/utils/man/"/></para>
<para><ulink url="&freshmeat;man/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Man-pages (&man-pages-version;) - 1,629 KB:</term>
<term>Man-pages (&man-pages-version;) - 1,586 KB:</term>
<listitem>
<para><ulink url="http://ftp.kernel.org/pub/linux/docs/manpages/"/></para>
<para><ulink url="&freshmeat;man-pages/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Mktemp (&mktemp-version;) - 69 KB:</term>
<listitem>
<para><ulink url="ftp://ftp.cs.colorado.edu:/pub/mktemp/"/></para>
<para><ulink url="&freshmeat;mktemp/"/></para>
</listitem>
</varlistentry>
@ -295,91 +300,91 @@
<varlistentry>
<term>Ncurses (&ncurses-version;) - 2,019 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/ncurses/"/></para>
<para><ulink url="&freshmeat;ncurses/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Patch (&patch-version;) - 182 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/patch/"/></para>
<para><ulink url="&freshmeat;patch/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Perl (&perl-version;) - 9,466 KB:</term>
<term>Perl (&perl-version;) - 9,373 KB:</term>
<listitem>
<para><ulink url="http://www.cpan.org/src/"/></para>
<para><ulink url="&freshmeat;perl/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Procps (&procps-version;) - 271 KB:</term>
<listitem>
<para><ulink url="http://procps.sourceforge.net/"/></para>
<para><ulink url="&freshmeat;procps/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Psmisc (&psmisc-version;) - 375 KB:</term>
<listitem>
<para><ulink url="http://prdownloads.sourceforge.net/psmisc/"/></para>
<para><ulink url="&freshmeat;psmisc/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Readline (&readline-version;) - 940 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/readline/"/></para>
<para><ulink url="&freshmeat;gnureadline/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Sed (&sed-version;) - 776 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/sed/"/></para>
<para><ulink url="&freshmeat;sed/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Shadow (&shadow-version;) - 996 KB:</term>
<listitem>
<para><ulink url="ftp://ftp.pld.org.pl/software/shadow/"/></para>
<para><ulink url="&freshmeat;shadow/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Syslog-ng (&syslog-ng-version;) - 369 KB:</term>
<term>Syslog-ng (&syslog-ng-version;) - 388 KB:</term>
<listitem>
<para><ulink url="http://www.balabit.com/downloads/syslog-ng/1.6/src/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Sysvinit (&sysvinit-version;) - 97 KB:</term>
<term>Sysvinit (&sysvinit-version;) - 91 KB:</term>
<listitem>
<para><ulink url="ftp://ftp.cistron.nl/pub/people/miquels/sysvinit/"/></para>
<para><ulink url="&freshmeat;sysvinit/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Tar (&tar-version;) - 1,025 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/tar/"/></para>
<para><ulink url="&freshmeat;tar/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Tcl (&tcl-version;) - 3,414 KB:</term>
<term>Tcl (&tcl-version;) - 3,363 KB:</term>
<listitem>
<para><ulink url="http://prdownloads.sourceforge.net/tcl/"/></para>
<para><ulink url="&freshmeat;tcltk/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Texinfo (&texinfo-version;) - 1,385 KB:</term>
<listitem>
<para><ulink url="http://ftp.gnu.org/gnu/texinfo/"/></para>
<para><ulink url="&freshmeat;texinfo/"/></para>
</listitem>
</varlistentry>
@ -405,37 +410,36 @@
</varlistentry>
<varlistentry>
<term>Util-linux (&util-linux-version;) - 1,339:</term>
<term>Util-linux (&util-linux-version;) - 1,339 KB:</term>
<listitem>
<para><ulink url="http://www.kernel.org/pub/linux/utils/util-linux/"/></para>
<para><ulink url="&freshmeat;util-linux/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Vim (&vim-version;) - 3,612 KB:</term>
<listitem>
<para><ulink url="ftp://ftp.vim.org/pub/vim/unix/"/></para>
<para><ulink url="&freshmeat;vim/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Vim (&vim-version;) language files (optional) - 1,033 KB:</term>
<listitem>
<para><ulink url="ftp://ftp.vim.org/pub/vim/unix/"/></para>
<para><ulink url="&freshmeat;vim/"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Zlib (&zlib-version;) - 277 KB:</term>
<listitem>
<para><ulink url="http://www.zlib.net/"/></para>
<para><ulink url="&freshmeat;zlib/"/></para>
</listitem>
</varlistentry>
</variablelist>
<!--
<para>Total size of these packages: 135 MB</para>
-->
</sect1>

View File

@ -7,17 +7,23 @@
<title>Needed Patches</title>
<?dbhtml filename="patches.html"?>
<para>In addition to the packages, several patches are also required.
These patches correct any mistakes in the packages that should be
fixed by the maintainer. The patches also make small modifications to
make the packages easier to work with. The following patches will be
needed to build an LFS system:</para>
<variablelist role="materials">
<varlistentry>
<term>Bash Various Fixes - 23 KB:</term>
<term>Bash Various Fixes - 21 KB:</term>
<listitem>
<para><ulink url="&patches-root;bash-&bash-version;-fixes-3.patch"/></para>
<para><ulink url="&patches-root;bash-&bash-version;-fixes-1.patch"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Bash Avoid Wcontinued Patch - 1KB:</term>
<term>Bash Avoid Wcontinued Patch - 1 KB:</term>
<listitem>
<para><ulink url="&patches-root;bash-&bash-version;-avoid_WCONTINUED-1.patch"/></para>
</listitem>
@ -26,7 +32,8 @@
<varlistentry>
<term>Coreutils Suppress Uptime, Kill, Su Patch - 16 KB:</term>
<listitem>
<para><ulink url="&patches-root;coreutils-&coreutils-version;-suppress_uptime_kill_su-1.patch"/></para>
<para condition="html"><ulink url="&patches-root;coreutils-&coreutils-version;-suppress_uptime_kill_su-1.patch"/></para>
<para condition="pdf"><ulink url="&patches-root;coreutils-&coreutils-version;-suppress_uptime_ kill_su-1.patch"/></para>
</listitem>
</varlistentry>
@ -52,7 +59,7 @@
</varlistentry>
<varlistentry>
<term> GCC Linkonce Patch - 12KB:</term>
<term> GCC Linkonce Patch - 12 KB:</term>
<listitem>
<para><ulink url="&patches-root;gcc-&gcc-version;-linkonce-1.patch"/></para>
</listitem>
@ -75,21 +82,24 @@
<varlistentry>
<term>Inetutils Kernel Headers Patch - 1 KB:</term>
<listitem>
<para><ulink url="&patches-root;inetutils-&inetutils-version;-kernel_headers-1.patch"/></para>
<para condition="html"><ulink url="&patches-root;inetutils-&inetutils-version;-kernel_headers-1.patch"/></para>
<para condition="pdf"><ulink url="&patches-root;inetutils-&inetutils-version;-kernel_headers- 1.patch"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>Inetutils No-Server-Man-Pages Patch - 4 KB:</term>
<listitem>
<para><ulink url="&patches-root;inetutils-&inetutils-version;-no_server_man_pages-1.patch"/></para>
<para condition="html"><ulink url="&patches-root;inetutils-&inetutils-version;-no_server_man_pages-1.patch"/></para>
<para condition="pdf"><ulink url="&patches-root;inetutils-&inetutils-version;-no_server_man_ pages-1.patch"/></para>
</listitem>
</varlistentry>
<varlistentry>
<term>IPRoute2 Disable DB Patch - 1 KB:</term>
<listitem>
<para><ulink url="&patches-root;iproute2-&iproute2-patch-version;-remove_db-1.patch"/></para>
<para condition="html"><ulink url="&patches-root;iproute2-&iproute2-patch-version;-remove_db-1.patch"/></para>
<para condition="pdf"><ulink url="&patches-root;iproute2-&iproute2-patch-version;-remove_ db-1.patch"/></para>
</listitem>
</varlistentry>
@ -122,9 +132,9 @@
</varlistentry>
<varlistentry>
<term>Readline Various Fixes - 7 KB:</term>
<term>Readline Display Wrap Patch - 1 KB:</term>
<listitem>
<para><ulink url="&patches-root;readline-&readline-version;-fixes-1.patch" /></para>
<para><ulink url="&patches-root;readline-&readline-version;-fixes-1.patch"/></para>
</listitem>
</varlistentry>
@ -142,4 +152,12 @@
</variablelist>
<para>In addition to the above required patches, there exist a number of
optional patches created by the LFS community. These optional patches
solve minor problems or enable functionality that is not enabled by
default. Feel free to peruse the patches database located at
<ulink url="&lfs-root;patches/"/> and acquire any additional
patches to suit the system needs.</para>
</sect1>

View File

@ -7,6 +7,29 @@
<title>About $LFS</title>
<?dbhtml filename="aboutlfs.html"?>
<para>See testing</para>
<para>Throughout this book, the environment variable <envar>LFS</envar> will
be used several times. It is paramount that this variable is always defined.
It should be set to the mount point chosen for the LFS partition.
Check that the <envar>LFS</envar> variable is set up properly with:</para>
<screen><userinput>echo $LFS</userinput></screen>
<para>Make sure the output shows the path to the LFS partition's mount
point, which is <filename class="directory">/mnt/lfs</filename> if the
provided example was followed. If the output is incorrect, the
variable can be set with:</para>
<screen><userinput>export LFS=/mnt/lfs</userinput></screen>
<para>Having this variable set is beneficial in that commands such as
<command>mkdir $LFS/tools</command> can be typed literally. The shell
will automatically replace <quote>$LFS</quote> with
<quote>/mnt/lfs</quote> (or whatever the variable was set to) when it
processes the command line.</para>
<para>Do not forget to check that <envar>$LFS</envar> is set whenever
you leave and reenter the current working environment (as when doing a
<quote>su</quote> to <emphasis>root</emphasis> or another user).</para>
</sect1>

View File

@ -7,6 +7,44 @@
<title>About SBUs</title>
<?dbhtml filename="aboutsbus.html"?>
<para>See testing</para>
<para>Many people would like to know beforehand approximately how long
it takes to compile and install each package. Because Linux From
Scratch can be built on many different systems, it is impossible to
provide accurate time estimates. The biggest package (Glibc) will
take approximately 20 minutes on the fastest systems, but could take
up to three days on slower systems! Instead of providing actual times,
the Static Build Unit (SBU) measure will be
used instead.</para>
<para>The SBU measure works as follows. The first package to be compiled
from this book is the statically-linked Binutils in <xref
linkend="chapter-temporary-tools"/>. The time it takes to compile
this package is what will be referred to as the Static Build Unit
or SBU. All other compile times will be expressed relative to this
time.</para>
<para>For example, consider a package whose compilation time is 4.5
SBUs. This means that if a system took 10 minutes to compile and
install the static Binutils, it will take
<emphasis>approximately</emphasis> 45 minutes to build this example
package. Fortunately, most build times are shorter than the one
for Binutils.</para>
<para>Please note that if the system compiler on the host is GCC-2.x based, the
SBUs listed may be somewhat understated. This is because the SBU is
based on the very first package, compiled with the old GCC, while the
rest of the system is compiled with the newer GCC-&gcc-version; (which is
known to be approximately 30 percent slower). SBUs are also not
highly accurate for Symmetric Multi-Processor (SMP)-based machines.</para>
<para>To view actual timings for a number of specific machines, we recommend
<ulink url="&lfs-root;~bdubbs/"/>.</para>
<para>In general, SBUs are not very accurate because they depend on many
factors, not just the GCC version. They are provided
here to give an estimate of how long it might take to
install a package, but the numbers can vary by as much as dozens of
minutes in some cases.</para>
</sect1>

View File

@ -7,6 +7,44 @@
<title>About the Test Suites</title>
<?dbhtml filename="abouttestsuites.html"?>
<para>See testing</para>
<para>Most packages provide a test suite. Running the test suite for a
newly built package is a good idea because it can provide a <quote>sanity
check</quote> indicating that everything compiled correctly. A test suite
that passes its set of checks usually proves that the package is
functioning as the developer intended. It does not, however, guarantee
that the package is totally bug free.</para>
<para>Some test suites are more important than others. For example,
the test suites for the core toolchain packages&mdash;GCC, Binutils, and
Glibc&mdash;are of the utmost importance due to their central role in a
properly functioning system. The test suites for GCC and Glibc can
take a very long time to complete, especially on slower hardware, but
are strongly recommended.</para>
<note><para>Experience has shown that there is little to be gained
from running the test suites in <xref
linkend="chapter-temporary-tools"/>. There can be no escaping the fact
that the host system always exerts some influence on the tests in that
chapter, often causing inexplicable failures. Because the tools built
in <xref linkend="chapter-temporary-tools"/> are temporary and
eventually discarded, we do not recommend running the test suites in
<xref linkend="chapter-temporary-tools"/> for the average reader. The
instructions for running those test suites are provided for the
benefit of testers and developers, but they are strictly
optional.</para></note>
<para>A common issue with running the test suites for Binutils and GCC
is running out of pseudo terminals (PTYs). This can result in a high
number of failing tests. This may happen for several reasons, but the
most likely cause is that the host system does not have the
<systemitem class="filesystem">devpts</systemitem> file system set up
correctly. This issue is discussed in greater detail in <xref
linkend="chapter-temporary-tools"/>.</para>
<para>Sometimes package test suites will give false failures. Consult
the LFS Wiki at <ulink url="&wiki-root;"/> to verify that these
failures are expected. This site is valid for all tests throughout this
book.</para>
</sect1>

View File

@ -7,17 +7,85 @@
<title>Adding the LFS User</title>
<?dbhtml filename="addinguser.html"?>
<para>Issue the following commands to add the new user:</para>
<para>When logged in as user <emphasis>root</emphasis>, making a
single mistake can damage or destroy a system. Therefore, we recommend
building the packages in this chapter as an unprivileged user. You
could use your own user name, but to make it easier to set up a clean
work environment, create a new user called <emphasis>lfs</emphasis> as
a member of a new group (also named <emphasis>lfs</emphasis>) and use
this user during the installation process. As
<emphasis>root</emphasis>, issue the following commands to add the new
user:</para>
<screen><userinput>groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs</userinput></screen>
<para>The meaning of the command line options:</para>
<variablelist>
<varlistentry>
<term><parameter>-s /bin/bash</parameter></term>
<listitem><para>This makes
<command>bash</command> the default shell for user
<emphasis>lfs</emphasis>.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>-g lfs</parameter></term>
<listitem><para>This option adds user <emphasis>lfs</emphasis> to group
<emphasis>lfs</emphasis>.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>-m</parameter></term>
<listitem><para>This creates a home
directory for <emphasis>lfs</emphasis>.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>-k /dev/null</parameter></term>
<listitem><para>This parameter
prevents possible copying of files from a skeleton directory (default
is <filename class="directory">/etc/skel</filename>) by changing the input location to
the special null device.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>lfs</parameter></term>
<listitem><para>This is the actual name for the created group and
user.</para></listitem>
</varlistentry>
</variablelist>
<para>To log in as <emphasis>lfs</emphasis> (as opposed to switching
to user <emphasis>lfs</emphasis> when
logged in as <emphasis>root</emphasis>, which does not require the
<emphasis>lfs</emphasis> user to have a
password), give <emphasis>lfs</emphasis> a password:</para>
<screen><userinput>passwd lfs</userinput></screen>
<para>Grant <emphasis>lfs</emphasis> full access to
<filename class="directory">$LFS/tools</filename> by making
<emphasis>lfs</emphasis> the directory owner:</para>
<screen><userinput>chown lfs $LFS/tools</userinput></screen>
<para>If a separate working directory was created as suggested, give
user <emphasis>lfs</emphasis> ownership of this directory:</para>
<screen><userinput>chown lfs $LFS/sources</userinput></screen>
<para>Next, login as user <emphasis>lfs</emphasis>. This can be done
via a virtual console, through a display manager, or with the
following substitute user command:</para>
<screen><userinput>su - lfs</userinput></screen>
<para>The <quote><parameter>-</parameter></quote> instructs
<command>su</command> to start a login shell as opposed to a non-login
shell. The difference between these two types of shells can be found
in detail in the Bash man and info pages.</para>
</sect1>

View File

@ -7,8 +7,40 @@
<title>Creating the $LFS/tools Directory</title>
<?dbhtml filename="creatingtoolsdir.html"?>
<para>All programs compiled in <xref
linkend="chapter-temporary-tools"/> will be installed under <filename
class="directory">$LFS/tools</filename> to keep them separate from the
programs compiled in <xref linkend="chapter-building-system"/>. The
programs compiled here are temporary tools and will not be a part of
the final LFS system. By keeping these programs in a separate
directory, they can easily be discarded later after their use. This
also prevents these programs from ending up in the host production
directories (easy to do by accident in <xref
linkend="chapter-temporary-tools"/>).</para>
<para>Create the required directory by running the following as
<emphasis>root</emphasis>:</para>
<screen><userinput>mkdir $LFS/tools</userinput></screen>
<para>The next step is to create a <filename class="symlink">/tools</filename>
symlink on the host system. This will point to the newly-created directory on
the LFS partition. Run this command as <emphasis>root</emphasis> as
well:</para>
<screen><userinput>ln -s $LFS/tools /</userinput></screen>
<note><para>The above command is correct. The <command>ln</command>
command has a few syntactic variations, so be sure to check the info
and man pages before reporting what you may think is an
error.</para></note>
<para>The created symlink enables the toolchain to be compiled so that
it always refers to <filename class="directory">/tools</filename>,
meaning that the compiler, assembler, and linker will work both in
this chapter (when we are still using some tools from the host) and in
the next (when we are <quote>chrooted</quote> to the LFS
partition).</para>
</sect1>

View File

@ -7,10 +7,35 @@
<title>Setting Up the Environment</title>
<?dbhtml filename="settingenvironment.html"?>
<para>Set up a good working environment by creating two new startup
files for the <command>bash</command> shell. While logged in as user
<emphasis>lfs</emphasis>, issue the
following command to create a new <filename>.bash_profile</filename>:</para>
<screen><userinput>cat &gt; ~/.bash_profile &lt;&lt; "EOF"
<literal>exec env -i HOME=$HOME TERM=$TERM PS1='\u:\w\$ ' /bin/bash</literal>
EOF</userinput></screen>
<para>When logged on as user <emphasis>lfs</emphasis>, the
initial shell is usually a <emphasis>login</emphasis> shell which reads the
<filename>/etc/profile</filename> of the host (probably containing
some settings and environment variables) and then
<filename>.bash_profile</filename>. The <command>exec env
-i.../bin/bash</command> command in the
<filename>.bash_profile</filename> file replaces the running shell
with a new one with a completely empty environment, except for the
<envar>HOME</envar>, <envar>TERM</envar>, and
<envar>PS1</envar> variables. This ensures that no unwanted and
potentially hazardous environment variables from the host system leak
into the build environment. The technique used here achieves the goal
of ensuring a clean environment.</para>
<para>The new instance of the shell is a <emphasis>non-login</emphasis>
shell, which does not read the <filename>/etc/profile</filename> or
<filename>.bash_profile</filename> files, but rather reads the
<filename>.bashrc</filename> file instead. Create the
<filename>.bashrc</filename> file now:</para>
<screen><userinput>cat &gt; ~/.bashrc &lt;&lt; "EOF"
<literal>set +h
umask 022
@ -20,6 +45,49 @@ PATH=/tools/bin:/bin:/usr/bin
export LFS LC_ALL PATH</literal>
EOF</userinput></screen>
<para>The <command>set +h</command> command turns off
<command>bash</command>'s hash function. Hashing is ordinarily a useful
feature&mdash;<command>bash</command> uses a hash table to remember the
full path of executable files to avoid searching the <envar>PATH</envar> time
and again to find the same executable. However, the new tools
should be used as soon as they are installed. By switching off the
hash function, the shell will always search the <envar>PATH</envar> when a program is
to be run. As such, the shell will find the newly compiled
tools in <filename class="directory">$LFS/tools</filename> as soon as
they are available without remembering a previous version of the same
program in a different location.</para>
<para>Setting the user file-creation mask (umask) to 022 ensures that newly
created files and directories are only writable by their owner, but
are readable and executable by anyone (assuming default modes are used
by the open(2) system call, new files will end up with permission mode
644 and directories with mode 755).</para>
<para>The <envar>LFS</envar> variable should be set to the
chosen mount point.</para>
<para>The <envar>LC_ALL</envar> variable controls the
localization of certain programs, making their messages follow the
conventions of a specified country. If the host system uses a version
of Glibc older than 2.2.4, having <envar>LC_ALL</envar> set to something other than
<quote>POSIX</quote> or <quote>C</quote> (during this chapter) may
cause issues if you exit the chroot environment and wish to return
later. Setting <envar>LC_ALL</envar> to <quote>POSIX</quote>
or <quote>C</quote> (the two are equivalent) ensures that
everything will work as expected in the chroot environment.</para>
<para>By putting <filename class="directory">/tools/bin</filename>
ahead of the standard <envar>PATH</envar>, all the programs installed in <xref
linkend="chapter-temporary-tools"/> are picked up by the shell
immediately after their installation. This, combined with turning off
hashing, limits the risk that old programs from
the host are being used when they should not be used any
longer.</para>
<para>Finally, to have the environment fully prepared for building the
temporary tools, source the just-created user profile:</para>
<screen><userinput>source ~/.bash_profile</userinput></screen>
</sect1>

View File

@ -7,12 +7,34 @@
<title>Adjusting the Toolchain</title>
<?dbhtml filename="adjusting.html"?>
<para>Run the following command from within
the <filename class="directory">binutils-build</filename> directory:</para>
<para>Now that the temporary C libraries have been installed, all
tools compiled in the rest of this chapter should be linked against
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>
<screen><userinput>make -C ld install</userinput></screen>
<para>Amend the GCC specs file:</para>
<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 amend the GCC specs file so that it points
to the new dynamic linker. A simple sed script will accomplish this:</para>
<!-- Ampersands are needed to allow copy and paste -->
<screen><userinput>SPECFILE=`gcc --print-file specs` &amp;&amp;
sed 's@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g' \
@ -20,24 +42,71 @@ sed 's@ /lib/ld-linux.so.2@ /tools/lib/ld-linux.so.2@g' \
mv -f tempspecfile $SPECFILE &amp;&amp;
unset SPECFILE</userinput></screen>
<para>Make clean-up:</para>
<para><phrase condition="html">It is recommended that the above
command be copy-and-pasted in order to ensure accuracy.</phrase>
Alternatively, the specs file can be edited by hand. This is done by
replacing every occurrence of <quote>/lib/ld-linux.so.2</quote> with
<quote>/tools/lib/ld-linux.so.2</quote></para>
<para>Be sure to visually inspect the specs file in order to verify the
intended changes have been made.</para>
<important><para>If working on a platform where the name of the
dynamic linker is something other than
<filename class="libraryfile">ld-linux.so.2</filename>, replace
<quote>ld-linux.so.2</quote> with the name of the platform's
dynamic linker in the above commands. Refer back to <xref
linkend="ch-tools-toolchaintechnotes" role=","/> if
necessary.</para></important>
<para>There is a possibility that some include files from the host
system have found their way into GCC's private include dir. This can
happen as a result of GCC's <quote>fixincludes</quote> process, which runs as part
of the GCC build. This is explained in more detail later in this
chapter. Run the following command to eliminate this
possibility:</para>
<screen><userinput>rm -f /tools/lib/gcc/*/*/include/{pthread.h,bits/sigthread.h}</userinput></screen>
<para>Test the tools:</para>
<caution><para>At this point, it is imperative to stop and ensure that
the basic functions (compiling and linking) of the new toolchain are
working as expected. To perform a sanity check, run the following
commands:</para>
<screen><userinput>echo 'main(){}' &gt; dummy.c
cc dummy.c
readelf -l a.out | grep ': /tools'</userinput></screen>
<para>The output of the last command will be of the form:</para>
<para>If everything is working correctly, there should be no errors,
and the output of the last command will be of the form:</para>
<screen><computeroutput>[Requesting program interpreter:
/tools/lib/ld-linux.so.2]</computeroutput></screen>
<para>Remove the test files:</para>
<para>Note that <filename class="directory">/tools/lib</filename>
appears as the prefix of the dynamic linker.</para>
<para>If the output is not shown as above or there was no output at
all, then something is wrong. Investigate and retrace the steps to
find out where the problem is and correct it. This issue must be
resolved before continuing on. First, perform the sanity check again,
using <command>gcc</command> instead of <command>cc</command>. If this
works, then the <filename class="symlink">/tools/bin/cc</filename> symlink is missing.
Revisit <xref linkend="ch-tools-gcc-pass1" role=","/> and install the symlink.
Next, ensure that the <envar>PATH</envar> is correct. This can be checked by running
<command>echo $PATH</command> and verifying that <filename
class="directory">/tools/bin</filename> is at the head of the list. If
the <envar>PATH</envar> is wrong it could mean that you are not logged in as user
<emphasis>lfs</emphasis> or that something went wrong back in <xref
linkend="ch-tools-settingenviron" role="."/> Another option is that something
may have gone wrong with the specs file amendment above. In this case,
redo the specs file amendment<phrase condition="html">, being careful to copy-and-paste the
commands</phrase>.</para>
<para>Once all is well, clean up the test files:</para>
<screen><userinput>rm dummy.c a.out</userinput></screen>
</caution>
</sect1>

View File

@ -7,8 +7,12 @@
<title>Bash-&bash-version;</title>
<?dbhtml filename="bash.html"?>
<indexterm zone="ch-tools-bash">
<primary sortas="a-Bash">Bash</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/bash.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -16,12 +20,16 @@
<seglistitem><seg>1.2 SBU</seg><seg>27 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/bash.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Installation of Bash</title>
<para>Apply a patch:</para>
<!-- Edit Me -->
<para>Bash has a problem when compiled against newer versions of Glibc, causing
it to hang inappropriately. This patch fixes the problem:</para>
<screen><userinput>patch -Np1 -i ../bash-&bash-version;-avoid_WCONTINUED-1.patch</userinput></screen>
@ -29,21 +37,39 @@
<screen><userinput>./configure --prefix=/tools --without-bash-malloc</userinput></screen>
<para>Compile the program:</para>
<para>The meaning of the configure option:</para>
<variablelist>
<varlistentry>
<term><parameter>--without-bash-malloc</parameter></term>
<listitem><para>This options turns off the use of Bash's memory
allocation (malloc) function which is known to cause segmentation
faults. By turning this option off, Bash will use the malloc functions
from Glibc which are more stable.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make test</userinput>.</para>
<para>To test the results, issue: <userinput>make
tests</userinput>.</para>
<para>Then install it :</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Create a symlink:</para>
<para>Make a link for the programs that use <command>sh</command> for
a shell:</para>
<screen><userinput>ln -s bash /tools/bin/sh</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref linkend="contents-bash" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Binutils-&binutils-version; - Pass 1</title>
<?dbhtml filename="binutils-pass1.html"?>
<indexterm zone="ch-tools-binutils-pass1">
<primary sortas="a-Binutils">Binutils</primary>
<secondary>tools, pass 1</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/binutils.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,44 +20,134 @@
<seglistitem><seg>1.0 SBU</seg><seg>194 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/binutils.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Installation of Binutils</title>
<para>Create a build dir:</para>
<para>It is important that Binutils be the first package compiled
because both Glibc and GCC perform various tests on the available
linker and assembler to determine which of their own features to
enable.</para>
<para>This package is known to have issues when its default
optimization flags (including the <parameter>-march</parameter> and
<parameter>-mcpu</parameter> options) are changed. If any environment
variables that override default optimizations have been defined, such
as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
unset them when building Binutils.</para>
<para>The Binutils documentation recommends building Binutils outside of the
source directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../binutils-build
cd ../binutils-build</userinput></screen>
<note><para>If you want the SBU values you could wrap the four commands in a
<command>time</command> command like this:
<userinput>time { ./configure ... &amp;&amp; ... &amp;&amp; ...
&amp;&amp; make install; }</userinput>.</para></note>
<note><para>In order for the SBU values listed in the rest of the book
to be of any use, measure the time it takes to build this package from
the configuration, up to and including the first install. To achieve
this easily, wrap the four commands in a <command>time</command>
command like this: <userinput>time { ./configure ... &amp;&amp; ...
&amp;&amp; ... &amp;&amp; make install; }</userinput>.</para></note>
<para>Now prepare Binutils for compilation:</para>
<screen><userinput>../binutils-&binutils-version;/configure --prefix=/tools \
--disable-nls</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--prefix=/tools</parameter></term>
<listitem><para>This tells the configure script to prepare to install the Binutils
programs in the <filename class="directory">/tools</filename> directory.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-nls</parameter></term>
<listitem><para>This disables internationalization. This is not needed
for the static programs, and NLS can cause problems when linking
statically.</para></listitem>
</varlistentry>
</variablelist>
<para>Continue with compiling the package:</para>
<screen><userinput>make configure-host
make LDFLAGS="-all-static"</userinput></screen>
<para>Now install the package:</para>
<para>The meaning of the make parameters:</para>
<variablelist>
<varlistentry>
<term><parameter>configure-host</parameter></term>
<listitem><para>This forces all subdirectories to be configured
immediately. A statically-linked build will fail without it. Use this
option to work around the problem.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>LDFLAGS="-all-static"</parameter></term>
<listitem><para>This tells the linker that all Binutils programs
should be linked statically. However, strictly speaking,
<parameter>"-all-static"</parameter> is passed to the
<command>libtool</command> program, which then passes
<parameter>"-static"</parameter> to the linker.</para></listitem>
</varlistentry>
</variablelist>
<para>Compilation is now complete. Ordinarily we would now run the
test suite, but at this early stage the test suite framework (Tcl,
Expect, and DejaGNU) is not yet in place. The benefits of running the
tests at this point are minimal since the programs from this
first pass will soon be replaced by those from the second.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Now prepare the linker for the <quote>Adjusting</quote> phase later on:</para>
<para>Next, prepare the linker for the <quote>Adjusting</quote> phase
later on:</para>
<screen><userinput>make -C ld clean
make -C ld LDFLAGS="-all-static" LIB_PATH=/tools/lib</userinput></screen>
<warning><para><emphasis>Do not yet remove</emphasis> the Binutils build and
source directories. You will need them again in their current state a bit
further on in this chapter.</para></warning>
<para>The meaning of the make parameters:</para>
<variablelist>
<varlistentry>
<term><parameter>-C ld clean</parameter></term>
<listitem><para>This tells the make program to remove all compiled
files in the <filename class="directory">ld</filename>
subdirectory.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>-C ld LDFLAGS="-all-static"
LIB_PATH=/tools/lib</parameter></term>
<listitem><para>This option rebuilds everything in the
<filename class="directory">ld</filename> subdirectory. Specifying
the <envar>LIB_PATH</envar> Makefile variable on the command
line allows us to override the default value
and point it to the temporary tools location. The value of this variable
specifies the linker's default library search path. This preparation
is used later in the chapter.</para></listitem>
</varlistentry>
</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"><title/>
<para>Details on this package are located in <xref
linkend="contents-binutils" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,14 @@
<title>Binutils-&binutils-version; - Pass 2</title>
<?dbhtml filename="binutils-pass2.html"?>
<indexterm zone="ch-tools-binutils-pass2">
<primary sortas="a-Binutils">Binutils</primary>
<secondary>tools, pass 2</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
href="../chapter06/binutils.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,39 +22,57 @@
<seglistitem><seg>1.5 SBU</seg><seg>108 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
href="../chapter06/binutils.xml"
xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Re-installation of Binutils</title>
<para>This package is known to have issues when its default
optimization flags (including the <parameter>-march</parameter> and
<parameter>-mcpu</parameter> options) are changed. If any environment
variables that override default optimizations have been defined, such
as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
unset them when building Binutils.</para>
<para>Create a separate build directory again:</para>
<screen><userinput>mkdir ../binutils-build
cd ../binutils-build</userinput></screen>
<para>Now prepare Binutils for compilation:</para>
<para>Prepare Binutils for compilation:</para>
<screen><userinput>../binutils-&binutils-version;/configure --prefix=/tools \
--enable-shared --with-lib-path=/tools/lib</userinput></screen>
<para>The meaning of the new configure option:</para>
<variablelist>
<varlistentry>
<term><parameter>--with-lib-path=/tools/lib</parameter></term>
<listitem><para>This tells the configure script to specify the library
search path during the compilation of Binutils, resulting in <filename
class="directory">/tools/lib</filename> being passed to the linker.
This prevents the linker from searching through library directories on
the host.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Test the results:</para>
<para>Compilation is now complete. As discussed earlier, running the
test suite is not mandatory for the temporary tools here in this
chapter. To run the Binutils test suite anyway, issue the following
command:</para>
<!-- NEW -->
<screen><userinput>make -k check</userinput></screen>
<screen><userinput>make check</userinput></screen>
<para>Except for a few known failures, the binutils tests should all pass. The
exceptions to this rule are as follows:</para>
<screen><computeroutput>* 5 FAIL (unexpected failure) for visibility
* 1 FAIL for selective4
* 1 FAIL for selective5</computeroutput></screen>
<!-- END NEW-->
<para>And install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -58,10 +83,16 @@ chapter:</para>
make -C ld LIB_PATH=/usr/lib:/lib</userinput></screen>
<warning><para><emphasis>Do not yet remove</emphasis> the Binutils source and
build directories. You will need these directories again in the next chapter
in the state they are in now.</para></warning>
<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>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-binutils" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Bison-&bison-version;</title>
<?dbhtml filename="bison.html"?>
<indexterm zone="ch-tools-bison">
<primary sortas="a-Bison">Bison</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/bison.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.6 SBU</seg><seg>10.6 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/bison.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,13 +35,19 @@
<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>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-bison" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Bzip2-&bzip2-version;</title>
<?dbhtml filename="bzip2.html"?>
<indexterm zone="ch-tools-bzip2">
<primary sortas="a-Bzip2">Bzip2</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/bzip2.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,20 +20,28 @@
<seglistitem><seg>0.1 SBU</seg><seg>2.5 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/bzip2.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Installation of Bzip2</title>
<para>The Bzip2 package doesn't contain a <command>configure</command>
script. Compile it with a straightforward:</para>
<para>The Bzip2 package does not contain a <command>configure</command>
script. Compile it with:</para>
<screen><userinput>make</userinput></screen>
<para>And install it:</para>
<para>Install the package:</para>
<screen><userinput>make PREFIX=/tools install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-bzip2" role="."/></para>
</sect2>
</sect1>

View File

@ -14,9 +14,6 @@
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="binutils-pass1.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="gcc-pass1.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="kernel-headers.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="adjusting.xml"/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="tcl.xml"/>
@ -44,9 +41,6 @@
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="flex.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="perl.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="stripping.xml"/>
</chapter>

View File

@ -7,7 +7,12 @@
<title>Coreutils-&coreutils-version;</title>
<?dbhtml filename="coreutils.html"?>
<indexterm zone="ch-tools-coreutils">
<primary sortas="a-Coreutils">Coreutils</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/coreutils.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.9 SBU</seg><seg>69 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/coreutils.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -24,17 +31,44 @@
<screen><userinput>DEFAULT_POSIX2_VERSION=199209 ./configure --prefix=/tools</userinput></screen>
<para>This package has an issue when compiled against versions of
Glibc later than 2.3.2. Some of the Coreutils utilities (such as
<command>head</command>, <command>tail</command>, and
<command>sort</command>) will reject their traditional syntax, a
syntax that has been in use for approximately 30 years. This old
syntax is so pervasive that compatibility should be preserved until
the many places where it is used can be updated. Backwards
compatibility is achieved by setting the
<envar>DEFAULT_POSIX2_VERSION</envar> environment variable to
<quote>199209</quote> in the above command. If you do not want
Coreutils to be backwards compatible with the traditional syntax, then
omit setting the <envar>DEFAULT_POSIX2_VERSION</envar>
environment variable. It is important to remember that doing so will
have consequences, including the need to patch the many packages that
still use the old syntax. Therefore, it is recommended that the
instructions be followed exactly as given above.</para>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>To test the result, issue:
<userinput>make RUN_EXPENSIVE_TESTS=yes check</userinput></para>
<para>To test the results, issue: <userinput>make
RUN_EXPENSIVE_TESTS=yes check</userinput>. The
<parameter>RUN_EXPENSIVE_TESTS=yes</parameter> parameter tells the
test suite to run several additional tests that are considered
relatively expensive (in terms of CPU power and memory usage) on some
platforms, but generally are not a problem on Linux.</para>
<para>And install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-coreutils" role="."/></para>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-dejagnu" xreflabel="DejaGNU" role="wrap">
<sect1 id="ch-tools-dejagnu" role="wrap">
<title>DejaGNU-&dejagnu-version;</title>
<?dbhtml filename="dejagnu.html"?>
<indexterm zone="ch-tools-dejagnu"><primary sortas="a-DejaGNU">DejaGNU</primary></indexterm>
<sect2 role="package"><title/>
<para>The DejaGNU package contains a framework for testing other programs.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,11 @@
<seglistitem><seg>0.1 SBU</seg><seg>8.6 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>DejaGNU installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -32,11 +38,28 @@
</sect2>
<sect2 id="contents-dejagnu" role="content"><title>Contents of DejaGNU</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed program</segtitle>
<seglistitem><seg>runtest</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="runtest">
<term><command>runtest</command></term>
<listitem>
<para>A wrapper script that locates the proper
<command>expect</command> shell and then runs DejaGNU</para>
<indexterm zone="ch-tools-dejagnu runtest"><primary sortas="b-runtest">runtest</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Diffutils-&diffutils-version;</title>
<?dbhtml filename="diffutils.html"?>
<indexterm zone="ch-tools-diffutils">
<primary sortas="a-Diffutils">Diffutils</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/diffutils.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.1 SBU</seg><seg>7.5 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/diffutils.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,10 +35,18 @@
<screen><userinput>make</userinput></screen>
<para>And install it:</para>
<para>This package does not come with a test suite.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-diffutils" role="."/></para>
</sect2>
</sect1>

View File

@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-expect" xreflabel="Expect" role="wrap">
<sect1 id="ch-tools-expect" role="wrap">
<title>Expect-&expect-version;</title>
<?dbhtml filename="expect.html"?>
<indexterm zone="ch-tools-expect"><primary sortas="a-Expect">Expect</primary></indexterm>
<sect2 role="package"><title/>
<para>The Expect package contains a program for carrying out scripted dialogues
with other interactive programs.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,12 +19,18 @@
<seglistitem><seg>0.1 SBU</seg><seg>3.9 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Expect installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, Sed, and Tcl</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Expect</title>
<para>Apply a patch:</para>
<para>First, fix a bug that can result in false failures during the GCC test
suite run:</para>
<screen><userinput>patch -Np1 -i ../expect-&expect-version;-spawn-1.patch</userinput></screen>
@ -30,26 +38,84 @@
<screen><userinput>./configure --prefix=/tools --with-tcl=/tools/lib --with-x=no</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--with-tcl=/tools/lib</parameter></term>
<listitem><para>This ensures that the configure script finds the Tcl installation in
the temporary tools location instead of possibly locating an existing
one on the host system.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-x=no</parameter></term>
<listitem><para>This tells the configure script not to search for Tk
(the Tcl GUI component) or the X Window System libraries, both of
which may reside on the host system.</para></listitem>
</varlistentry>
</variablelist>
<para>Build the package:</para>
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make test</userinput></para>
<para>To test the results, issue: <userinput>make test</userinput>.
Note that the Expect test suite is known to experience failures under
certain host conditions that are not within our control. Therefore,
test suite failures here are not surprising and are not considered
critical.</para>
<para>And install it:</para>
<para>Install the package:</para>
<screen><userinput>make SCRIPTS="" install</userinput></screen>
<para>You can now remove the source directories of both Tcl and Expect.</para>
<para>The meaning of the make parameter:</para>
<variablelist>
<varlistentry>
<term><parameter>SCRIPTS=""</parameter></term>
<listitem><para>This prevents installation of the supplementary expect
scripts, which are not needed.</para></listitem>
</varlistentry>
</variablelist>
<para>The source directories of both Tcl and Expect can now be removed.</para>
</sect2>
<sect2 id="contents-expect" role="content"><title>Contents of Expect</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed program</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem><seg>expect</seg><seg>libexpect-5.42.a</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="expect">
<term><command>expect</command></term>
<listitem>
<para>Communicates with other interactive
programs according to a script</para>
<indexterm zone="ch-tools-expect expect"><primary sortas="b-expect">expect</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libexpect">
<term><filename class="libraryfile">libexpect-5.42.a</filename></term>
<listitem>
<para>Contains functions that allow Expect to be used as a Tcl extension or to
be used directly from C or C++ (without Tcl)</para>
<indexterm zone="ch-tools-expect libexpect"><primary
sortas="c-libexpect-5.42">libexpect-5.42</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Findutils-&findutils-version;</title>
<?dbhtml filename="findutils.html"?>
<indexterm zone="ch-tools-findutils">
<primary sortas="a-Findutils">Findutils</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/findutils.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.2 SBU</seg><seg>7.6 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/findutils.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,13 +35,19 @@
<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>And install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-findutils" role="."/></para>
</sect2>
</sect1>

View File

@ -3,11 +3,16 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-flex" xreflabel="Flex" role="wrap">
<sect1 id="ch-tools-flex" role="wrap">
<title>Flex-&flex-version;</title>
<?dbhtml filename="flex.html"?>
<indexterm zone="ch-tools-flex">
<primary sortas="a-Flex">Flex</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/flex.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,16 +20,22 @@
<seglistitem><seg>0.6 SBU</seg><seg>10.6 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/flex.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Installation of Flex</title>
<para>Apply a patch:</para>
<para>Flex contains several known bugs. These can be fixed with the
following patch:</para>
<screen><userinput>patch -Np1 -i ../flex-&flex-version;-debian_fixes-2.patch</userinput></screen>
<para>Touch the man-page:</para>
<para>The GNU autotools will detect that the Flex source code has been
modified by the previous patch and tries to update the manual page
accordingly. This does not work on many systems, and the default page is
fine, so make sure it does not get regenerated:</para>
<screen><userinput>touch doc/flex.1</userinput></screen>
@ -39,10 +50,16 @@
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-flex" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Gawk-&gawk-version;</title>
<?dbhtml filename="gawk.html"?>
<indexterm zone="ch-tools-gawk">
<primary sortas="a-Gawk">Gawk</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gawk.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.2 SBU</seg><seg>17 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gawk.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,13 +35,19 @@
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput></para>
<para>To test the results (not necessary), issue: <userinput>make
check</userinput>.</para>
<para>And install it:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-gawk" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>GCC-&gcc-version; - Pass 1</title>
<?dbhtml filename="gcc-pass1.html"?>
<indexterm zone="ch-tools-gcc-pass1">
<primary sortas="a-GCC">GCC</primary>
<secondary>tools, pass 1</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gcc.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,36 +20,117 @@
<seglistitem><seg>4.4 SBU</seg><seg>300 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gcc.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Installation of GCC</title>
<para>Create a build dir:</para>
<para>Unpack only the gcc-core tarball because neither the C++
compiler nor the test suite will be needed here.</para>
<para>This package is known to have issues when its default
optimization flags (including the <parameter>-march</parameter> and
<parameter>-mcpu</parameter> options) are changed. If any environment
variables that override default optimizations have been defined, such
as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
unset them when building GCC.</para>
<para>The GCC documentation recommends building GCC outside of the
source directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../gcc-build
cd ../gcc-build</userinput></screen>
<para>Prepare GCC for compilation:</para>
<!--NEW-->
<screen><userinput>CC="gcc -B/usr/bin" ../gcc-&gcc-version;/configure \
--prefix=/tools --libexecdir=/tools/lib \
--with-local-prefix=/tools --disable-nls \
--enable-shared --enable-languages=c</userinput></screen>
<screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \
--libexecdir=/tools/lib --with-local-prefix=/tools \
--disable-nls --enable-shared --enable-languages=c</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--with-local-prefix=/tools</parameter></term>
<listitem><para>The purpose of this switch is to remove <filename class="directory">/usr/local/include</filename>
from <command>gcc</command>'s include search path. This is not absolutely
essential, however, it helps to minimize the influence of the host
system.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-shared</parameter></term>
<listitem><para>This switch may seem counter-intuitive at first.
However, this switch allows the building of
<filename class="libraryfile">libgcc_s.so.1</filename> and
<filename class="libraryfile">libgcc_eh.a</filename>, and having
<filename class="libraryfile">libgcc_eh.a</filename> available ensures that the configure
script for Glibc (the next package we compile) produces the proper
results. Note that the GCC binaries will still be linked statically
because this is controlled by the <parameter>-static</parameter> value of
the <envar>BOOT_LDFLAGS</envar> variable in the next
step.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-languages=c</parameter></term>
<listitem><para>This option ensures that only the C compiler is built.
This option is only needed when you have downloaded and unpacked the
full GCC tarball, as opposed to just the gcc-core
tarball.</para></listitem>
</varlistentry>
</variablelist>
<para>Continue with compiling the package:</para>
<screen><userinput>make BOOT_LDFLAGS="-static" bootstrap</userinput></screen>
<para>Now install the package:</para>
<para>The meaning of the make parameters:</para>
<variablelist>
<varlistentry>
<term><parameter>BOOT_LDFLAGS="-static"</parameter></term>
<listitem><para>This tells GCC to link its programs statically.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>bootstrap</parameter></term>
<listitem><para>This target does not just compile GCC, but compiles it
several times. It uses the programs compiled in a first round to
compile itself a second time, and then again a third time. It then
compares these second and third compiles to make sure it can reproduce
itself flawlessly. This also implies that it was compiled
correctly.</para></listitem>
</varlistentry>
</variablelist>
<para>Compilation is now complete. At this point, the test suite would
normally be run, but, as mentioned before, the test suite framework is
not in place yet. The benefits of running the tests at this point
are minimal since the programs from this first pass will soon be
replaced.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Create a symlink:</para>
<para>As a finishing touch, create a symlink. Many programs and
scripts run <command>cc</command> instead of <command>gcc</command>, which is used to keep programs generic
and therefore usable on all kinds of UNIX systems where the GNU C compiler
is not always installed. Running <command>cc</command> leaves the system administrator
free to decide which C compiler to install.</para>
<screen><userinput>ln -s gcc /tools/bin/cc</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-gcc" role="."/></para>
</sect2>
</sect1>

View File

@ -7,6 +7,10 @@
<title>GCC-&gcc-version; - Pass 2</title>
<?dbhtml filename="gcc-pass2.html"?>
<indexterm zone="ch-tools-gcc-pass2">
<primary sortas="a-GCC">GCC</primary>
<secondary>tools, pass 2</secondary></indexterm>
<sect2 role="package"><title/>
<segmentedlist>
@ -15,25 +19,88 @@
<seglistitem><seg>11.0 SBU</seg><seg>274 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gcc.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Re-installation of GCC</title>
<para>Check if there is PTYs for the test suites:</para>
<para>This package is known to have issues when its default
optimization flags (including the <parameter>-march</parameter> and
<parameter>-mcpu</parameter> options) are changed. If any environment
variables that override default optimizations have been defined, such
as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
unset them when building GCC.</para>
<para>The tools required to test GCC and Binutils&mdash;Tcl, Expect
and DejaGNU&mdash;are installed now. GCC and Binutils can now be
rebuilt, linking them against the new Glibc and testing them properly
(if running the test suites in this chapter). Please note that these
test suites are highly dependent on properly functioning PTYs which
are provided by the host. PTYs are most commonly implemented via the
<systemitem class="filesystem">devpts</systemitem> file system. Check
to see if the host system is set up correctly in this regard by
performing a quick test:</para>
<screen><userinput>expect -c "spawn ls"</userinput></screen>
<para>Apply two patches:</para>
<para>The response might be:</para>
<screen><computeroutput>The system has no more ptys.
Ask your system administrator to create more.</computeroutput></screen>
<para>If the above message is received, the host does not have its
PTYs set up properly. In this case, there is no point in running the
test suites for GCC and Binutils until this issue is resolved. Please
consult the LFS Wiki at <ulink url="&wiki-root;"/> for more
information on how to get PTYs working.</para>
<para>Because the C and the C++ compilers will be built, unpack both
the core and the g++ tarballs (as well as test suite, if you want to
run the tests). By unpacking them in the working directory, they will
all unfold into a single <filename
class="directory">gcc-&gcc-version;/</filename> subdirectory.</para>
<para>First correct a known problem and make an essential adjustment:</para>
<screen><userinput>patch -Np1 -i ../gcc-&gcc-version;-no_fixincludes-1.patch
patch -Np1 -i ../gcc-&gcc-version;-specs-2.patch</userinput></screen>
<para>The first patch disables the GCC <command>fixincludes</command>
script. This was briefly mentioned earlier, but a more in-depth
explanation of the fixincludes process is warranted here. Under normal
circumstances, the GCC <command>fixincludes</command> script scans the
system for header files that need to be fixed. It might find that some
Glibc header files on the host system need to be fixed, and will fix
them and put them in the GCC private include directory. In <xref
linkend="chapter-building-system"/>, after the newer Glibc has been
installed, this private include directory will be searched before the
system include directory. This may result in GCC finding the fixed
headers from the host system, which most likely will not match the
Glibc version used for the LFS system.</para>
<para>The second patch changes GCC's default location of the dynamic
linker (typically <filename class="libraryfile">ld-linux.so.2</filename>). It also removes
<filename class="directory">/usr/include</filename> from GCC's include
search path. Patching now rather than adjusting the specs file after
installation ensures that the new dynamic linker is used during the
actual build of GCC. That is, all of the final (and temporary)
binaries created during the build will link against the new
Glibc.</para>
<important><para>The above patches are critical in ensuring a
successful overall build. Do not forget to apply
them.</para></important>
<para>Create a separate build directory again:</para>
<screen><userinput>mkdir ../gcc-build
cd ../gcc-build</userinput></screen>
<para>Before starting to build GCC, remember to unset any environment
variables that override the default optimization flags.</para>
<para>Now prepare GCC for compilation:</para>
<screen><userinput>../gcc-&gcc-version;/configure --prefix=/tools \
@ -42,36 +109,105 @@ cd ../gcc-build</userinput></screen>
--enable-threads=posix --enable-__cxa_atexit \
--enable-languages=c,c++ --disable-libstdcxx-pch</userinput></screen>
<para>The meaning of the new configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--enable-clocale=gnu</parameter></term>
<listitem><para>This option ensures the correct locale model is
selected for the C++ libraries under all circumstances. If the
configure script finds the <emphasis>de_DE</emphasis> locale installed, it will select the
correct gnu locale model. However, if the <emphasis>de_DE</emphasis> locale is not
installed, there is the risk of building Application Binary Interface
(ABI)-incompatible C++ libraries because the incorrect generic locale
model may be selected.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-threads=posix</parameter></term>
<listitem><para>This enables C++ exception handling for multi-threaded
code.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-__cxa_atexit</parameter></term>
<listitem><para>This option allows use of
<emphasis>__cxa_atexit</emphasis>, rather than
<emphasis>atexit</emphasis>, to register C++ destructors for local
statics and global objects. This option is essential for fully
standards-compliant handling of destructors. It also effects the C++
ABI, and therefore results in C++ shared libraries and C++ programs
that are interoperable with other Linux
distributions.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-languages=c,c++</parameter></term>
<listitem><para>This option
ensures that both the C and C++ compilers are built.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-libstdcxx-pch</parameter></term>
<listitem><para>Do not build the pre-compiled header (PCH) for
<filename class="libraryfile">libstdc++</filename>. It takes up a lot of space,
and we have no use for it.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Test the results</para>
<para>There is no need to use the <parameter>bootstrap</parameter>
target now because the compiler being used to compile this GCC was
built from the exact same version of the GCC sources used
earlier.</para>
<para>Compilation is now complete. As previously mentioned, running
the test suites for the temporary tools compiled in this chapter is
not mandatory. To run the GCC test suite anyway, use the following
command:</para>
<screen><userinput>make -k check</userinput></screen>
<para>To get a summary of the test suite results, run this:</para>
<para>The <parameter>-k</parameter> flag is used to make the test suite run
through to completion and not stop at the first failure. The GCC test
suite is very comprehensive and is almost guaranteed to generate a few
failures. To receive a summary of the test suite results, run:</para>
<screen><userinput>../gcc-&gcc-version;/contrib/test_summary</userinput></screen>
<para>For only the summaries, pipe the output through
<userinput>grep -A7 Summ</userinput></para>
<userinput>grep -A7 Summ</userinput>.</para>
<para>Results can be compared to those posted to the gcc-testresults
mailing list to see similar configurations to the one being built. For an example of how
current GCC-&gcc-version; should look on i686-pc-linux-gnu, see
<ulink url="http://gcc.gnu.org/ml/gcc-testresults/2004-11/msg00569.html"/>.</para>
mailing list to see similar configurations to the one being built. For
an example of how current GCC-&gcc-version; should look on
i686-pc-linux-gnu, see <ulink
url="http://gcc.gnu.org/ml/gcc-testresults/2004-07/msg00179.html"/>.</para>
<para>And finally install the package:</para>
<para>A few unexpected failures cannot always be avoided. The
GCC developers are usually aware of these issues, but have not
resolved them yet. Unless the test results are vastly different from
those at the above URL, it is safe to continue.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<note><para>At this point it is strongly recommended to repeat the sanity check
we performed earlier in this chapter. Refer back to
<xref linkend="ch-tools-adjusting"/> and repeat the little test compilation. If
the result is wrong, then most likely you forgot to apply the above mentioned
GCC Specs patch.</para></note>
<note><para>At this point it is strongly recommended to repeat the
sanity check we performed earlier in this chapter. Refer back to <xref
linkend="ch-tools-adjusting" role=","/> and repeat the test compilation. If
the result is wrong, the most likely reason is that the GCC Specs
patch was not properly applied.</para></note>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-gcc" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Gettext-&gettext-version;</title>
<?dbhtml filename="gettext.html"?>
<indexterm zone="ch-tools-gettext">
<primary sortas="a-Gettext">Gettext</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gettext.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.5 SBU</seg><seg>55 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gettext.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -25,17 +32,46 @@
<screen><userinput>./configure --prefix=/tools --disable-libasprintf \
--disable-csharp</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--disable-libasprintf</parameter></term>
<listitem><para>This flag tells Gettext not to build the
<filename class="libraryfile">asprintf</filename> library. Because nothing in this
chapter or the next requires this library and Gettext gets rebuilt later,
exclude it to save time and space.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-csharp</parameter></term>
<listitem><para>This tells Gettext not to use a C# compiler, even if a
C# compiler is installed on the host. This needs to be done because
once we enter the chroot environment, C# will no longer be
available.</para></listitem>
</varlistentry>
</variablelist>
<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>.
This takes quite some time, around 7 SBUs. The Gettext test suite is
known to experience failures under certain host conditions, for
example when it finds a Java compiler on the host. An experimental
patch to disable Java is available from the LFS Patches project at
<ulink url="&lfs-root;patches/"/>.</para>
<para>And install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref linkend="contents-gettext" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Glibc-&glibc-version;</title>
<?dbhtml filename="glibc.html"?>
<indexterm zone="ch-tools-glibc">
<primary sortas="a-Glibc">Glibc</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/glibc.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,12 +20,26 @@
<seglistitem><seg>11.8 SBU</seg><seg>800 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/glibc.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Installation of Glibc</title>
<para>Create a build dir:</para>
<para>This package is known to have issues when its default
optimization flags (including the <parameter>-march</parameter> and
<parameter>-mcpu</parameter> options) are changed. If any environment
variables that override default optimizations have been defined, such
as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
unset them when building Glibc.</para>
<para>It should be noted that compiling Glibc in any way other than
the method suggested in this book puts the stability of the system at
risk.</para>
<para>The Glibc documentation recommends building Glibc outside of the source
directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../glibc-build
cd ../glibc-build</userinput></screen>
@ -33,32 +52,153 @@ cd ../glibc-build</userinput></screen>
--without-gd --without-cvs --with-headers=/tools/include \
--disable-selinux</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--disable-profile</parameter></term>
<listitem><para>This builds the libraries without profiling
information. Omit this option if profiling on the temporary tools is
necessary.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-add-ons</parameter></term>
<listitem><para>This tells Glibc to use the NPTL add-on as its threading
library.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-kernel=2.6.0</parameter></term>
<listitem><para>This tells Glibc to compile the library with support
for 2.6.x Linux kernels.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-binutils=/tools/bin</parameter></term>
<listitem><para>While not required, this switch ensures that there are
no errors pertaining to which Binutils programs get used during the
Glibc build.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--without-gd</parameter></term>
<listitem><para>This prevents the build of the
<command>memusagestat</command> program, which insists on linking
against the host's libraries (libgd, libpng, libz,
etc.).</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--without-cvs</parameter></term>
<listitem><para>This prevents the Makefile files from
attempting automatic CVS checkouts when using a CVS snapshot. While
this command is not required, it is recommended because it suppresses
an annoying, but harmless, warning about a missing autoconf
program.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-headers=/tools/include</parameter></term>
<listitem><para>This tells Glibc to compile itself against the headers recently
installed to the tools directory, so that it knows exactly what features the
kernel has and can optimize itself accordingly.</para></listitem>
</varlistentry>
<!-- Edit Me -->
<varlistentry>
<term><parameter>--disable-selinux</parameter></term>
<listitem><para>When building from hosts using SELinux functionality
(i.e. Fedora Core 3), glibc will try to integrate this functionality into
itself, but will fail, because we do not have this functionality in the LFS
tools enviornment. This option will disable this, allowing glibc to build
correctly, but will not otherwise affect the build.</para></listitem>
</varlistentry>
<!-- -->
</variablelist>
<para>During this stage the following warning might appear:</para>
<blockquote><screen><computeroutput>configure: WARNING:
*** These auxiliary programs are missing or
*** incompatible versions: msgfmt
*** some features will be disabled.
*** Check the INSTALL file for required versions.</computeroutput></screen></blockquote>
<para>The missing or incompatible <command>msgfmt</command> program is
generally harmless, but it can sometimes cause issues when running the
test suite. This <command>msgfmt</command> program is part of the
Gettext package which the host distribution should provide. If
<command>msgfmt</command> is present but deemed incompatible, upgrade
the host system's Gettext package or continue without it and see if
the test suite runs without problems regardless.</para>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Test the results:</para>
<para>Compilation is now complete. As mentioned earlier, running the
test suites for the temporary tools installed in this chapter is not
mandatory. To run the Glibc test suite (if desired), the following
command will do so:</para>
<screen><userinput>make check</userinput></screen>
<para>For a discussion of test failures that are of particular
importance, please see <xref linkend="ch-system-glibc"/>.</para>
importance, please see <xref linkend="ch-system-glibc" role="."/></para>
<para>In this chapter, some tests can be adversely effected by
existing tools or environmental issues on the host system. Glibc test
suite failures in this chapter are typically not worrisome. The Glibc
installed in <xref linkend="chapter-building-system"/> is the one that
will ultimately end up being used, so that is the one that needs to pass
most tests (even in <xref linkend="chapter-building-system"/>, some
failures could still occur, for example, with the math tests).</para>
<para>When experiencing a failure, make a note of it, then continue by
reissuing the <command>make check</command> command. The test suite should pick up where it left
off and continue. This stop-start sequence can be circumvented by
issuing a <command>make -k check</command> command. If using this option, be sure to log the
output so that the log file can be examined for failures later.</para>
<para>The install stage of Glibc will issue a harmless warning at the
end about the absence of <filename>/tools/etc/ld.so.conf</filename>.
Prevent this warning with:</para>
<screen><userinput>mkdir /tools/etc
touch /tools/etc/ld.so.conf</userinput></screen>
<para>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>To install the Glibc locales, use the following
<para>Different countries and cultures have varying conventions for
how to communicate. These conventions range from the format for
representing dates and times to more complex issues, such as the
language spoken. The <quote>internationalization</quote> of GNU
programs works by locale.</para>
<note><para>If the test suites are not being run in this chapter (as
per the recommendation), there is no need to install the locales now.
The appropriate locales will be installed in the next
chapter.</para></note>
<para>To install the Glibc locales anyway, use the following
command:</para>
<screen><userinput>make localedata/install-locales</userinput></screen>
<para>An alternative to running the previous command is to install only those
locales which you need or want. The following instructions, instead of the
install-locales target above, will install the minimum set of locales necessary
<para>To save time, an alternative to running the
previous command (which generates and installs every locale Glibc is
aware of) is to install only those locales that are wanted and needed.
This can be achieved by using the <command>localedef</command>
command. Information on this command is located in the
<filename>INSTALL</filename> file in the Glibc source. However, there
are a number of locales that are essential in order for the tests of
future packages to pass, in particular, the
<emphasis>libstdc++</emphasis> tests from GCC. The following
instructions, instead of the <parameter>install-locales</parameter>
target used above, will install the minimum set of locales necessary
for the tests to run successfully:</para>
<screen><userinput>mkdir -p /tools/lib/locale
@ -76,4 +216,10 @@ localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-glibc" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Grep-&grep-version;</title>
<?dbhtml filename="grep.html"?>
<indexterm zone="ch-tools-grep">
<primary sortas="a-Grep">Grep</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/grep.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.1 SBU</seg><seg>5.8 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/grep.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -25,12 +32,32 @@
<screen><userinput>./configure --prefix=/tools \
--disable-perl-regexp --with-included-regex</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--disable-perl-regexp</parameter></term>
<listitem><para>This makes sure that the <command>grep</command>
program does not get linked against a Perl Compatible Regular
Expression (PCRE) library that may be present on the host and would
not be available once we enter the chroot
environment.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--with-included-regex</parameter></term>
<listitem><para>This ensures that Grep uses its internal regular
expression code. Without this switch, Grep will use the code from
Glibc, which is known to be buggy.</para></listitem>
</varlistentry>
</variablelist>
<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>
@ -38,4 +65,10 @@
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-grep" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Gzip-&gzip-version;</title>
<?dbhtml filename="gzip.html"?>
<indexterm zone="ch-tools-gzip">
<primary sortas="a-Gzip">Gzip</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gzip.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.1 SBU</seg><seg>2.6 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/gzip.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,10 +35,18 @@
<screen><userinput>make</userinput></screen>
<para>And install it:</para>
<para>This package does not come with a test suite.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-gzip" role="."/></para>
</sect2>
</sect1>

View File

@ -7,6 +7,34 @@
<title>Host System Requirements</title>
<?dbhtml filename="hostreqs.html"?>
<para>See testing.</para>
<para>The host must be running at least a 2.6.2 kernel compiled with
GCC-3.0 or higher. There are two main reasons for this high
requirement. First, the Native POSIX Threading Library (NPTL)
test suite will segfault if the host's kernel has not been compiled with
GCC-3.0 or a later version. Secondly, the 2.6.2 or later version of
the kernel is required for the use of Udev. Udev creates devices
dynamically by reading from the <systemitem
class="filesystem">sysfs</systemitem> file system. However, support
for this filesystem has only recently been implemented in most of
the kernel drivers. We must be sure that all critical system devices
get created properly.</para>
<para>In order to determine whether the host kernel meets the
requirements outlined above, run the following command:</para>
<screen><userinput>cat /proc/version</userinput></screen>
<para>This will produce output similar to:</para>
<screen><computeroutput>Linux version 2.6.2 (user@host) (gcc version 3.4.0) #1
Tue Apr 20 21:22:18 GMT 2004</computeroutput></screen>
<para>If the results of the above command state that the host kernel
was not compiled using a GCC-3.0 (or later) compiler, one will need to
be compiled. The host system will then need to be rebooted to use the
newly compiled kernel. Instructions for compiling the kernel and
configuring the boot loader (assuming the host uses GRUB) are located
in <xref linkend="chapter-bootable"/>.</para>
</sect1>

View File

@ -7,6 +7,61 @@
<title>Introduction</title>
<?dbhtml filename="introduction.html"?>
<para>See testing.</para>
<para>This chapter shows how to compile and install a minimal Linux
system. This system will contain just enough tools to start
constructing the final LFS system in <xref
linkend="chapter-building-system"/> and allow a working environment
with more user convenience than a minimum environment would.</para>
<para>There are two steps in building this minimal system. The first
step is to build a new and host-independent toolchain (compiler,
assembler, linker, libraries, and a few useful utilities). The second
step uses this toolchain to build the other essential tools.</para>
<para>The files compiled in this chapter will be installed under the
<filename class="directory">$LFS/tools</filename> directory to keep
them separate from the files installed in the next chapter and the
host production directories. Since the packages compiled here are
temporary, we do not want them to pollute the soon-to-be LFS
system.</para>
<para>Before issuing the build instructions for a package, the package
should be unpacked as user <emphasis>lfs</emphasis>, and a
<command>cd</command> into the created directory should be performed. The build
instructions assume that the <command>bash</command> shell is in use.</para>
<para>Several of the packages are patched before compilation, but only
when the patch is needed to circumvent a problem. A patch is often
needed in both this and the next chapter, but sometimes in only one or
the other. Therefore, do not be concerned if instructions for a downloaded
patch seem to be missing. Warning messages about
<emphasis>offset</emphasis> or <emphasis>fuzz</emphasis> may
also be encountered when applying a patch. Do not worry about these
warnings, as the patch was still successfully applied.</para>
<para>During the compilation of most packages, there will be several
warnings that scroll by on the screen. These are normal and can safely
be ignored. These warnings are as they appear&mdash;warnings about
deprecated, but not invalid, use of the C or C++ syntax. C standards
change fairly often, and some packages still use the older standard.
This is not a problem, but does prompt the warning.</para>
<para>After installing each package, delete its source and build
directories, unless specifically instructed otherwise. Deleting the
sources saves space and 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>
<para>Check one last time that the <envar>LFS</envar> environment
variable is set up properly:</para>
<screen><userinput>echo $LFS</userinput></screen>
<para>Make sure the output shows the path to the LFS partition's mount
point, which is <filename class="directory">/mnt/lfs</filename>, using
our example.</para>
</sect1>

View File

@ -7,7 +7,14 @@
<title>Linux-Libc-Headers-&linux-libc-headers-version;</title>
<?dbhtml filename="linux-libc-headers.html"?>
<indexterm zone="ch-tools-linux-libc-headers">
<primary sortas="a-Linux-Libc-Headers">Linux-Libc-Headers</primary>
<secondary>tools, headers</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
href="../chapter06/linux-libc-headers.xml"
xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,16 +22,38 @@
<seglistitem><seg>0.1 SBU</seg><seg>22 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude"
href="../chapter06/linux-libc-headers.xml"
xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Installation of Linux-Libc-Headers</title>
<para>For years it has been common practice to use <quote>raw</quote> kernel
headers (straight from a kernel tarball) in <filename
class="directory">/usr/include</filename>, but over the
last few years, the kernel developers have taken a strong stance that
this should not be done. This gave birth to the Linux-Libc-Headers
Project, which was designed to maintain an Application Programming
Interface (API) stable version of the Linux headers.</para>
<para>Install the header files:</para>
<screen><userinput>cp -R include/asm-i386 /tools/include/asm
cp -R include/linux /tools/include</userinput></screen>
<para>If your architecture is not i386 (compatible), adjust the first command
accordingly.</para>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-linux-libc-headers" role="."/></para>
</sect2>
</sect1>

View File

@ -3,11 +3,16 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-m4" xreflabel="M4" role="wrap">
<sect1 id="ch-tools-m4" role="wrap">
<title>M4-&m4-version;</title>
<?dbhtml filename="m4.html"?>
<indexterm zone="ch-tools-m4">
<primary sortas="a-M4">M4</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/m4.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.1 SBU</seg><seg>3.0 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/m4.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,13 +35,19 @@
<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>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-m4" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Make-&make-version;</title>
<?dbhtml filename="make.html"?>
<indexterm zone="ch-tools-make">
<primary sortas="a-Make">Make</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/make.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.2 SBU</seg><seg>8.8 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/make.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,8 +35,8 @@
<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>
@ -37,4 +44,10 @@
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-make" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Ncurses-&ncurses-version;</title>
<?dbhtml filename="ncurses.html"?>
<indexterm zone="ch-tools-ncurses">
<primary sortas="a-Ncurses">Ncurses</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/ncurses.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.7 SBU</seg><seg>26 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/ncurses.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -25,14 +32,43 @@
<screen><userinput>./configure --prefix=/tools --with-shared \
--without-debug --without-ada --enable-overwrite</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--without-ada</parameter></term>
<listitem><para>This tells Ncurses not to build its Ada bindings, even
if an Ada compiler is installed on the host. This needs to be done
because once we enter the chroot environment, Ada will no longer be
available.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-overwrite</parameter></term>
<listitem><para>This tells Ncurses to install its header files into
<filename class="directory">/tools/include</filename>, instead of
<filename class="directory">/tools/include/ncurses</filename>, to
ensure that other packages can find the Ncurses headers
successfully.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>This package does not come with a test suite.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-ncurses" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Patch-&patch-version;</title>
<?dbhtml filename="patch.html"?>
<indexterm zone="ch-tools-patch">
<primary sortas="a-Patch">Patch</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/patch.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.1 SBU</seg><seg>1.9 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/patch.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -24,14 +31,26 @@
<screen><userinput>CPPFLAGS=-D_GNU_SOURCE ./configure --prefix=/tools</userinput></screen>
<para>The preprocessor flag <parameter>-D_GNU_SOURCE</parameter> is
only needed on the PowerPC platform. It can be left out on other
architectures.</para>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>This package does not come with a test suite.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-patch" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Perl-&perl-version;</title>
<?dbhtml filename="perl.html"?>
<indexterm zone="ch-tools-perl">
<primary sortas="a-Perl">Perl</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/perl.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,24 +20,45 @@
<seglistitem><seg>0.8 SBU</seg><seg>74 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/perl.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Installation of Perl</title>
<para>First adapt some hard-wired paths to the C library:</para>
<para>First adapt some hard-wired paths to the C library by applying
the following patch:</para>
<screen><userinput>patch -Np1 -i ../perl-&perl-version;-libc-1.patch</userinput></screen>
<para>Now prepare Perl for compilation:</para>
<para>Prepare Perl for compilation (make sure to get the 'IO Fcntl POSIX'
part of the command correct&mdash;they are all letters):</para>
<screen><userinput>./configure.gnu --prefix=/tools -Dstatic_ext='IO Fcntl POSIX'</userinput></screen>
<para>The meaning of the configure option:</para>
<variablelist>
<varlistentry>
<term><parameter>-Dstatic_ext='IO Fcntl POSIX'</parameter></term>
<listitem><para>This tells Perl to build the minimum set of static
extensions needed for installing and testing the Coreutils package in
the next chapter.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile only the required tools:</para>
<screen><userinput>make perl utilities</userinput></screen>
<para>Then copy these tools and their libraries:</para>
<para>Although Perl comes with a test suite, it is not recommended to
run it at this point. Only part of Perl was built and running
<userinput>make test</userinput> now will cause the rest of Perl to be
built as well, which is unnecessary at this point. The test suite can
be run in the next chapter if desired.</para>
<para>Copy these tools and their libraries:</para>
<screen><userinput>cp perl pod/pod2man /tools/bin
mkdir -p /tools/lib/perl5/&perl-version;
@ -40,4 +66,10 @@ cp -R lib/* /tools/lib/perl5/&perl-version;</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-perl" role="."/></para>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Sed-&sed-version;</title>
<?dbhtml filename="sed.html"?>
<indexterm zone="ch-tools-sed">
<primary sortas="a-Sed">Sed</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/sed.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.2 SBU</seg><seg>5.2 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/sed.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,8 +35,8 @@
<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>
@ -37,4 +44,10 @@
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-sed" role="."/></para>
</sect2>
</sect1>

View File

@ -7,13 +7,32 @@
<title>Stripping</title>
<?dbhtml filename="stripping.html"?>
<para>Strip the programs and libraries:</para>
<para>The steps in this section are optional, but if the LFS partition
is rather small, it is beneficial to learn that unnecessary items can
be removed. The executables and libraries built so far contain about
130 MB of unneeded debugging symbols. Remove those symbols
with:</para>
<screen><userinput>strip --strip-debug /tools/lib/*
strip --strip-unneeded /tools/{,s}bin/*</userinput></screen>
<para>Remove the documentation:</para>
<para>The last of the above commands will skip some twenty files,
reporting that it does not recognize their file format. Most of these
are scripts instead of binaries.</para>
<para>Take care <emphasis>not</emphasis> to use
<parameter>--strip-unneeded</parameter> on the libraries. The static
ones would be destroyed and the toolchain packages would need to be
built all over again.</para>
<para>To save another 30 MB, remove the documentation:</para>
<screen><userinput>rm -rf /tools/{doc,info,man}</userinput></screen>
<para>There will now be at least 850 MB of free space on the LFS file
system that can be used to build and install Glibc in the next phase.
If you can build and install Glibc, you can build and install the rest
too.</para>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Tar-&tar-version;</title>
<?dbhtml filename="tar.html"?>
<indexterm zone="ch-tools-tar">
<primary sortas="a-Tar">Tar</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/tar.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.2 SBU</seg><seg>10 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/tar.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,8 +35,8 @@
<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>
@ -37,4 +44,10 @@
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-tar" role="."/></para>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-tools-tcl" xreflabel="Tcl" role="wrap">
<sect1 id="ch-tools-tcl" role="wrap">
<title>Tcl-&tcl-version;</title>
<?dbhtml filename="tcl.html"?>
<indexterm zone="ch-tools-tcl"><primary sortas="a-Tcl">Tcl</primary></indexterm>
<sect2 role="package"><title/>
<para>The Tcl package contains the Tool Command Language.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,11 +18,26 @@
<seglistitem><seg>0.9 SBU</seg><seg>23 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Tcl installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Tcl</title>
<para>This package and the next two (Expect and DejaGNU) are
installed to support running the test suites for GCC and Binutils.
Installing three packages for testing purposes may seem excessive, but
it is very reassuring, if not essential, to know that the most
important tools are working properly. Even if the test suites are not
run in this chapter (they are not mandatory), these packages
are required to run the test suites in <xref
linkend="chapter-building-system"/>.</para>
<para>Prepare Tcl for compilation:</para>
<screen><userinput>cd unix
@ -31,14 +47,22 @@
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>TZ=UTC make test</userinput>.</para>
<para>To test the results, issue: <userinput>TZ=UTC make
test</userinput>. The Tcl test suite is known to experience failures
under certain host conditions that are not fully understood.
Therefore, test suite failures here are not surprising, and are not
considered critical. The <parameter>TZ=UTC</parameter> parameter sets
the time zone to Coordinated Universal Time (UTC), also known as
Greenwich Mean Time (GMT), but only for the duration of the test suite
run. This ensures that the clock tests are exercised correctly.
Details on the <envar>TZ</envar> environment variable is provided in
<xref linkend="chapter-bootscripts"/>.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<warning><para><emphasis>Do not remove</emphasis> the
<warning><para><emphasis>Do not</emphasis> remove the
<filename class="directory">tcl&tcl-version;</filename> source directory yet, as the next package
will need its internal headers.</para></warning>
@ -50,8 +74,41 @@ will need its internal headers.</para></warning>
<sect2 id="contents-tcl" role="content"><title>Contents of Tcl</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem><seg>tclsh (link to tclsh8.4) and tclsh8.4</seg><seg>libtcl8.4.so</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="tclsh8.4">
<term><command>tclsh8.4</command></term>
<listitem>
<para>The Tcl command shell</para>
<indexterm zone="ch-tools-tcl tclsh8.4"><primary sortas="b-tclsh8.4">tclsh8.4</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="tclsh">
<term><command>tclsh</command></term>
<listitem>
<para>A link to tclsh8.4</para>
<indexterm zone="ch-tools-tcl tclsh"><primary sortas="b-tclsh">tclsh</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libtcl8.4.so">
<term><filename class="libraryfile">libtcl8.4.so</filename></term>
<listitem>
<para>The Tcl library</para>
<indexterm zone="ch-tools-tcl libtcl8.4.so"><primary sortas="c-libtcl8.4.so">libtcl8.4.so</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Texinfo-&texinfo-version;</title>
<?dbhtml filename="texinfo.html"?>
<indexterm zone="ch-tools-texinfo">
<primary sortas="a-Texinfo">Texinfo</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/texinfo.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,6 +20,8 @@
<seglistitem><seg>0.2 SBU</seg><seg>16 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/texinfo.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
@ -28,8 +35,8 @@
<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>
@ -37,4 +44,10 @@
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-texinfo" role="."/></para>
</sect2>
</sect1>

View File

@ -7,6 +7,218 @@
<title>Toolchain Technical Notes</title>
<?dbhtml filename="toolchaintechnotes.html"?>
<para>See testing</para>
<para>This section explains some of the rationale and technical
details behind the overall build method. It is not essential to
immediately understand everything in this section. Most of this
information will be clearer after performing an actual build. This
section can be referred back to at any time during the process.</para>
<para>The overall goal of <xref linkend="chapter-temporary-tools"/> is
to provide a temporary environment that can be chrooted into and from
which can be produced a clean, trouble-free build of the target LFS
system in <xref linkend="chapter-building-system"/>. Along the way, we
separate from the host system as much as possible, and in doing so,
build a self-contained and self-hosted toolchain. It should be noted
that the build process has been designed to minimize the risks for new
readers and provide maximum educational value at the same time. In
other words, more advanced techniques could be used to build the
system.</para>
<important>
<para>Before continuing, be aware of the name of the working platform,
often referred to as the target triplet. Many times, the target
triplet will probably be <emphasis>i686-pc-linux-gnu</emphasis>. A
simple way to determine the name of the target triplet is to run the
<command>config.guess</command> script that comes with the source for
many packages. Unpack the Binutils sources and run the script:
<userinput>./config.guess</userinput> and note the output.</para>
<para>Also be aware of the name of the platform's dynamic linker,
often referred to as the dynamic loader (not to be confused with the
standard linker <command>ld</command> that is part of Binutils). The
dynamic linker provided by Glibc finds and loads the shared libraries
needed by a program, prepares the program to run, and then runs it.
The name of the dynamic linker will usually be
<filename class="libraryfile">ld-linux.so.2</filename>. On platforms that are less
prevalent, the name might be <filename class="libraryfile">ld.so.1</filename>,
and newer 64 bit platforms might be named something else entirely. The name of
the platform's dynamic linker can be determined by looking in the
<filename class="directory">/lib</filename> directory on the host
system. A sure-fire way to determine the name is to inspect a random
binary from the host system by running: <userinput>readelf -l &lt;name
of binary&gt; | grep interpreter</userinput> and noting the output.
The authoritative reference covering all platforms is in the
<filename>shlib-versions</filename> file in the root of the Glibc
source tree.</para>
</important>
<para>Some key technical points of how the <xref linkend="chapter-temporary-tools"/> build
method works:</para>
<itemizedlist>
<listitem><para>The process is similar in principle to
cross-compiling, whereby tools installed in the same prefix work in
cooperation, and thus utilize a little GNU
<quote>magic</quote></para></listitem>
<listitem><para>Careful manipulation of the standard linker's library
search path ensures programs are linked only against chosen
libraries</para></listitem>
<listitem><para>Careful manipulation of <command>gcc</command>'s
<filename>specs</filename> file tell the compiler which target dynamic
linker will be used</para></listitem>
</itemizedlist>
<para>Binutils is installed first because the
<command>./configure</command> runs of both GCC and Glibc perform
various feature tests on the assembler and linker to determine which
software features to enable or disable. This is more important than
one might first realize. An incorrectly configured GCC or Glibc can
result in a subtly broken toolchain, where the impact of such breakage
might not show up until near the end of the build of an entire
distribution. A test suite failure will usually alert this error
before too much additional work is performed.</para>
<para>Binutils installs its assembler and linker in two locations,
<filename class="directory">/tools/bin</filename> and <filename
class="directory">/tools/$TARGET_TRIPLET/bin</filename>. The tools in
one location are hard linked to the other. An important facet of the
linker is its library search order. Detailed information can be
obtained from <command>ld</command> by passing it the
<parameter>--verbose</parameter> flag. For example, an <userinput>ld
--verbose | grep SEARCH</userinput> will illustrate the current search
paths and their order. It shows which files are linked by
<command>ld</command> by compiling a dummy program and passing the
<parameter>--verbose</parameter> switch to the linker. For example,
<userinput>gcc dummy.c -Wl,--verbose 2&gt;&amp;1 | grep
succeeded</userinput> will show all the files successfully opened
during the linking.</para>
<para>The next package installed is GCC. An example of what can be
seen during its run of <command>./configure</command> is:</para>
<screen><computeroutput>checking what assembler to use...
/tools/i686-pc-linux-gnu/bin/as
checking what linker to use... /tools/i686-pc-linux-gnu/bin/ld</computeroutput></screen>
<para>This is important for the reasons mentioned above. It also
demonstrates that GCC's configure script does not search the PATH
directories to find which tools to use. However, during the actual
operation of <command>gcc</command> itself, the same
search paths are not necessarily used. To find out which standard
linker <command>gcc</command> will use, run: <userinput>gcc
-print-prog-name=ld</userinput>.</para>
<para>Detailed information can be obtained from <command>gcc</command>
by passing it the <parameter>-v</parameter> command line option while
compiling a dummy program. For example, <userinput>gcc -v
dummy.c</userinput> will show detailed information about the
preprocessor, compilation, and assembly stages, including
<command>gcc</command>'s included search paths and their order.</para>
<para>The next package installed is Glibc. The most important
considerations for building Glibc are the compiler, binary tools, and
kernel headers. The compiler is generally not an issue since Glibc
will always use the <command>gcc</command> found in a
<envar>PATH</envar> directory.
The binary tools and kernel headers can be a bit more complicated.
Therefore, take no risks and use the available configure switches to
enforce the correct selections. After the run of
<command>./configure</command>, check the contents of the
<filename>config.make</filename> file in the <filename
class="directory">glibc-build</filename> directory for all important
details. Note the use of <parameter>CC="gcc -B/tools/bin/"</parameter>
to control which binary tools are used and the use of the
<parameter>-nostdinc</parameter> and <parameter>-isystem</parameter>
flags to control the compiler's include search path. These items
highlight an important aspect of the Glibc package&mdash;it is very
self-sufficient in terms of its build machinery and generally does not
rely on toolchain defaults.</para>
<para>After the Glibc installation, make some adjustments to ensure
that searching and linking take place only within the <filename
class="directory">/tools</filename> prefix. Install an adjusted
<command>ld</command>, which has a hard-wired search path limited to
<filename class="directory">/tools/lib</filename>. Then amend
<command>gcc</command>'s specs file to point to the new dynamic linker
in <filename class="directory">/tools/lib</filename>. This last step
is vital to the whole process. As mentioned above, a hard-wired path
to a dynamic linker is embedded into every Executable and Link Format
(ELF)-shared executable. This can be inspected by running:
<userinput>readelf -l &lt;name of binary&gt; | grep
interpreter</userinput>. Amending gcc's specs file
ensures that every program compiled from here through the end of this
chapter will use the new dynamic linker in <filename
class="directory">/tools/lib</filename>.</para>
<para>The need to use the new dynamic linker is also the reason why
the Specs patch is applied for the second pass of GCC. Failure to do
so will result in the GCC programs themselves having the name of the
dynamic linker from the host system's <filename
class="directory">/lib</filename> directory embedded into them, which
would defeat the goal of getting away from the host.</para>
<para>During the second pass of Binutils, we are able to utilize the
<parameter>--with-lib-path</parameter> configure switch to control
<command>ld</command>'s library search path. From this point onwards,
the core toolchain is self-contained and self-hosted. The remainder of
the <xref linkend="chapter-temporary-tools"/> packages all build
against the new Glibc in <filename
class="directory">/tools</filename>.</para>
<para>Upon entering the chroot environment in <xref
linkend="chapter-building-system"/>, the first major package to be
installed is Glibc, due to its self-sufficient nature mentioned above.
Once this Glibc is installed into <filename
class="directory">/usr</filename>, perform a quick changeover of the
toolchain defaults, then proceed in building the rest of the target
LFS system.</para>
<sect2>
<title>Notes on Static Linking</title>
<para>Besides their specific task, most programs have to perform many
common and sometimes trivial operations. These include allocating
memory, searching directories, reading and writing files, string
handling, pattern matching, arithmetic, and other tasks. Instead of
obliging each program to reinvent the wheel, the GNU system provides
all these basic functions in ready-made libraries. The major library
on any Linux system is Glibc.</para>
<para>There are two primary ways of linking the functions from a
library to a program that uses them&mdash;statically or dynamically. When
a program is linked statically, the code of the used functions is
included in the executable, resulting in a rather bulky program. When
a program is dynamically linked, it includes a reference to the
dynamic linker, the name of the library, and the name of the function,
resulting in a much smaller executable. A third option is to use the
programming interface of the dynamic linker (see the
<emphasis>dlopen</emphasis> man page for more information).</para>
<para>Dynamic linking is the default on Linux and has three major
advantages over static linking. First, only one copy of the executable
library code is needed on the hard disk, instead of having multiple
copies of the same code included in several programs, thus saving
disk space. Second, when several programs use the same library
function at the same time, only one copy of the function's code is
required in core, thus saving memory space. Third, when a library
function gets a bug fixed or is otherwise improved, only the one
library needs to be recompiled instead of recompiling all programs
that make use of the improved function.</para>
<para>If dynamic linking has several advantages, why then do we
statically link the first two packages in this chapter? The reasons
are threefold&mdash;historical, educational, and technical. The
historical reason is that earlier versions of LFS statically linked
every program in this chapter. Educationally, knowing the difference
between static and dynamic linking is useful. The technical benefit is
a gained element of independence from the host, meaning that those
programs can be used independently of the host system. However, it is
worth noting that an overall successful LFS build can still be
achieved when the first two packages are built dynamically.</para>
</sect2>
</sect1>

View File

@ -1,40 +0,0 @@
<?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-tools-udev" role="wrap">
<title>Udev-&udev-version;</title>
<?dbhtml filename="udev.html"?>
<sect2 role="package"><title/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
<seglistitem><seg>0.2 SBU</seg><seg>5.2 MB</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Udev</title>
<para>The following patch makes Udev respect the DESTDIR variable:</para>
<screen><userinput>patch -Np1 -i ../udev-&udev-version;-DESTDIR-1.patch</userinput></screen>
<para>Now compile Udev:</para>
<screen><userinput>make prefix=/tools udevdir=/dev</userinput></screen>
<para>Install the package:</para>
<screen><userinput>make DESTDIR=/tools udevdir=/dev install</userinput></screen>
<screen><userinput>cp ../udev-config-2.permissions /tools/etc/udev/permissions.d/00-lfs.permissions
cp ../udev-config-1.rules /tools/etc/udev/rules.d/00-lfs.rules</userinput></screen>
</sect2>
</sect1>

View File

@ -7,7 +7,12 @@
<title>Util-linux-&util-linux-version;</title>
<?dbhtml filename="util-linux.html"?>
<indexterm zone="ch-tools-util-linux">
<primary sortas="a-Util-linux">Util-linux</primary>
<secondary>tools</secondary></indexterm>
<sect2 role="package"><title/>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/util-linux.xml" xpointer="xpointer(/sect1/sect2[1]/para[1])"/>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -15,12 +20,16 @@
<seglistitem><seg>0.2 SBU</seg><seg>16 MB</seg></seglistitem>
</segmentedlist>
<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="../chapter06/util-linux.xml" xpointer="xpointer(/sect1/sect2[1]/segmentedlist[2])"/>
</sect2>
<sect2 role="installation">
<title>Installation of Util-linux</title>
<para>Issue a sed sustitution:</para>
<para>Util-linux does not use the freshly installed headers and
libraries from the <filename class="directory">/tools</filename>
directory. This is fixed by altering the configure script:</para>
<screen><userinput>sed -i 's@/usr/include@/tools/include@g' configure</userinput></screen>
@ -32,14 +41,23 @@
<screen><userinput>make -C lib</userinput></screen>
<para>Build the needed utilities:</para>
<para>Since only a couple of the utilities contained in this package
are needed, build only those:</para>
<screen><userinput>make -C mount mount umount
make -C text-utils more</userinput></screen>
<para>Now copy these programs to the temporary tools directory:</para>
<para>This package does not come with a test suite.</para>
<para>Copy these programs to the temporary tools directory:</para>
<screen><userinput>cp mount/{,u}mount text-utils/more /tools/bin</userinput></screen>
</sect2>
<sect2 role="content"><title/>
<para>Details on this package are located in <xref
linkend="contents-utillinux" role="."/></para>
</sect2>
</sect1>

View File

@ -7,6 +7,45 @@
<title>About Debugging Symbols</title>
<?dbhtml filename="aboutdebug.html"?>
<para>See testing</para>
<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"><phrase
condition="pdf">&hints-root; optimization.txt</phrase></ulink>.</para>
</sect1>

View File

@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-autoconf" xreflabel="Autoconf" role="wrap">
<sect1 id="ch-system-autoconf" role="wrap">
<title>Autoconf-&autoconf-version;</title>
<?dbhtml filename="autoconf.html"?>
<indexterm zone="ch-system-autoconf"><primary sortas="a-Autoconf">Autoconf</primary></indexterm>
<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>
@ -17,6 +19,11 @@
<seglistitem><seg>0.5 SBU</seg><seg>7.7 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Autoconf installation depends on</segtitle>
<seglistitem><seg>Bash, Coreutils, Diffutils, Grep,
M4, Make, Perl, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -31,7 +38,7 @@
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput></para>
<userinput>make check</userinput>. This takes a long time, about 2 SBUs.</para>
<para>Install the package:</para>
@ -39,11 +46,97 @@
</sect2>
<sect2 id="contents-autoconf" role="content"><title>Contents of Autoconf</title>
<para>See testing</para>
<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"?>
<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>

View File

@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-automake" xreflabel="Automake" role="wrap">
<sect1 id="ch-system-automake" role="wrap">
<title>Automake-&automake-version;</title>
<?dbhtml filename="automake.html"?>
<indexterm zone="ch-system-automake"><primary sortas="a-Automake">Automake</primary></indexterm>
<sect2 role="package"><title/>
<para>The Automake package contains programs for generating Makefiles for use
with Autoconf.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +19,11 @@
<seglistitem><seg>0.2 SBU</seg><seg>6.8 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Automake installation depends on</segtitle>
<seglistitem><seg>Autoconf, Bash, Coreutils,
Diffutils, Grep, M4, Make, Perl, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -31,7 +38,7 @@
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput></para>
<userinput>make check</userinput>. This takes a long time, about 5 SBUs.</para>
<para>Install the package:</para>
@ -42,8 +49,168 @@
<sect2 id="contents-automake" role="content"><title>Contents of Automake</title>
<para>See testing</para>
<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"?>
<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 generate 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>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-bash" xreflabel="Bash" role="wrap">
<sect1 id="ch-system-bash" role="wrap">
<title>Bash-&bash-version;</title>
<?dbhtml filename="bash.html"?>
<indexterm zone="ch-system-bash"><primary sortas="a-Bash">Bash</primary></indexterm>
<sect2 role="package"><title/>
<para>The Bash package contains the Bourne-Again SHell.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,16 +18,24 @@
<seglistitem><seg>1.2 SBU</seg><seg>27 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Bash installation depends on</segtitle>
<seglistitem><seg>Binutils, Coreutils, Diffutils, Gawk,
GCC, Glibc, Grep, Make, Ncurses, and Sed.</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Bash</title>
<para>Apply a patch:</para>
<!-- Edit Me -->
<para>The following patch fixes various issues, including a problem where Bash
will sometimes only show 33 characters on a line, then wrap to the next:</para>
<screen><userinput>patch -Np1 -i ../bash-&bash-version;-fixes-1.patch</userinput></screen>
<para>Apply another patch:</para>
<para>Bash also has issues when compiled against newer versions of Glibc. The
following patch resolves this problem:</para>
<screen><userinput>patch -Np1 -i ../bash-&bash-version;-avoid_WCONTINUED-1.patch</userinput></screen>
@ -35,6 +44,17 @@
<screen><userinput>./configure --prefix=/usr --bindir=/bin \
--without-bash-malloc --with-installed-readline</userinput></screen>
<para>The meaning of the configure option:</para>
<variablelist>
<varlistentry>
<term><parameter>--with-installed-readline</parameter></term>
<listitem><para>This options 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>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
@ -46,17 +66,60 @@
<screen><userinput>make install</userinput></screen>
<para>Run the newly compiled <command>bash</command> program:</para>
<para>Run the newly compiled <command>bash</command> program (replacing the one that is
currently being executed):</para>
<screen><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>
<para>See testing</para>
<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"?>
<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 bug reports
concerning <command>bash</command> in a standard format</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>

View File

@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-binutils" xreflabel="Binutils" role="wrap">
<sect1 id="ch-system-binutils" role="wrap">
<title>Binutils-&binutils-version;</title>
<?dbhtml filename="binutils.html"?>
<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>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,21 +19,45 @@
<seglistitem><seg>1.4 SBU</seg><seg>167 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Binutils installation depends on</segtitle>
<seglistitem><seg>Bash, Bison, Coreutils, Diffutils, Flex, GCC, Gettext,
Glibc, Grep, M4, Make, Perl, Sed, and Texinfo</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Binutils</title>
<para>Check if there is PTYs for the test suites:</para>
<para>This package is known to have issues when its default
optimization flags (including the <parameter>-march</parameter> and
<parameter>-mcpu</parameter> options) are changed. If any environment
variables that override default optimizations have been defined, such
as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
unset them when building Binutils.</para>
<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>Create the build directory:</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.
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>The Binutils documentation recommends building Binutils outside of the
source directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../binutils-build
cd ../binutils-build</userinput></screen>
<para>Now prepare Binutils for compilation:</para>
<para>Prepare Binutils for compilation:</para>
<screen><userinput>../binutils-&binutils-version;/configure --prefix=/usr \
--enable-shared</userinput></screen>
@ -40,19 +66,33 @@ cd ../binutils-build</userinput></screen>
<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>, which
expands into <phrase condition="html"><filename
class="directory">/usr/i686-pc-linux-gnu</filename></phrase><phrase
condition="pdf"><filename class="directory">/usr/i686-pc-
linux-gnu</filename></phrase>. Because this is a custom system, this
target-specific directory in <filename
class="directory">/usr</filename> is not required. This setup 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>
<!--NEW-->
<screen><userinput>make -k check</userinput></screen>
<para>The test suite notes from <xref linkend="ch-tools-binutils-pass2"/> are still
very much appropriate here..</para>
<screen><userinput>make check</userinput></screen>
<para>Install the package:</para>
<screen><userinput>make tooldir=/usr install</userinput></screen>
<para>Install the <filename class="headerfile">libiberty</filename> header file:</para>
<para>Install the <filename class="headerfile">libiberty</filename> header file that is needed by
some packages:</para>
<screen><userinput>cp ../binutils-&binutils-version;/include/libiberty.h /usr/include</userinput></screen>
@ -61,8 +101,176 @@ very much appropriate here..</para>
<sect2 id="contents-binutils" role="content"><title>Contents of Binutils</title>
<para>See testing</para>
<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"?>
<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>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-bison" xreflabel="Bison" role="wrap">
<sect1 id="ch-system-bison" role="wrap">
<title>Bison-&bison-version;</title>
<?dbhtml filename="bison.html"?>
<indexterm zone="ch-system-bison"><primary sortas="a-Bison">Bison</primary></indexterm>
<sect2 role="package"><title/>
<para>The Bison package contains a parser generator.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,11 @@
<seglistitem><seg>0.6 SBU</seg><seg>10.6 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Bison installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Gettext, Glibc, Grep, M4, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -33,17 +39,57 @@
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now 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>
<para>See testing</para>
<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"?>
<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; <application>Bison</application> is a
replacement for <application>Yacc</application> (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>
</sect1>

View File

@ -3,13 +3,16 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-bzip2" xreflabel="Bzip2" role="wrap">
<sect1 id="ch-system-bzip2" role="wrap">
<title>Bzip2-&bzip2-version;</title>
<?dbhtml filename="bzip2.html"?>
<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. Text files yield a much better compression than with the
traditional <command>gzip</command>.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +20,11 @@
<seglistitem><seg>0.1 SBU</seg><seg>3.0 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Bzip2 installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, and Make</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -27,15 +35,27 @@
<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>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Install the package:</para>
<para>If reinstalling Bzip2, perform
<userinput>rm -f /usr/bin/bz*</userinput> first, otherwise the following
<command>make install</command> will fail.</para>
<para>Install the programs:</para>
<screen><userinput>make install</userinput></screen>
<para>Do some location changes:</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 bzip2-shared /bin/bzip2
cp -a libbz2.so* /lib
@ -49,8 +69,120 @@ ln -s bzip2 /bin/bzcat</userinput></screen>
<sect2 id="contents-bzip2" role="content"><title>Contents of Bzip2</title>
<para>See testing</para>
<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, libbz2.so (link to libbz2.so.1.0), libbz2.so.1.0 (link to
libbz2.so.&bzip2-version;), and libbz2.so.&bzip2-version;</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<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>

View File

@ -7,8 +7,34 @@
<title>Changing Ownership</title>
<?dbhtml filename="changingowner.html"?>
<para>Change the owner of <filename class="directory">/tools</filename>:</para>
<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>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>
<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>
</sect1>

View File

@ -7,11 +7,55 @@
<title>Entering the Chroot Environment</title>
<?dbhtml filename="chroot.html"?>
<para>Enter the chroot environment:</para>
<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>
<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 not be used anymore as soon as 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 be 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 bash prompt will say <quote>I have no
name!</quote> This is normal because the
<filename>/etc/passwd</filename> file has not been created yet.</para>
</sect1>

View File

@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-coreutils" xreflabel="Coreutils" role="wrap">
<sect1 id="ch-system-coreutils" role="wrap">
<title>Coreutils-&coreutils-version;</title>
<?dbhtml filename="coreutils.html"?>
<indexterm zone="ch-system-coreutils"><primary sortas="a-Coreutils">Coreutils</primary></indexterm>
<sect2 role="package"><title/>
<para>The Coreutils package contains utilities for showing and setting the
basic system characteristics.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,16 +19,25 @@
<seglistitem><seg>0.9 SBU</seg><seg>69 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Coreutils installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils, GCC,
Gettext, Glibc, Grep, Make, Perl, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Coreutils</title>
<para>Apply a patch:</para>
<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-&coreutils-version;-uname-2.patch</userinput></screen>
<para>Apply another patch:</para>
<para>Prevent Coreutils from installing binaries that will be later be
installed by other packages:</para>
<screen><userinput>patch -Np1 -i \
../coreutils-&coreutils-version;-suppress_uptime_kill_su-1.patch</userinput></screen>
@ -39,21 +50,30 @@
<screen><userinput>make</userinput></screen>
<para>The test suite of Coreutils makes several assumptions about the
presence of files and users that are not valid this early in the LFS
build. 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 name:</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:::/bin/bash" &gt;&gt; /etc/passwd</userinput></screen>
<para>Run the <emphasis>root</emphasis> tests:</para>
<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>
<screen><userinput>make NON_ROOT_USERNAME=dummy check-root</userinput></screen>
<para>Run the user tests:</para>
<para>Then run the remainder of the tests as the
<emphasis>dummy</emphasis> user:</para>
<screen><userinput>src/su dummy -c "make RUN_EXPENSIVE_TESTS=yes check"</userinput></screen>
<para>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>
@ -61,7 +81,7 @@ echo "dummy:x:1000:1000:::/bin/bash" &gt;&gt; /etc/passwd</userinput></screen>
<screen><userinput>make install</userinput></screen>
<para>And move some programs to their proper locations:</para>
<para>Move programs to the proper locations:</para>
<screen><userinput>mv /usr/bin/{[,basename,cat,chgrp,chmod,chown,cp,dd,df} /bin
mv /usr/bin/{date,echo,false,head,hostname,install,ln} /bin
@ -69,7 +89,7 @@ mv /usr/bin/{ls,mkdir,mknod,mv,pwd,rm,rmdir,sync} /bin
mv /usr/bin/{sleep,stty,test,touch,true,uname} /bin
mv /usr/bin/chroot /usr/sbin</userinput></screen>
<para>Create a symlink:</para>
<para>Finally, create a symlink to be FHS-compliant:</para>
<screen><userinput>ln -s ../../bin/install /usr/bin</userinput></screen>
@ -78,8 +98,755 @@ mv /usr/bin/chroot /usr/sbin</userinput></screen>
<sect2 id="contents-coreutils" role="content"><title>Contents of Coreutils</title>
<para>See testing</para>
<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"?>
<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 each given file to the given
group; the group can either be either given a name or a numeric
ID</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
each given file to the given user/group pair</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-coreutils">
<term><command>groups</command></term>
<listitem>
<para>Reports a user's group memberships</para>
<indexterm zone="ch-system-coreutils groups-coreutils"><primary sortas="b-groups-coreutils">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 unexpand"><primary sortas="b-unexpand">unexpand</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>

View File

@ -7,7 +7,10 @@
<title>Creating Essential Symlinks</title>
<?dbhtml filename="createfiles.html"?>
<para>Create some needed links.</para>
<para>Some programs hard-wire paths to programs which do not yet
exist. 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 -s /tools/bin/{bash,cat,pwd,stty} /bin
ln -s /tools/bin/perl /usr/bin
@ -15,3 +18,4 @@ ln -s /tools/lib/libgcc_s.so{,.1} /usr/lib
ln -s bash /bin/sh</userinput></screen>
</sect1>

View File

@ -7,7 +7,9 @@
<title>Creating Directories</title>
<?dbhtml filename="creatingdirs.html"?>
<para>Create a dirs tree:</para>
<para>It is time to create some structure in the LFS file system.
Create a directory tree. Issuing the following commands will create a
standard tree:</para>
<screen><userinput>install -d /{bin,boot,dev,etc/opt,home,lib,mnt}
install -d /{sbin,srv,usr/local,var,opt}
@ -29,4 +31,37 @@ install -d /var/{opt,cache,lib/{misc,locate},local}
install -d /opt/{bin,doc,include,info}
install -d /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>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
other users' 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>
<sect2>
<title>FHS Compliance Note</title>
<para>The directory tree is based on the Filesystem Hierarchy Standard
(FHS) standard (available at <ulink
url="http://www.pathname.com/fhs/"/>). Besides 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>. We do not recommend
these for a base system, however, feel free to make the system
FHS-compliant. The FHS is not precise as to the structure of the
<filename class="directory">/usr/local/share</filename> subdirectory,
so we created only the directories that are needed.</para>
</sect2>
</sect1>

View File

@ -3,20 +3,42 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-devices" xreflabel="devices">
<sect1 id="ch-system-devices">
<title>Populating /dev</title>
<?dbhtml filename="devices.html"?>
<para>Create the initial device nodes</para>
<indexterm zone="ch-system-devices"><primary sortas="e-Devices">/dev/*</primary></indexterm>
<sect2>
<title>Creating Initial Device Nodes</title>
<para>When the kernel boots the system, it requires the presence of a few device
nodes, in particular the <filename class="devicefile">console</filename> and
<filename class="devicefile">null</filename> devices. Create these by
running the following commands:</para>
<screen><userinput>mknod -m 600 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3</userinput></screen>
</sect2>
<para>Mount a ramfs in /dev</para>
<sect2>
<title>Mounting ramfs and Populating /dev</title>
<para>The ideal way to populate <filename
class="directory">/dev</filename> is to mount a <systemitem
class="filesystem">ramfs</systemitem> onto <filename
class="directory">/dev</filename>, like <systemitem
class="filesystem">tmpfs</systemitem>, and create the devices on there
during each bootup. Since the system has not been booted, it is
necessary to do what the bootscripts would otherwise do and populate
<filename class="directory">/dev</filename>. Begin by mounting
<filename class="directory">/dev</filename>:</para>
<screen><userinput>mount -n -t ramfs none /dev</userinput></screen>
<para>Create a minimal set of device nodes:</para>
<!-- Edit Me -->
<para>Since the Udev package will not be installed until later on in the
process, create a minimal set of device nodes used for building:</para>
<screen><userinput>mknod -m 622 /dev/console c 5 1
mknod -m 666 /dev/null c 1 3
@ -26,8 +48,10 @@ mknod -m 666 /dev/tty c 5 0
mknod -m 444 /dev/random c 1 8
mknod -m 444 /dev/urandom c 1 9
chown root:tty /dev/{console,ptmx,tty}</userinput></screen>
<!-- -->
<para>Create some symlinks and directories:</para>
<para>There are some symlinks and directories required by LFS that are
not created by Udev, so create those here:</para>
<screen><userinput>ln -s /proc/self/fd /dev/fd
ln -s /proc/self/fd/0 /dev/stdin
@ -37,10 +61,21 @@ ln -s /proc/kcore /dev/core
mkdir /dev/pts
mkdir /dev/shm</userinput></screen>
<para>Mount the virtual file systems:</para>
<para>Finally, mount the proper virtual (kernel) file systems on the
newly-created directories:</para>
<screen><userinput>mount -t devpts -o gid=4,mode=620 none /dev/pts
mount -t tmpfs none /dev/shm</userinput></screen>
<para>The <command>mount</command> commands executed above may result
in the following warning message:</para>
<screen><computeroutput>can't open /etc/fstab: No such file or directory.</computeroutput></screen>
<para>This file&mdash;<filename>/etc/fstab</filename>&mdash;has not
been created yet but is also not required for the file systems to be
properly mounted. As such, the warning can be safely ignored.</para>
</sect2>
</sect1>

View File

@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-diffutils" xreflabel="Diffutils" role="wrap">
<sect1 id="ch-system-diffutils" role="wrap">
<title>Diffutils-&diffutils-version;</title>
<?dbhtml filename="diffutils.html"?>
<indexterm zone="ch-system-diffutils"><primary sortas="a-Diffutils">Diffutils</primary></indexterm>
<sect2 role="package"><title/>
<para>The Diffutils package contains programs that show the differences
between files or directories.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +19,11 @@
<seglistitem><seg>0.1 SBU</seg><seg>7.5 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Diffutils installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils, GCC,
Gettext, Glibc, Grep, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -30,7 +37,9 @@
<screen><userinput>make</userinput></screen>
<para>Install it:</para>
<para>This package does not come with a test suite.</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -39,8 +48,48 @@
<sect2 id="contents-diffutils" role="content"><title>Contents of Diffutils</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>cmp, diff, diff3, and sdiff</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="cmp">
<term><command>cmp</command></term>
<listitem>
<para>Compares two files and reports whether or in which bytes they differ</para>
<indexterm zone="ch-system-diffutils cmp"><primary sortas="b-cmp">cmp</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="diff">
<term><command>diff</command></term>
<listitem>
<para>Compares two files or directories and reports which lines in the files differ</para>
<indexterm zone="ch-system-diffutils diff"><primary sortas="b-diff">diff</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="diff3">
<term><command>diff3</command></term>
<listitem>
<para>Compares three files line by line</para>
<indexterm zone="ch-system-diffutils diff3"><primary sortas="b-diff3">diff3</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="sdiff">
<term><command>sdiff</command></term>
<listitem>
<para>Merges two files and interactively outputs the results</para>
<indexterm zone="ch-system-diffutils sdiff"><primary sortas="b-sdiff">sdiff</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,16 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-e2fsprogs" xreflabel="E2fsprogs" role="wrap">
<sect1 id="ch-system-e2fsprogs" role="wrap">
<title>E2fsprogs-&e2fsprogs-version;</title>
<?dbhtml filename="e2fsprogs.html"?>
<indexterm zone="ch-system-e2fsprogs"><primary sortas="a-E2fsprogs">E2fsprogs</primary></indexterm>
<sect2 role="package"><title/>
<para>The E2fsprogs package contains the utilities for handling the
<systemitem class="filesystem">ext2</systemitem> file system. It also supports
the <systemitem class="filesystem">ext3</systemitem> journaling file system.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,12 +20,18 @@
<seglistitem><seg>0.6 SBU</seg><seg>4.9 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>E2fsprogs installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils,
Diffutils, Gawk, GCC, Gettext, Glibc, Grep, Make, Sed, and Texinfo</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of E2fsprogs</title>
<para>Create a build directory:</para>
<para>It is recommended that E2fsprogs be built in a subdirectory of the source tree:
</para>
<screen><userinput>mkdir build
cd build</userinput></screen>
@ -32,6 +41,39 @@ cd build</userinput></screen>
<screen><userinput>../configure --prefix=/usr --with-root-prefix="" \
--enable-elf-shlibs --disable-evms</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--with-root-prefix=""</parameter></term>
<listitem><para>Certain programs (such as the
<command>e2fsck</command> program) are considered essential programs.
When, for example, <filename class="directory">/usr</filename> is not
mounted, these essential programs need to be available. They belong in
directories like <filename class="directory">/lib</filename> and
<filename class="directory">/sbin</filename>. If this option is not
passed to E2fsprogs' configure, the programs are installed into the
<filename class="directory">/usr</filename> directory, which is not
where they should be.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--enable-elf-shlibs</parameter></term>
<listitem><para>This creates the shared libraries which some programs
in this package use.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-evms</parameter></term>
<listitem><para>This disables the building of the Enterprise Volume
Management System (EVMS) plugin. This plugin is not up-to-date with
the latest EVMS internal interfaces and EVMS is not installed as part
of a base LFS system, so the plugin is not required. See the EVMS
website at <ulink url="http://evms.sourceforge.net/"/> for more
information regarding EVMS.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
@ -43,16 +85,296 @@ cd build</userinput></screen>
<screen><userinput>make install</userinput></screen>
<para>Also install the shared libraries:</para>
<para>Install the shared libraries:</para>
<screen><userinput>make install-libs</userinput></screen>
</sect2>
<sect2 id="contents-e2fsprogs" role="content"><title>Contents of E2fsprogs</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<seglistitem><seg>badblocks, blkid, chattr,
compile_et, debugfs, dumpe2fs, e2fsck, e2image, e2label, findfs, fsck,
fsck.ext2, fsck.ext3, logsave, lsattr, mk_cmds, mke2fs, mkfs.ext2, mkfs.ext3,
mklost+found, resize2fs, tune2fs, and uuidgen.</seg>
<seg>libblkid.[a,so], libcom_err.[a,so], libe2p.[a,so],
libext2fs.[a,so], libss.[a,so], and libuuid.[a,so]</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="badblocks">
<term><command>badblocks</command></term>
<listitem>
<para>Searches a device (usually a disk partition) for bad blocks</para>
<indexterm zone="ch-system-e2fsprogs badblocks"><primary sortas="b-badblocks">badblocks</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="blkid">
<term><command>blkid</command></term>
<listitem>
<para>A command line utility to locate and print block device attributes</para>
<indexterm zone="ch-system-e2fsprogs blkid"><primary sortas="b-blkid">blkid</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="chattr">
<term><command>chattr</command></term>
<listitem>
<para>Changes the attributes of files on an <systemitem
class="filesystem">ext2</systemitem> file system; it also changes <systemitem
class="filesystem">ext3</systemitem> file systems, the journaling version of
<systemitem class="filesystem">ext2</systemitem> file systems</para>
<indexterm zone="ch-system-e2fsprogs chattr"><primary sortas="b-chattr">chattr</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="compile_et">
<term><command>compile_et</command></term>
<listitem>
<para>An error table compiler; it converts a table of error-code names and
messages into a C source file suitable for use with the <filename
class="libraryfile">com_err</filename> library</para>
<indexterm zone="ch-system-e2fsprogs compile_et"><primary sortas="b-compile_et">compile_et</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="debugfs">
<term><command>debugfs</command></term>
<listitem>
<para>A file system debugger; it can be used to examine and change the
state of an <systemitem class="filesystem">ext2</systemitem> file system</para>
<indexterm zone="ch-system-e2fsprogs debugfs"><primary sortas="b-debugfs">debugfs</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="dumpe2fs">
<term><command>dumpe2fs</command></term>
<listitem>
<para>Prints the super block and blocks group information for the file
system present on a given device</para>
<indexterm zone="ch-system-e2fsprogs dumpe2fs"><primary sortas="b-dumpe2fs">dumpe2fs</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="e2fsck">
<term><command>e2fsck</command></term>
<listitem>
<para>Is used to check, and optionally repair <systemitem
class="filesystem">ext2</systemitem> file systems and <systemitem
class="filesystem">ext3</systemitem> file systems</para>
<indexterm zone="ch-system-e2fsprogs e2fsck"><primary sortas="b-e2fsck">e2fsck</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="e2image">
<term><command>e2image</command></term>
<listitem>
<para>Is used to save critical <systemitem class="filesystem">ext2</systemitem>
file system data to a file</para>
<indexterm zone="ch-system-e2fsprogs e2image"><primary sortas="b-e2image">e2image</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="e2label">
<term><command>e2label</command></term>
<listitem>
<para>Displays or changes the file system label on the <systemitem
class="filesystem">ext2</systemitem> file system present on a given device</para>
<indexterm zone="ch-system-e2fsprogs e2label"><primary sortas="b-e2label">e2label</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="findfs">
<term><command>findfs</command></term>
<listitem>
<para>Finds a file system by label or Universally Unique Identifier (UUID)</para>
<indexterm zone="ch-system-e2fsprogs findfs"><primary sortas="b-findfs">findfs</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="fsck">
<term><command>fsck</command></term>
<listitem>
<para>Is used to check, and optionally repair, file systems</para>
<indexterm zone="ch-system-e2fsprogs fsck"><primary sortas="b-fsck">fsck</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="fsck.ext2">
<term><command>fsck.ext2</command></term>
<listitem>
<para>By default checks <systemitem class="filesystem">ext2</systemitem>
file systems</para>
<indexterm zone="ch-system-e2fsprogs fsck.ext2"><primary
sortas="b-fsck.ext2">fsck.ext2</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="fsck.ext3">
<term><command>fsck.ext3</command></term>
<listitem>
<para>By default checks <systemitem class="filesystem">ext3</systemitem>
file systems</para>
<indexterm zone="ch-system-e2fsprogs fsck.ext3"><primary
sortas="b-fsck.ext3">fsck.ext3</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="logsave">
<term><command>logsave</command></term>
<listitem>
<para>Saves the output of a command in a log file</para>
<indexterm zone="ch-system-e2fsprogs logsave"><primary sortas="b-logsave">logsave</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="lsattr">
<term><command>lsattr</command></term>
<listitem>
<para>Lists the attributes of files on a second extended file system</para>
<indexterm zone="ch-system-e2fsprogs lsattr"><primary sortas="b-lsattr">lsattr</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="mk_cmds">
<term><command>mk_cmds</command></term>
<listitem>
<para>Converts a table of command names and helps messages into a C
source file suitable for use with the <filename
class="libraryfile">libss</filename> subsystem library</para>
<indexterm zone="ch-system-e2fsprogs mk_cmds"><primary sortas="b-mk_cmds">mk_cmds</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="mke2fs">
<term><command>mke2fs</command></term>
<listitem>
<para>Is used to create a second extended file system on the given
device</para>
<indexterm zone="ch-system-e2fsprogs mke2fs"><primary sortas="b-mke2fs">mke2fs</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="mkfs.ext2">
<term><command>mkfs.ext2</command></term>
<listitem>
<para>By default creates <systemitem class="filesystem">ext2</systemitem>
file systems</para>
<indexterm zone="ch-system-e2fsprogs mkfs.ext2"><primary
sortas="b-mkfs.ext2">mkfs.ext2</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="mkfs.ext3">
<term><command>mkfs.ext3</command></term>
<listitem>
<para>By default creates <systemitem class="filesystem">ext3</systemitem>
file systems</para>
<indexterm zone="ch-system-e2fsprogs mkfs.ext3"><primary
sortas="b-mkfs.ext3">mkfs.ext3</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="mklost-found">
<term><command>mklost+found</command></term>
<listitem>
<para>Used to create a <filename class="directory">lost+found</filename>
directory on an <systemitem class="filesystem">ext2</systemitem> file system;
it pre-allocates disk blocks to this directory to lighten the task of
<command>e2fsck</command></para>
<indexterm zone="ch-system-e2fsprogs mklost-found"><primary sortas="b-mklost+found">mklost+found</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="resize2fs">
<term><command>resize2fs</command></term>
<listitem>
<para>Can be used to enlarge or shrink an <systemitem
class="filesystem">ext2</systemitem> file system</para>
<indexterm zone="ch-system-e2fsprogs resize2fs"><primary sortas="b-resize2fs">resize2fs</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="tune2fs">
<term><command>tune2fs</command></term>
<listitem>
<para>Adjusts tunable file system parameters on an <systemitem
class="filesystem">ext2</systemitem> file system</para>
<indexterm zone="ch-system-e2fsprogs tune2fs"><primary sortas="b-tune2fs">tune2fs</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="uuidgen">
<term><command>uuidgen</command></term>
<listitem>
<para>Creates new UUIDs. Each new UUID can reasonably be considered unique
among all UUIDs created, on the local system and on other systems, in the
past and in the future</para>
<indexterm zone="ch-system-e2fsprogs uuidgen"><primary sortas="b-uuidgen">uuidgen</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libblkid">
<term><filename class="libraryfile">libblkid</filename></term>
<listitem>
<para>Contains routines for device identification and token extraction</para>
<indexterm zone="ch-system-e2fsprogs libblkid"><primary sortas="c-libblkid">libblkid</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libcom_err">
<term><filename class="libraryfile">libcom_err</filename></term>
<listitem>
<para>The common error display routine</para>
<indexterm zone="ch-system-e2fsprogs libcom_err"><primary sortas="c-libcom_err">libcom_err</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libe2p">
<term><filename class="libraryfile">libe2p</filename></term>
<listitem>
<para>Used by <command>dumpe2fs</command>, <command>chattr</command>,
and <command>lsattr</command></para>
<indexterm zone="ch-system-e2fsprogs libe2p"><primary sortas="c-libe2p">libe2p</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libext2fs">
<term><filename class="libraryfile">libext2fs</filename></term>
<listitem>
<para>Contains routines to enable user-level programs to manipulate an
<systemitem class="filesystem">ext2</systemitem> file system</para>
<indexterm zone="ch-system-e2fsprogs libext2fs"><primary sortas="c-libext2fs">libext2fs</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libss">
<term><filename class="libraryfile">libss</filename></term>
<listitem>
<para>Used by <command>debugfs</command></para>
<indexterm zone="ch-system-e2fsprogs libss"><primary sortas="c-libss">libss</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libuuid">
<term><filename class="libraryfile">libuuid</filename></term>
<listitem>
<para>Contains routines for generating unique identifiers for objects
that may be accessible beyond the local system</para>
<indexterm zone="ch-system-e2fsprogs libuuid"><primary sortas="c-libuuid">libuuid</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-file" xreflabel="File" role="wrap">
<sect1 id="ch-system-file" role="wrap">
<title>File-&file-version;</title>
<?dbhtml filename="file.html"?>
<indexterm zone="ch-system-file"><primary sortas="a-File">File</primary></indexterm>
<sect2 role="package"><title/>
<para>The File package contains a utility for determining the type of files.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,11 @@
<seglistitem><seg>0.1 SBU</seg><seg>6.3 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>File installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, Sed, and Zlib</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -30,7 +36,7 @@
<screen><userinput>make</userinput></screen>
<para>Now install it:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -39,8 +45,36 @@
<sect2 id="contents-file" role="content"><title>Contents of File</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem><seg>file</seg><seg>libmagic.[a,so]</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="file">
<term><command>file</command></term>
<listitem>
<para>Tries to classify each given file; it does this by performing
several tests&mdash;file system tests, magic number tests, and language
tests</para>
<indexterm zone="ch-system-file file"><primary sortas="b-file">file</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libmagic">
<term><filename class="libraryfile">libmagic</filename></term>
<listitem>
<para>Contains routines for magic number recognition, used by the
<command>file</command> program</para>
<indexterm zone="ch-system-file libmagic"><primary sortas="c-libmagic">libmagic</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,17 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-findutils" xreflabel="Findutils" role="wrap">
<sect1 id="ch-system-findutils" role="wrap">
<title>Findutils-&findutils-version;</title>
<?dbhtml filename="findutils.html"?>
<indexterm zone="ch-system-findutils"><primary sortas="a-Findutils">Findutils</primary></indexterm>
<sect2 role="package"><title/>
<para>The Findutils package contains programs to find files. Processes
are provided to recursively search through a directory tree and to
create, maintain, and search a database (often faster than the recursive
find, but unreliable if the database has not been recently updated).</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +21,11 @@
<seglistitem><seg>0.2 SBU</seg><seg>7.5 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Findutils installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils,
Diffutils, GCC, Gettext, Glibc, Grep, Make and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -27,6 +36,10 @@
<screen><userinput>./configure --prefix=/usr --libexecdir=/usr/lib/locate \
--localstatedir=/var/lib/locate</userinput></screen>
<para>The <parameter>localstatedir</parameter> directive above changes the
location of the <command>locate</command> database to be in <filename
class="directory">/var/lib/locate</filename>, which is FHS-compliant.</para>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
@ -34,17 +47,86 @@
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 id="contents-findutils" role="content"><title>Contents of Findutils</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>bigram, code, find, frcode, locate, updatedb, and xargs</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="bigram">
<term><command>bigram</command></term>
<listitem>
<para>Was formerly used to produce <command>locate</command> databases</para>
<indexterm zone="ch-system-findutils bigram"><primary sortas="b-bigram">bigram</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="code">
<term><command>code</command></term>
<listitem>
<para>Was formerly used to produce <command>locate</command>
databases; it is the ancestor of <command>frcode</command>.</para>
<indexterm zone="ch-system-findutils code"><primary sortas="b-code">code</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="find">
<term><command>find</command></term>
<listitem>
<para>Searches given directory trees for files matching the specified criteria</para>
<indexterm zone="ch-system-findutils find"><primary sortas="b-find">find</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="frcode">
<term><command>frcode</command></term>
<listitem>
<para>Is called by <command>updatedb</command> to compress the list of file names; it uses
front-compression, reducing the database size by a factor of four to
five.</para>
<indexterm zone="ch-system-findutils frcode"><primary sortas="b-frcode">frcode</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="locate">
<term><command>locate</command></term>
<listitem>
<para>Searches through a database of file names and reports the names
that contain a given string or match a given pattern</para>
<indexterm zone="ch-system-findutils locate"><primary sortas="b-locate">locate</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="updatedb">
<term><command>updatedb</command></term>
<listitem>
<para>Updates the <command>locate</command> database; it scans
the entire file system (including other file systems that are currently mounted,
unless told not to) and puts every file name it finds into the database</para>
<indexterm zone="ch-system-findutils updatedb"><primary sortas="b-updatedb">updatedb</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="xargs">
<term><command>xargs</command></term>
<listitem>
<para>Can be used to apply a given command to a list of files</para>
<indexterm zone="ch-system-findutils xargs"><primary sortas="b-xargs">xargs</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-flex" xreflabel="Flex" role="wrap">
<sect1 id="ch-system-flex" role="wrap">
<title>Flex-&flex-version;</title>
<?dbhtml filename="flex.html"?>
<indexterm zone="ch-system-flex"><primary sortas="a-Flex">Flex</primary></indexterm>
<sect2 role="package"><title/>
<para>The Flex package contains a utility for generating programs that
recognize patterns in text.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,20 +19,28 @@
<seglistitem><seg>0.1 SBU</seg><seg>3.4 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Flex installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Bison, Coreutils, Diffutils,
GCC, Gettext, Glibc, Grep, M4, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Flex</title>
<para>Apply a patch:</para>
<para>Flex contains several known bugs. Fix these with the following patch:</para>
<screen><userinput>patch -Np1 -i ../flex-&flex-version;-debian_fixes-2.patch</userinput></screen>
<para>Touch the man-page:</para>
<para>The GNU autotools detects that the Flex source code has been
modified by the previous patch and tries to update the manual page
accordingly. This does not work correctly on many systems, and the
default page is fine, so make sure it does not get regenerated:</para>
<screen><userinput>touch doc/flex.1</userinput></screen>
<para>Now prepare Flex for compilation:</para>
<para>Prepare Flex for compilation:</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen>
@ -41,15 +51,21 @@
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Create a symlink:</para>
<para>There are some packages that expect to find the
<filename class="libraryfile">lex</filename> library in <filename
class="directory">/usr/lib</filename>. Create a symlink to account for
this:</para>
<screen><userinput>ln -s libfl.a /usr/lib/libl.a</userinput></screen>
<para>Create a lex script:</para>
<para>A few programs do not know about <command>flex</command> yet and
try to run its predecessor, <command>lex</command>. To support those
programs, create a wrapper script named <filename>lex</filename> that
calls <filename>flex</filename> in <command>lex</command> emulation mode:</para>
<screen><userinput>cat &gt; /usr/bin/lex &lt;&lt; "EOF"
<literal>#!/bin/sh
@ -66,8 +82,54 @@ chmod 755 /usr/bin/lex</userinput></screen>
<sect2 id="contents-flex" role="content"><title>Contents of Flex</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed library</segtitle>
<seglistitem><seg>flex, flex++ (link to flex), and lex</seg>
<seg>libfl.a</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="flex">
<term><command>flex</command></term>
<listitem>
<para>A tool for generating programs that recognize patterns in text;
it allows for the versatility to specify the rules for
pattern-finding, eradicating the need to develop a specialized
program</para>
<indexterm zone="ch-system-flex flex"><primary sortas="b-flex">flex</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="flex-">
<term><command>flex++</command></term>
<listitem>
<para>Invokes a version of <command>flex</command> that is used exclusively for C++ scanners</para>
<indexterm zone="ch-system-flex flex-"><primary sortas="b-flex++">flex++</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="lex">
<term><command>lex</command></term>
<listitem>
<para>Script that runs <command>flex</command> in <command>lex</command>
emulation mode</para>
<indexterm zone="ch-system-flex lex"><primary sortas="b-lex">lex</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libfl.a">
<term><filename class="libraryfile">libfl.a</filename></term>
<listitem>
<para>The <filename class="libraryfile">flex</filename> library</para>
<indexterm zone="ch-system-flex libfl.a"><primary sortas="c-libfl.a">libfl.a</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-gawk" xreflabel="Gawk" role="wrap">
<sect1 id="ch-system-gawk" role="wrap">
<title>Gawk-&gawk-version;</title>
<?dbhtml filename="gawk.html"?>
<indexterm zone="ch-system-gawk"><primary sortas="a-Gawk">Gawk</primary></indexterm>
<sect2 role="package"><title/>
<para>The Gawk package contains programs for manipulating text files.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,11 @@
<seglistitem><seg>0.2 SBU</seg><seg>17 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Gawk installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils,
Diffutils, GCC, Gettext, Glibc, Grep, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -33,7 +39,7 @@
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -42,8 +48,82 @@
<sect2 id="contents-gawk" role="content"><title>Contents of Gawk</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>awk (link to gawk), gawk, gawk-&gawk-version;, grcat, igawk,
pgawk, pgawk-&gawk-version;, and pwcat</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="awk">
<term><command>awk</command></term>
<listitem>
<para>A link to <command>gawk</command></para>
<indexterm zone="ch-system-gawk awk"><primary sortas="b-awk">awk</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gawk">
<term><command>gawk</command></term>
<listitem>
<para>A program for manipulating text files; it is the GNU
implementation of <command>awk</command></para>
<indexterm zone="ch-system-gawk gawk"><primary sortas="b-gawk">gawk</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gawk-version">
<term><command>gawk-&gawk-version;</command></term>
<listitem>
<para>A hard link to <command>gawk</command></para>
<indexterm zone="ch-system-gawk gawk-version"><primary sortas="b-gawk-&gawk-version;">gawk-&gawk-version;</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grcat">
<term><command>grcat</command></term>
<listitem>
<para>Dumps the group database <filename>/etc/group</filename></para>
<indexterm zone="ch-system-gawk grcat"><primary sortas="b-grcat">grcat</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="igawk">
<term><command>igawk</command></term>
<listitem>
<para>Gives <command>gawk</command> the ability to include files</para>
<indexterm zone="ch-system-gawk igawk"><primary sortas="b-igawk">igawk</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="pgawk">
<term><command>pgawk</command></term>
<listitem>
<para>The profiling version of <command>gawk</command></para>
<indexterm zone="ch-system-gawk pgawk"><primary sortas="b-pgawk">pgawk</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="pgawk-version">
<term><command>pgawk-&gawk-version;</command></term>
<listitem>
<para>Hard link to <command>pgawk</command></para>
<indexterm zone="ch-system-gawk pgawk-version"><primary sortas="b-pgawk-&gawk-version;">pgawk-&gawk-version;</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="pwcat">
<term><command>pwcat</command></term>
<listitem>
<para>Dumps the password database <filename>/etc/passwd</filename></para>
<indexterm zone="ch-system-gawk pwcat"><primary sortas="b-pwcat">pwcat</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-gcc" xreflabel="GCC" role="wrap">
<sect1 id="ch-system-gcc" role="wrap">
<title>GCC-&gcc-version;</title>
<?dbhtml filename="gcc.html"?>
<indexterm zone="ch-system-gcc"><primary sortas="a-GCC">GCC</primary></indexterm>
<sect2 role="package"><title/>
<para>The GCC package contains the GNU compiler collection, which includes
the C and C++ compilers.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,29 +19,54 @@
<seglistitem><seg>11.7 SBU</seg><seg>294 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>GCC installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils, Findutils,
Gawk, Gettext, Glibc, Grep, Make, Perl, Sed, and Texinfo</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of GCC</title>
<para>Apply a patch:</para>
<para>This package is known to have issues when its default
optimization flags (including the <parameter>-march</parameter> and
<parameter>-mcpu</parameter> options) are changed. If any environment
variables that override default optimizations have been defined, such
as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
unset them when building GCC.</para>
<para>Unpack both the gcc-core and the gcc-g++ tarballs&mdash;they will
unpack into the same directory. Likewise, extract the gcc-testsuite
package. The full GCC package contains additional compilers.
Instructions for building these can be found at <ulink
url="&blfs-root;view/svn/general/gcc.html"/>.</para>
<para>Apply only the No-Fixincludes patch (not the Specs patch) also
used in the previous chapter:</para>
<screen><userinput>patch -Np1 -i ../gcc-&gcc-version;-no_fixincludes-1.patch</userinput></screen>
<para>Apply another patch:</para>
<para>GCC fails to compile some packages outside of a base Linux From Scratch
install (e.g., Mozilla and kdegraphics) when used in conjunction with newer
versions of Binutils. Apply the following patch to fix this issue:</para>
<screen><userinput>patch -Np1 -i ../gcc-&gcc-version;-linkonce-1.patch</userinput></screen>
<para>Apply a sed substitution:</para>
<para>Apply a sed substitution that will suppress the installation of
<filename class="libraryfile">libiberty.a</filename>. The version of
<filename class="libraryfile">libiberty.a</filename> provided by
Binutils will be used instead:</para>
<screen><userinput>sed -i 's/install_to_$(INSTALL_DEST) //' libiberty/Makefile.in</userinput></screen>
<para>Create a build directory:</para>
<para>The GCC documentation recommends building GCC outside of the source
directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../gcc-build
cd ../gcc-build</userinput></screen>
<para>Now prepare GCC for compilation:</para>
<para>Prepare GCC for compilation:</para>
<screen><userinput>../gcc-&gcc-version;/configure --prefix=/usr \
--libexecdir=/usr/lib --enable-shared \
@ -50,35 +77,140 @@ cd ../gcc-build</userinput></screen>
<screen><userinput>make</userinput></screen>
<para>Test the results):</para>
<important><para>In this section, the test suite for GCC is considered
critical. Do not skip it under any circumstance.</para></important>
<para>Test the results, but do not stop at errors:</para>
<screen><userinput>make -k check</userinput></screen>
<para>The test suite notes from <xref linkend="ch-tools-gcc-pass2"/> are still very
much appropriate here.</para>
<para>Some of the errors are known issues and were noted in the
previous chapter. The test suite notes from <xref
linkend="ch-tools-gcc-pass2" role=","/> are still relevant here. Be sure to
refer back to them as necessary.</para>
<para>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Create this symlink:</para>
<para>Some packages expect the C PreProcessor to be installed in the
<filename class="directory">/lib</filename> directory.
To support those packages, create this symlink:</para>
<screen><userinput>ln -s ../usr/bin/cpp /lib</userinput></screen>
<para>Create another symlink:</para>
<para>Many packages use the name <command>cc</command> to call the C
compiler. To satisfy those packages, create a symlink:</para>
<screen><userinput>ln -s gcc /usr/bin/cc</userinput></screen>
<note><para>Refer back to <xref linkend="ch-system-readjusting"/>
and repeat the check.</para></note>
<note><para>At this point, it is strongly recommended to repeat the
sanity check performed earlier in this chapter. Refer back to <xref
linkend="ch-system-readjusting" role=","/> and repeat the check. If the results
are in error, then the most likely reason is that the GCC Specs patch
from <xref linkend="chapter-temporary-tools"/> was erroneously applied
here.</para></note>
</sect2>
<sect2 id="contents-gcc" role="content"><title>Contents of GCC</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<seglistitem><seg>c++, cc (link to gcc), cpp, g++, gcc, gccbug, and
gcov</seg>
<seg>libgcc.a, libgcc_eh.a, libgcc_s.so, libstdc++.[a,so], and libsupc++.a</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="cc">
<term><command>cc</command></term>
<listitem>
<para>The C compiler</para>
<indexterm zone="ch-system-gcc cc"><primary sortas="b-cc">cc</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="cpp">
<term><command>cpp</command></term>
<listitem>
<para>The C preprocessor; it is used by the compiler to expand the
#include, #define, and similar statements in the source files</para>
<indexterm zone="ch-system-gcc cpp"><primary sortas="b-cpp">cpp</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="c">
<term><command>c++</command></term>
<listitem>
<para>The C++ compiler</para>
<indexterm zone="ch-system-gcc c"><primary sortas="b-c++">c++</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="g">
<term><command>g++</command></term>
<listitem>
<para>The C++ compiler</para>
<indexterm zone="ch-system-gcc g"><primary sortas="b-g++">g++</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gcc">
<term><command>gcc</command></term>
<listitem>
<para>The C compiler</para>
<indexterm zone="ch-system-gcc gcc"><primary sortas="b-gcc">gcc</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gccbug">
<term><command>gccbug</command></term>
<listitem>
<para>A shell script used to help create useful bug reports</para>
<indexterm zone="ch-system-gcc gccbug"><primary sortas="b-gccbug">gccbug</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gcov">
<term><command>gcov</command></term>
<listitem>
<para>A coverage testing tool; it is used to analyze programs to
determine where optimizations will have the most effect</para>
<indexterm zone="ch-system-gcc gcov"><primary sortas="b-gcov">gcov</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libgcc">
<term><filename class="libraryfile">libgcc</filename></term>
<listitem>
<para>Contains run-time support for <command>gcc</command></para>
<indexterm zone="ch-system-gcc libgcc"><primary sortas="c-libgcc*">libgcc*</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libstdc">
<term><filename class="libraryfile">libstdc++</filename></term>
<listitem>
<para>The standard C++ library</para>
<indexterm zone="ch-system-gcc libstdc"><primary sortas="c-libstdc++">libstdc++</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libsupc">
<term><filename class="libraryfile">libsupc++</filename></term>
<listitem>
<para>Provides supporting routines for the C++ programming language</para>
<indexterm zone="ch-system-gcc libsupc"><primary sortas="c-libsupc++">libsupc++</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,16 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-gettext" xreflabel="Gettext" role="wrap">
<sect1 id="ch-system-gettext" role="wrap">
<title>Gettext-&gettext-version;</title>
<?dbhtml filename="gettext.html"?>
<indexterm zone="ch-system-gettext"><primary sortas="a-Gettext">Gettext</primary></indexterm>
<sect2 role="package"><title/>
<para>The Gettext package contains utilities for internationalization and
localization. These allow programs to be compiled with NLS, enabling them
to output messages in the user's native language.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +20,11 @@
<seglistitem><seg>0.5 SBU</seg><seg>55 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Gettext installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Bison, Coreutils,
Diffutils, Gawk, GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -31,9 +39,10 @@
<screen><userinput>make</userinput></screen>
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<userinput>make check</userinput>. This takes a very long time, around
7 SBUs.</para>
<para>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -42,8 +51,257 @@
<sect2 id="contents-gettext" role="content"><title>Contents of Gettext</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<seglistitem><seg>autopoint, config.charset, config.rpath, envsubst, gettext,
gettextize, hostname, msgattrib, msgcat, msgcmp, msgcomm, msgconv, msgen,
msgexec, msgfilter, msgfmt, msggrep, msginit, msgmerge, msgunfmt, msguniq,
ngettext, and xgettext</seg>
<seg>libasprintf[a,so], libgettextlib[a,so], libgettextpo[a,so] and libgettextsrc[a,so]</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="autopoint">
<term><command>autopoint</command></term>
<listitem>
<para>Copies standard Gettext infrastructure files into a source package</para>
<indexterm zone="ch-system-gettext autopoint"><primary sortas="b-autopoint">autopoint</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="config.charset">
<term><command>config.charset</command></term>
<listitem>
<para>Outputs a system-dependent table of character encoding aliases</para>
<indexterm zone="ch-system-gettext config.charset"><primary sortas="b-config.charset">config.charset</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="config.rpath">
<term><command>config.rpath</command></term>
<listitem>
<para>Outputs a system-dependent set of variables, describing how to set the
runtime search path of shared libraries in an executable</para>
<indexterm zone="ch-system-gettext config.rpath"><primary sortas="b-config.rpath">config.rpath</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="envsubst">
<term><command>envsubst</command></term>
<listitem>
<para>Substitutes environment variables in shell format strings</para>
<indexterm zone="ch-system-gettext envsubst"><primary sortas="b-envsubst">envsubst</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gettext">
<term><command>gettext</command></term>
<listitem>
<para>Translates a natural language message into the user's language
by looking up the translation in a message catalog</para>
<indexterm zone="ch-system-gettext gettext"><primary sortas="b-gettext">gettext</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gettextize">
<term><command>gettextize</command></term>
<listitem>
<para>Copies all standard Gettext files into the given top-level
directory of a package to begin internationalizing it</para>
<indexterm zone="ch-system-gettext gettextize"><primary sortas="b-gettextize">gettextize</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="hostname-gettext">
<term><command>hostname</command></term>
<listitem>
<para>Displays a network hostname in various forms</para>
<indexterm zone="ch-system-gettext hostname-gettext"><primary sortas="b-hostname-gettext">hostname</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgattrib">
<term><command>msgattrib</command></term>
<listitem>
<para>Filters the messages of a translation catalog according to their
attributes and manipulates the attributes</para>
<indexterm zone="ch-system-gettext msgattrib"><primary sortas="b-msgattrib">msgattrib</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgcat">
<term><command>msgcat</command></term>
<listitem>
<para>Concatenates and merges the given <filename class="extension">.po</filename> files</para>
<indexterm zone="ch-system-gettext msgcat"><primary sortas="b-msgcat">msgcat</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgcmp">
<term><command>msgcmp</command></term>
<listitem>
<para>Compares two <filename class="extension">.po</filename>
files to check that both contain the same set of msgid strings</para>
<indexterm zone="ch-system-gettext msgcmp"><primary sortas="b-msgcmp">msgcmp</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgcomm">
<term><command>msgcomm</command></term>
<listitem>
<para>Finds the messages that are common to
to the given <filename class="extension">.po</filename> files</para>
<indexterm zone="ch-system-gettext msgcomm"><primary sortas="b-msgcomm">msgcomm</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgconv">
<term><command>msgconv</command></term>
<listitem>
<para>Converts a translation catalog to a different character encoding</para>
<indexterm zone="ch-system-gettext msgconv"><primary sortas="b-msgconv">msgconv</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgen">
<term><command>msgen</command></term>
<listitem>
<para>Creates an English translation catalog</para>
<indexterm zone="ch-system-gettext msgen"><primary sortas="b-msgen">msgen</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgexec">
<term><command>msgexec</command></term>
<listitem>
<para>Applies a command to all translations of a translation catalog</para>
<indexterm zone="ch-system-gettext msgexec"><primary sortas="b-msgexec">msgexec</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgfilter">
<term><command>msgfilter</command></term>
<listitem>
<para>Applies a filter to all translations of a translation catalog</para>
<indexterm zone="ch-system-gettext msgfilter"><primary sortas="b-msgfilter">msgfilter</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgfmt">
<term><command>msgfmt</command></term>
<listitem>
<para>Generates a binary message catalog from from a translation catalog</para>
<indexterm zone="ch-system-gettext msgfmt"><primary sortas="b-msgfmt">msgfmt</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msggrep">
<term><command>msggrep</command></term>
<listitem>
<para>Extracts all messages of a translation catalog that match a
given pattern or belong to some given source files</para>
<indexterm zone="ch-system-gettext msggrep"><primary sortas="b-msggrep">msggrep</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msginit">
<term><command>msginit</command></term>
<listitem>
<para>Creates a new <filename class="extension">.po</filename> file, initializing the meta
information with values from the user's environment</para>
<indexterm zone="ch-system-gettext msginit"><primary sortas="b-msginit">msginit</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgmerge">
<term><command>msgmerge</command></term>
<listitem>
<para>Combines two raw translations into a single file</para>
<indexterm zone="ch-system-gettext msgmerge"><primary sortas="b-msgmerge">msgmerge</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msgunfmt">
<term><command>msgunfmt</command></term>
<listitem>
<para>Decompiles a binary message catalog into raw translation text</para>
<indexterm zone="ch-system-gettext msgunfmt"><primary sortas="b-msgunfmt">msgunfmt</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="msguniq">
<term><command>msguniq</command></term>
<listitem>
<para>Unifies duplicate translations in a translation catalog</para>
<indexterm zone="ch-system-gettext msguniq"><primary sortas="b-msguniq">msguniq</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="ngettext">
<term><command>ngettext</command></term>
<listitem>
<para>Displays native language translations of a textual message whose
grammatical form depends on a number</para>
<indexterm zone="ch-system-gettext ngettext"><primary sortas="b-ngettext">ngettext</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="xgettext">
<term><command>xgettext</command></term>
<listitem>
<para>Extracts the translatable message lines from the given source
files to make the first translation template</para>
<indexterm zone="ch-system-gettext xgettext"><primary sortas="b-xgettext">xgettext</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libasprintf">
<term><filename class="libraryfile">libasprintf</filename></term>
<listitem>
<para>defines the <emphasis>autosprintf</emphasis> class, which makes
C formatted output routines usable in C++ programs, for use with the
<emphasis>&lt;string&gt;</emphasis> strings and the
<emphasis>&lt;iostream&gt;</emphasis> streams</para>
<indexterm zone="ch-system-gettext libasprintf"><primary sortas="c-libasprintf">libasprintf</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libgettextlib">
<term><filename class="libraryfile">libgettextlib</filename></term>
<listitem>
<para>a private library containing common routines used by the various Gettext
programs; these are not intended for general use</para>
<indexterm zone="ch-system-gettext libgettextlib"><primary sortas="c-libgettextlib">libgettextlib</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libgettextpo">
<term><filename class="libraryfile">libgettextpo</filename></term>
<listitem>
<para>Used to write specialized programs that process <filename
class="extension">.po</filename> files; this library is used when the
standard applications shipped with Gettext (such as
<command>msgcomm</command>, <command>msgcmp</command>,
<command>msgattrib</command>, and <command>msgen</command>) will not
suffice</para>
<indexterm zone="ch-system-gettext libgettextpo"><primary sortas="c-libgettextpo">libgettextpo</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libgettextsrc">
<term><filename class="libraryfile">libgettextsrc</filename></term>
<listitem>
<para>A private library containing common routines used by the various Gettext
programs; these are not intended for general use</para>
<indexterm zone="ch-system-gettext libgettextsrc"><primary sortas="c-libgettextsrc">libgettextsrc</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,17 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-glibc" xreflabel="Glibc" role="wrap">
<sect1 id="ch-system-glibc" role="wrap">
<title>Glibc-&glibc-version;</title>
<?dbhtml filename="glibc.html"?>
<indexterm zone="ch-system-glibc"><primary sortas="a-Glibc">Glibc</primary></indexterm>
<sect2 role="package"><title/>
<para>The Glibc package contains the main C library. This library provides
the basic routines for allocating memory, searching directories, opening and
closing files, reading and writing files, string handling, pattern matching,
arithmetic, and so on.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,56 +21,131 @@
<seglistitem><seg>12.3 SBU</seg><seg>784 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Glibc installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
Gawk, GCC, Gettext, Grep, Make, Perl, Sed, and Texinfo</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Glibc</title>
<para>The linuxthreads tarball contains the man pages for the threading
libraries installed by glibc. Unpack the tarball from within the glibc source
directory:</para>
<para>This package is known to have issues when its default
optimization flags (including the <parameter>-march</parameter> and
<parameter>-mcpu</parameter> options) are changed. If any environment
variables that override default optimizations have been defined, such
as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
unset them when building Glibc.</para>
<screen><userinput>tar xjvf ../glibc-linuxthreads-&glibc-version;.tar.bz2</userinput></screen>
<para>The Glibc build system is self-contained and will install
perfectly, even though the compiler specs file and linker are still
pointing at <filename class="directory">/tools</filename>. The specs
and linker cannot be adjusted before the Glibc install because the
Glibc autoconf tests would give false results and defeat the goal
of achieving a clean build.</para>
<para>Create a build directory:</para>
<para>The linuxthreads tarball contains the man pages for the
threading libraries installed by glibc. Unpack the tarball from
within the glibc source directory:</para>
<screen><userinput>tar xjvf /sources/glibc-linuxthreads-&glibc-version;.tar.bz2</userinput></screen>
<para>The Glibc documentation recommends building Glibc outside of the source
directory in a dedicated build directory:</para>
<screen><userinput>mkdir ../glibc-build
cd ../glibc-build</userinput></screen>
<para>Now prepare Glibc for compilation:</para>
<para>Prepare Glibc for compilation:</para>
<screen><userinput>../glibc-&glibc-version;/configure --prefix=/usr \
--disable-profile --enable-add-ons \
--enable-kernel=2.6.0 --without-cvs \
--libexecdir=/usr/lib/glibc</userinput></screen>
<para>The meaning of the new configure option:</para>
<variablelist>
<varlistentry>
<term><parameter>--libexecdir=/usr/lib/glibc</parameter></term>
<listitem><para>This changes the location of the
<command>pt_chown</command> program from its default of <filename
class="directory">/usr/libexec</filename> to <filename
class="directory">/usr/lib/glibc</filename>.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<important><para>In this section, the test suite for Glibc is
considered critical. Do not skip it under any
circumstance.</para></important>
<para>Test the results:</para>
<screen><userinput>make check</userinput></screen>
<para>The Glibc test suite is highly dependent on certain functions of your host
system. See testing for explanations.</para>
<para>The Glibc test suite is highly dependent on certain functions of
the host system, in particular the kernel. In general, the Glibc test
suite is always expected to pass. However, in certain circumstances,
some failures are unavoidable. This is a list of the most common
issues:</para>
<para>Fix an annoying little warning with:</para>
<itemizedlist>
<listitem><para>The <emphasis>math</emphasis> tests sometimes fail when running
on systems where the CPU is not a relatively new genuine Intel or authentic AMD.
Certain optimization settings are also known to be a factor here.</para></listitem>
<listitem><para>The <emphasis>gettext</emphasis> test sometimes fails due to
host system issues. The exact reasons are not yet clear.</para></listitem>
<listitem><para>The <emphasis>atime</emphasis> test sometimes fails
when the LFS partition is mounted with the
<parameter>noatime</parameter> option.</para></listitem>
<listitem><para>The <emphasis>shm</emphasis> test can fail when the
host system is using the <systemitem
class="filesystem">devfs</systemitem> file system but does not have
the <systemitem class="filesystem">tmpfs</systemitem> file system
mounted at <filename class="directory">/dev/shm</filename>. This
occurs because of a lack of support for <systemitem
class="filesystem">tmpfs</systemitem> in the
kernel.</para></listitem>
<listitem><para>When running on older and slower hardware, some tests
can fail because of test timeouts being exceeded.</para></listitem>
</itemizedlist>
<para>Though it is a harmless message, the install stage of Glibc will
complain about the absence of <filename>/etc/ld.so.conf</filename>.
Prevent this warning with:</para>
<screen><userinput>touch /etc/ld.so.conf</userinput></screen>
<para>And install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>To install the Glibc locales, use the following
command:</para>
<para>The locales that can make the system respond in a different
language were not installed by the above command. Install this
with:</para>
<screen><userinput>make localedata/install-locales</userinput></screen>
<para>An alternative to running the previous command is to install only those
locales which you need or want. The following instructions, instead of the
install-locales target above, will install the minimum set of locales necessary
<para>To save time, an alternative to running the
previous command (which generates and installs every locale Glibc is
aware of) is to install only those locales that are wanted and needed.
This can be achieved by using the <command>localedef</command>
command. Information on this command is located in the
<filename>INSTALL</filename> file in the Glibc source. However, there
are a number of locales that are essential in order for the tests of
future packages to pass, in particular, the
<emphasis>libstdc++</emphasis> tests from GCC. The following
instructions, instead of the <parameter>install-locales</parameter>
target used above, will install the minimum set of locales necessary
for the tests to run successfully:</para>
<screen><userinput>mkdir -p /usr/lib/locale
@ -82,18 +161,40 @@ localedef -i fr_FR@euro -f ISO-8859-15 fr_FR@euro
localedef -i it_IT -f ISO-8859-1 it_IT
localedef -i ja_JP -f EUC-JP ja_JP</userinput></screen>
<para>Build the linuxthreads man pages:</para>
<para>Some locales installed by the <command>make
localedata/install-locales</command> command above are not properly
supported by some applications that are in the LFS and BLFS books.
Because of the various problems that arise due to application
programmers making assumptions that break in such locales, LFS should
not be used in locales that utilize multibyte character sets
(including UTF-8) or right-to-left writing order. Numerous unofficial
and unstable patches are required to fix these problems, and it has
been decided by the LFS developers not to support such complex locales. This applies to the
ja_JP and fa_IR locales as well&mdash;they have been installed only for
GCC and Gettext tests to pass, and the <command>watch</command> program
(part of the Procps package) does not work properly in them. Various
attempts to circumvent these restrictions are documented in
internationalization-related hints.</para>
<para>Build the linuxthreads man pages, which are a great reference
on the threading API (applicable to NPTL as well):</para>
<screen><userinput>make -C ../glibc-&glibc-version;/linuxthreads/man</userinput></screen>
<para>And install these pages:</para>
<para>Install these pages:</para>
<screen><userinput>make -C ../glibc-&glibc-version;/linuxthreads/man install</userinput></screen>
</sect2>
<sect2 id="conf-glibc" role="configuration"><title>Configuring Glibc</title>
<indexterm zone="conf-glibc"><primary sortas="e-/etc/nsswitch.conf">/etc/nsswitch.conf</primary></indexterm>
<indexterm zone="conf-glibc"><primary sortas="e-/etc/localtime">/etc/localtime</primary></indexterm>
<para>The <filename>/etc/nsswitch.conf</filename> file needs to be
created because, although Glibc provides defaults when this file is
missing or corrupt, the Glibc defaults do not work well with
networking. The time zone also needs to be set up.</para>
<para>Create a new file <filename>/etc/nsswitch.conf</filename> by running the
following:</para>
@ -116,20 +217,56 @@ rpc: files
# End /etc/nsswitch.conf</literal>
EOF</userinput></screen>
<para>To find out what time zone you're in, run the following script:</para>
<para>To determine the local time zone, run the following script:</para>
<screen><userinput>tzselect</userinput></screen>
<para>Then create the <filename>/etc/localtime</filename> file by running:</para>
<para>After answering a few questions about the location, the script
will output the name of the time zone (e.g.,
<emphasis>EST5EDT</emphasis> or <emphasis>Canada/Eastern</emphasis>).
Then create the <filename>/etc/localtime</filename> file by
running:</para>
<screen><userinput>cp --remove-destination /usr/share/zoneinfo/<replaceable>[xxx]</replaceable> \
/etc/localtime</userinput></screen>
<para>Replace <replaceable>[xxx]</replaceable> with the name of the time zone that the
<command>tzselect</command> provided (e.g., Canada/Eastern).</para>
<para>The meaning of the cp option:</para>
<variablelist>
<varlistentry>
<term><parameter>--remove-destination</parameter></term>
<listitem><para>This is needed to force removal of the already
existing symbolic link. The reason for copying the file instead of
using a symlink is to cover the situation where <filename
class="directory">/usr</filename> is on a separate partition. This
could be important when booted into single user
mode.</para></listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="conf-ld" role="configuration">
<title>Configuring 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
class="libraryfile">/lib/ld-linux.so.2</filename>) searches through
<filename class="directory">/lib</filename> and <filename
class="directory">/usr/lib</filename> for dynamic libraries that are
needed by programs as they are run. However, if there are libraries in
directories other than <filename class="directory">/lib</filename> and
<filename class="directory">/usr/lib</filename>, these need to be
added to the <filename>/etc/ld.so.conf</filename> file in order
for the dynamic loader to find them. Two directories that are commonly
known to contain additional libraries are <filename
class="directory">/usr/local/lib</filename> and <filename
class="directory">/opt/lib</filename>, so add those directories to the
dynamic loader's search path.</para>
<para>Create a new file <filename>/etc/ld.so.conf</filename> by running the
following:</para>
@ -145,11 +282,413 @@ EOF</userinput></screen>
</sect2>
<sect2 id="contents-glibc" role="content"><title>Contents of Glibc</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<seglistitem><seg>catchsegv, gencat, getconf,
getent, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale,
localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen,
rpcinfo, sln, sprof, tzselect, xtrace, zdump, and zic</seg>
<seg>ld.so, libBrokenLocale.[a,so],
libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so],
libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a,
libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so,
libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so,
libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so],
libthread_db.so, and libutil.[a,so]</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="catchsegv">
<term><command>catchsegv</command></term>
<listitem>
<para>Can be used to create a stack trace when a program
terminates with a segmentation fault</para>
<indexterm zone="ch-system-glibc catchsegv"><primary sortas="b-catchsegv">catchsegv</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gencat">
<term><command>gencat</command></term>
<listitem>
<para>Generates message catalogues</para>
<indexterm zone="ch-system-glibc gencat"><primary sortas="b-gencat">gencat</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="getconf">
<term><command>getconf</command></term>
<listitem>
<para>Displays the system configuration values for file system specific variables</para>
<indexterm zone="ch-system-glibc getconf"><primary sortas="b-getconf">getconf</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="getent">
<term><command>getent</command></term>
<listitem>
<para>Gets entries from an administrative database</para>
<indexterm zone="ch-system-glibc getent"><primary sortas="b-getent">getent</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="iconv">
<term><command>iconv</command></term>
<listitem>
<para>Performs character set conversion</para>
<indexterm zone="ch-system-glibc iconv"><primary sortas="b-iconv">iconv</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="iconvconfig">
<term><command>iconvconfig</command></term>
<listitem>
<para>Creates fastloading <command>iconv</command> module configuration files</para>
<indexterm zone="ch-system-glibc iconvconfig"><primary sortas="b-iconvconfig">iconvconfig</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="ldconfig">
<term><command>ldconfig</command></term>
<listitem>
<para>Configures the dynamic linker runtime bindings</para>
<indexterm zone="ch-system-glibc ldconfig"><primary sortas="b-ldconfig">ldconfig</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="ldd">
<term><command>ldd</command></term>
<listitem>
<para>Reports which shared libraries are required
by each given program or shared library</para>
<indexterm zone="ch-system-glibc ldd"><primary sortas="b-ldd">ldd</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="lddlibc4">
<term><command>lddlibc4</command></term>
<listitem>
<para>Assists <command>ldd</command> with object files</para>
<indexterm zone="ch-system-glibc lddlibc4"><primary sortas="b-lddlibc4">lddlibc4</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="locale">
<term><command>locale</command></term>
<listitem>
<para>Tells the compiler to enable or disable the use of POSIX locales
for built-in operations</para>
<indexterm zone="ch-system-glibc locale"><primary sortas="b-locale">locale</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="localedef">
<term><command>localedef</command></term>
<listitem>
<para>Compiles locale specifications</para>
<indexterm zone="ch-system-glibc localedef"><primary sortas="b-localedef">localedef</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="mtrace">
<term><command>mtrace</command></term>
<listitem>
<para>Reads and interprets a memory trace file and
ouputs a summary in human-readable format</para>
<indexterm zone="ch-system-glibc mtrace"><primary sortas="b-mtrace">mtrace</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="nscd">
<term><command>nscd</command></term>
<listitem>
<para>A daemon that provides a cache for the most common name
service requests</para>
<indexterm zone="ch-system-glibc nscd"><primary sortas="b-nscd">nscd</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="nscd_nischeck">
<term><command>nscd_nischeck</command></term>
<listitem>
<para>Checks whether or not secure mode is necessary for NIS+ lookup</para>
<indexterm zone="ch-system-glibc nscd_nischeck"><primary sortas="b-nscd_nischeck">nscd_nischeck</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="pcprofiledump">
<term><command>pcprofiledump</command></term>
<listitem>
<para>Dumps information generated by PC profiling</para>
<indexterm zone="ch-system-glibc pcprofiledump"><primary sortas="b-pcprofiledump">pcprofiledump</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="pt_chown">
<term><command>pt_chown</command></term>
<listitem>
<para>A helper program for <command>grantpt</command> to set
the owner, group and access permissions of a slave pseudo terminal</para>
<indexterm zone="ch-system-glibc pt_chown"><primary sortas="b-pt_chown">pt_chown</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="rpcgen">
<term><command>rpcgen</command></term>
<listitem>
<para>Generates C code to implement the Remote Procecure Call (RPC) protocol</para>
<indexterm zone="ch-system-glibc rpcgen"><primary sortas="b-rpcgen">rpcgen</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="rpcinfo">
<term><command>rpcinfo</command></term>
<listitem>
<para>Makes an RPC call to an RPC server</para>
<indexterm zone="ch-system-glibc rpcinfo"><primary sortas="b-rpcinfo">rpcinfo</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="sln">
<term><command>sln</command></term>
<listitem>
<para>A statically linked <command>ln</command> program</para>
<indexterm zone="ch-system-glibc sln"><primary sortas="b-sln">sln</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="sprof">
<term><command>sprof</command></term>
<listitem>
<para>Reads and displays shared object profiling data</para>
<indexterm zone="ch-system-glibc sprof"><primary sortas="b-sprof">sprof</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="tzselect">
<term><command>tzselect</command></term>
<listitem>
<para>Asks the user about the location of the
system and reports the corresponding time zone description</para>
<indexterm zone="ch-system-glibc tzselect"><primary sortas="b-tzselect">tzselect</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="xtrace">
<term><command>xtrace</command></term>
<listitem>
<para>Traces the execution of a program by
printing the currently executed function</para>
<indexterm zone="ch-system-glibc xtrace"><primary sortas="b-xtrace">xtrace</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zdump">
<term><command>zdump</command></term>
<listitem>
<para>The time zone dumper</para>
<indexterm zone="ch-system-glibc zdump"><primary sortas="b-zdump">zdump</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zic">
<term><command>zic</command></term>
<listitem>
<para>The time zone compiler</para>
<indexterm zone="ch-system-glibc zic"><primary sortas="b-zic">zic</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="ld.so">
<term><filename class="libraryfile">ld.so</filename></term>
<listitem>
<para>The helper program for shared library executables</para>
<indexterm zone="ch-system-glibc ld.so"><primary sortas="c-ld.so">ld.so</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libBrokenLocale">
<term><filename class="libraryfile">libBrokenLocale</filename></term>
<listitem>
<para>Used by programs, such as Mozilla, to solve broken locales</para>
<indexterm zone="ch-system-glibc libBrokenLocale"><primary sortas="c-libBrokenLocale">libBrokenLocale</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libSegFault">
<term><filename class="libraryfile">libSegFault</filename></term>
<listitem>
<para>The segmentation fault signal handler</para>
<indexterm zone="ch-system-glibc libSegFault"><primary sortas="c-libSegFault">libSegFault</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libanl">
<term><filename class="libraryfile">libanl</filename></term>
<listitem>
<para>An asynchronous name lookup library</para>
<indexterm zone="ch-system-glibc libanl"><primary sortas="c-libanl">libanl</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libbsd-compat">
<term><filename class="libraryfile">libbsd-compat</filename></term>
<listitem>
<para>Provides the portability needed
in order to run certain Berkey Software Distribution (BSD) programs under Linux</para>
<indexterm zone="ch-system-glibc libbsd-compat"><primary sortas="c-libbsd-compat">libbsd-compat</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libc">
<term><filename class="libraryfile">libc</filename></term>
<listitem>
<para>The main C library</para>
<indexterm zone="ch-system-glibc libc"><primary sortas="c-libc">libc</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libcrypt">
<term><filename class="libraryfile">libcrypt</filename></term>
<listitem>
<para>The cryptography library</para>
<indexterm zone="ch-system-glibc libcrypt"><primary sortas="c-libcrypt">libcrypt</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libdl">
<term><filename class="libraryfile">libdl</filename></term>
<listitem>
<para>The dynamic linking interface library</para>
<indexterm zone="ch-system-glibc libdl"><primary sortas="c-libdl">libdl</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libg">
<term><filename class="libraryfile">libg</filename></term>
<listitem>
<para>A runtime library for <command>g++</command></para>
<indexterm zone="ch-system-glibc libg"><primary sortas="c-libg">libg</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libieee">
<term><filename class="libraryfile">libieee</filename></term>
<listitem>
<para>The Institute of Electrical and Electronic Engineers (IEEE) floating point library</para>
<indexterm zone="ch-system-glibc libieee"><primary sortas="c-libieee">libieee</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libm">
<term><filename class="libraryfile">libm</filename></term>
<listitem>
<para>The mathematical library</para>
<indexterm zone="ch-system-glibc libm"><primary sortas="c-libm">libm</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libmcheck">
<term><filename class="libraryfile">libmcheck</filename></term>
<listitem>
<para>Contains code run at boot</para>
<indexterm zone="ch-system-glibc libmcheck"><primary sortas="c-libmcheck">libmcheck</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libmemusage">
<term><filename class="libraryfile">libmemusage</filename></term>
<listitem>
<para>Used by <command>memusage</command> to help collect
information about the memory usage of a program</para>
<indexterm zone="ch-system-glibc libmemusage"><primary sortas="c-libmemusage">libmemusage</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libnsl">
<term><filename class="libraryfile">libnsl</filename></term>
<listitem>
<para>The network services library</para>
<indexterm zone="ch-system-glibc libnsl"><primary sortas="c-libnsl">libnsl</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libnss">
<term><filename class="libraryfile">libnss</filename></term>
<listitem>
<para>The Name Service Switch libraries,
containing functions for resolving host names, user names, group names,
aliases, services, protocols, etc</para>
<indexterm zone="ch-system-glibc libnss"><primary sortas="c-libnss">libnss</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libpcprofile">
<term><filename class="libraryfile">libpcprofile</filename></term>
<listitem>
<para>Contains profiling functions used
to track the amount of CPU time spent in specific source code lines</para>
<indexterm zone="ch-system-glibc libpcprofile"><primary sortas="c-libpcprofile">libpcprofile</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libpthread">
<term><filename class="libraryfile">libpthread</filename></term>
<listitem>
<para>The POSIX threads library</para>
<indexterm zone="ch-system-glibc libpthread"><primary sortas="c-libpthread">libpthread</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libresolv">
<term><filename class="libraryfile">libresolv</filename></term>
<listitem>
<para>Contains functions for creating,
sending, and interpreting packets to the Internet domain name servers</para>
<indexterm zone="ch-system-glibc libresolv"><primary sortas="c-libresolv">libresolv</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="librpcsvc">
<term><filename class="libraryfile">librpcsvc</filename></term>
<listitem>
<para>Contains functions providing miscellaneous RPC services</para>
<indexterm zone="ch-system-glibc librpcsvc"><primary sortas="c-librpcsvc">librpcsvc</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="librt">
<term><filename class="libraryfile">librt</filename></term>
<listitem>
<para>Contains functions providing most of the
interfaces specified by the POSIX.1b Realtime Extension</para>
<indexterm zone="ch-system-glibc librt"><primary sortas="c-librt">librt</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libthread_db">
<term><filename class="libraryfile">libthread_db</filename></term>
<listitem>
<para>Contains functions useful for
building debuggers for multi-threaded programs</para>
<indexterm zone="ch-system-glibc libthread_db"><primary sortas="c-libthread_db">libthread_db</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libutil">
<term><filename class="libraryfile">libutil</filename></term>
<listitem>
<para>Contains code for <quote>standard</quote> functions used in many different Unix utilities</para>
<indexterm zone="ch-system-glibc libutil"><primary sortas="c-libutil">libutil</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-grep" xreflabel="Grep" role="wrap">
<sect1 id="ch-system-grep" role="wrap">
<title>Grep-&grep-version;</title>
<?dbhtml filename="grep.html"?>
<indexterm zone="ch-system-grep"><primary sortas="a-Grep">Grep</primary></indexterm>
<sect2 role="package"><title/>
<para>The Grep package contains programs for searching through files.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,11 @@
<seglistitem><seg>0.1 SBU</seg><seg>5.8 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Grep installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils,
Diffutils, GCC, Gettext, Glibc, Make, Sed, and Texinfo</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -33,7 +39,7 @@
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -42,8 +48,40 @@
<sect2 id="contents-grep" role="content"><title>Contents of Grep</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>egrep (link to grep), fgrep (link to grep), and grep</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="egrep">
<term><command>egrep</command></term>
<listitem>
<para>Prints lines matching an extended regular expression</para>
<indexterm zone="ch-system-grep egrep"><primary sortas="b-egrep">egrep</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="fgrep">
<term><command>fgrep</command></term>
<listitem>
<para>Prints lines matching a list of fixed strings</para>
<indexterm zone="ch-system-grep fgrep"><primary sortas="b-fgrep">fgrep</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grep">
<term><command>grep</command></term>
<listitem>
<para>Prints lines matching a basic regular expression</para>
<indexterm zone="ch-system-grep grep"><primary sortas="b-grep">grep</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-groff" xreflabel="Groff" role="wrap">
<sect1 id="ch-system-groff" role="wrap">
<title>Groff-&groff-version;</title>
<?dbhtml filename="groff.html"?>
<indexterm zone="ch-system-groff"><primary sortas="a-Groff">Groff</primary></indexterm>
<sect2 role="package"><title/>
<para>The Groff package contains programs for processing and formatting text.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,11 +18,21 @@
<seglistitem><seg>0.5 SBU</seg><seg>43 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Groff installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
Gawk, GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Groff</title>
<para>Groff expects the environment variable <envar>PAGE</envar>
to contain the default paper size. For users in the United States,
<parameter>PAGE=letter</parameter> is appropriate. Elsewhere,
<parameter>PAGE=A4</parameter> may be more suitable.</para>
<para>Prepare Groff for compilation:</para>
<screen><userinput>PAGE=<replaceable>[paper_size]</replaceable> ./configure --prefix=/usr</userinput></screen>
@ -30,11 +41,12 @@
<screen><userinput>make</userinput></screen>
<para>Now install it:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Create the following symlinks:</para>
<para>Some documentation programs, such as <command>xman</command>,
will not work properly without the following symlinks:</para>
<screen><userinput>ln -s soelim /usr/bin/zsoelim
ln -s eqn /usr/bin/geqn
@ -45,8 +57,315 @@ ln -s tbl /usr/bin/gtbl</userinput></screen>
<sect2 id="contents-groff" role="content"><title>Contents of Groff</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>addftinfo, afmtodit, eqn, eqn2graph, geqn (link to eqn), grn,
grodvi, groff, groffer, grog, grolbp, grolj4, grops, grotty, gtbl (link to tbl), hpftodit,
indxbib, lkbib, lookbib, mmroff, neqn, nroff, pfbtops, pic, pic2graph, post-grohtml,
pre-grohtml, refer, soelim, tbl, tfmtodit, troff, and zsoelim (link to soelim)</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="addftinfo">
<term><command>addftinfo</command></term>
<listitem>
<para>Reads a troff font file and adds some
additional font-metric information that is used by the <command>groff</command> system</para>
<indexterm zone="ch-system-groff addftinfo"><primary sortas="b-addftinfo">addftinfo</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="afmtodit">
<term><command>afmtodit</command></term>
<listitem>
<para>Creates a font file for use with <command>groff</command> and <command>grops</command></para>
<indexterm zone="ch-system-groff afmtodit"><primary sortas="b-afmtodit">afmtodit</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="eqn">
<term><command>eqn</command></term>
<listitem>
<para>Compiles descriptions of equations embedded
within troff input files into commands that are understood by <command>troff</command></para>
<indexterm zone="ch-system-groff eqn"><primary sortas="b-eqn">eqn</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="eqn2graph">
<term><command>eqn2graph</command></term>
<listitem>
<para>Converts a troff EQN (equation) into a cropped image</para>
<indexterm zone="ch-system-groff eqn2graph"><primary sortas="b-eqn2graph">eqn2graph</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="geqn">
<term><command>eqn</command></term>
<listitem>
<para>A link to <command>eqn</command></para>
<indexterm zone="ch-system-groff geqn"><primary sortas="b-geqn">geqn</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grn">
<term><command>grn</command></term>
<listitem>
<para>A <command>groff</command> preprocessor for gremlin files</para>
<indexterm zone="ch-system-groff grn"><primary sortas="b-grn">grn</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grodvi">
<term><command>grodvi</command></term>
<listitem>
<para>A driver for <command>groff</command> that produces TeX dvi format</para>
<indexterm zone="ch-system-groff grodvi"><primary sortas="b-grodvi">grodvi</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="groff">
<term><command>groff</command></term>
<listitem>
<para>A front-end to the groff document
formatting system; normally, it runs the <command>troff</command> program and a post-processor
appropriate for the selected device</para>
<indexterm zone="ch-system-groff groff"><primary sortas="b-groff">groff</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="groffer">
<term><command>groffer</command></term>
<listitem>
<para>Displays groff files and man pages on X and tty terminals</para>
<indexterm zone="ch-system-groff groffer"><primary sortas="b-groffer">groffer</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grog">
<term><command>grog</command></term>
<listitem>
<para>Reads files and guesses which of the <command>groff</command>
options <parameter>-e</parameter>, <parameter>-man</parameter>,
<parameter>-me</parameter>, <parameter>-mm</parameter>,
<parameter>-ms</parameter>, <parameter>-p</parameter>, <parameter>-s</parameter>,
and <parameter>-t</parameter> are required for printing
files, and reports the <command>groff</command> command including those options</para>
<indexterm zone="ch-system-groff grog"><primary sortas="b-grog">grog</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grolbp">
<term><command>grolbp</command></term>
<listitem>
<para>Is a <command>groff</command> driver for Canon CAPSL printers
(LBP-4 and LBP-8 series laser printers)</para>
<indexterm zone="ch-system-groff grolbp"><primary sortas="b-grolbp">grolbp</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grolj4">
<term><command>grolj4</command></term>
<listitem>
<para>Is a driver for <command>groff</command> that produces output
in PCL5 format suitable for an HP Laserjet 4 printer</para>
<indexterm zone="ch-system-groff grolj4"><primary sortas="b-grolj4">grolj4</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grops">
<term><command>grops</command></term>
<listitem>
<para>Translates the output of GNU <command>troff</command> to PostScript</para>
<indexterm zone="ch-system-groff grops"><primary sortas="b-grops">grops</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grotty">
<term><command>grotty</command></term>
<listitem>
<para>Translates the output of GNU <command>troff</command> into
a form suitable for typewriter-like devices</para>
<indexterm zone="ch-system-groff grotty"><primary sortas="b-grotty">grotty</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gtbl">
<term><command>gtbl</command></term>
<listitem>
<para>Is the GNU implementation of <command>tbl</command></para>
<indexterm zone="ch-system-groff gtbl"><primary sortas="b-gtbl">gtbl</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="hpftodit">
<term><command>hpftodit</command></term>
<listitem>
<para>Creates a font file for use with
<command>groff -Tlj4</command> from an HP-tagged font metric file</para>
<indexterm zone="ch-system-groff hpftodit"><primary sortas="b-hpftodit">hpftodit</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="indxbib">
<term><command>indxbib</command></term>
<listitem>
<para>Creates an inverted index for the bibliographic databases with a specified file for
use with <command>refer</command>, <command>lookbib</command>, and <command>lkbib</command></para>
<indexterm zone="ch-system-groff indxbib"><primary sortas="b-indxbib">indxbib</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="lkbib">
<term><command>lkbib</command></term>
<listitem>
<para>Searches bibliographic databases for references that contain
specified keys and reports any references found</para>
<indexterm zone="ch-system-groff lkbib"><primary sortas="b-lkbib">lkbib</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="lookbib">
<term><command>lookbib</command></term>
<listitem>
<para>Prints a prompt on the standard error (unless the standard input
is not a terminal), reads a line containing a
set of keywords from the standard input, searches the bibliographic databases in a specified
file for references containing those keywords, prints any references
found on the standard output, and repeats this process until the end
of input</para>
<indexterm zone="ch-system-groff lookbib"><primary sortas="b-lookbib">lookbib</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="mmroff">
<term><command>mmroff</command></term>
<listitem>
<para>A simple preprocessor for <command>groff</command></para>
<indexterm zone="ch-system-groff mmroff"><primary sortas="b-mmroff">mmroff</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="neqn">
<term><command>neqn</command></term>
<listitem>
<para>Formats equations for American Standard Code for Information
Interchange (ASCII) output</para>
<indexterm zone="ch-system-groff neqn"><primary sortas="b-neqn">neqn</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="nroff">
<term><command>nroff</command></term>
<listitem>
<para>A script that emulates the <command>nroff</command> command using <command>groff</command></para>
<indexterm zone="ch-system-groff nroff"><primary sortas="b-nroff">nroff</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="pfbtops">
<term><command>pfbtops</command></term>
<listitem>
<para>Translates a PostScript font in <filename class="extension">.pfb</filename> format to ASCII</para>
<indexterm zone="ch-system-groff pfbtops"><primary sortas="b-pfbtops">pfbtops</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="pic">
<term><command>pic</command></term>
<listitem>
<para>Compiles descriptions of pictures embedded
within troff or TeX input files into commands understood by TeX or <command>troff</command></para>
<indexterm zone="ch-system-groff pic"><primary sortas="b-pic">pic</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="pic2graph">
<term><command>pic2graph</command></term>
<listitem>
<para>Converts a PIC diagram into a cropped image</para>
<indexterm zone="ch-system-groff pic2graph"><primary sortas="b-pic2graph">pic2graph</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="post-grohtml">
<term><command>post-grohtml</command></term>
<listitem>
<para>Translates the output of GNU <command>troff</command> to html</para>
<indexterm zone="ch-system-groff post-grohtml"><primary sortas="b-post-grohtml">post-grohtml</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="pre-grohtml">
<term><command>pre-grohtml </command></term>
<listitem>
<para>Translates the output of GNU <command>troff</command> to html</para>
<indexterm zone="ch-system-groff pre-grohtml"><primary sortas="b-pre-grohtml">pre-grohtml</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="refer">
<term><command>refer</command></term>
<listitem>
<para>Copies the contents of a file to the standard output, except
that lines between <emphasis>.[</emphasis> and <emphasis>.]</emphasis>
are interpreted as citations, and lines between
<emphasis>.R1</emphasis> and <emphasis>.R2</emphasis> are interpreted
as commands for how citations are to be processed</para>
<indexterm zone="ch-system-groff refer"><primary sortas="b-refer">refer</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="soelim">
<term><command>soelim</command></term>
<listitem>
<para>Reads files and replaces lines of the form
<emphasis>.so file</emphasis> by the contents of the mentioned
<emphasis>file</emphasis></para>
<indexterm zone="ch-system-groff soelim"><primary sortas="b-soelim">soelim</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="tbl">
<term><command>tbl</command></term>
<listitem>
<para>Compiles descriptions of tables embedded
within troff input files into commands that are understood by <command>troff</command></para>
<indexterm zone="ch-system-groff tbl"><primary sortas="b-tbl">tbl</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="tfmtodit">
<term><command>tfmtodit</command></term>
<listitem>
<para>Creates a font file for use with <command>groff -Tdvi</command></para>
<indexterm zone="ch-system-groff tfmtodit"><primary sortas="b-tfmtodit">tfmtodit</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="troff">
<term><command>troff</command></term>
<listitem>
<para>Is highly compatible with Unix <command>troff</command>; it
should usually be invoked using the
<command>groff</command> command, which will also run preprocessors and post-processors in the
appropriate order and with the appropriate options</para>
<indexterm zone="ch-system-groff troff"><primary sortas="b-troff">troff</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zsoelim">
<term><command>zsoelim</command></term>
<listitem>
<para>Is the GNU implementation of <command>soelim</command></para>
<indexterm zone="ch-system-groff zsoelim"><primary sortas="b-zsoelim">zsoelim</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-grub" xreflabel="Grub" role="wrap">
<sect1 id="ch-system-grub" role="wrap">
<title>Grub-&grub-version;</title>
<?dbhtml filename="grub.html"?>
<indexterm zone="ch-system-grub"><primary sortas="a-Grub">Grub</primary></indexterm>
<sect2 role="package"><title/>
<para>The Grub package contains the Grand Unified Bootloader.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,28 +18,49 @@
<seglistitem><seg>0.2 SBU</seg><seg>10 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Grub installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, Ncurses, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Grub</title>
<para>This package is known to have issues when its default
optimization flags (including the <parameter>-march</parameter> and
<parameter>-mcpu</parameter> options) are changed. If any environment
variables that override default optimizations have been defined, such
as <envar>CFLAGS</envar> and <envar>CXXFLAGS</envar>,
unset them when building Grub.</para>
<para>Prepare Grub for compilation:</para>
<screen><userinput>./configure --prefix=/usr</userinput></screen>
<para>Now 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>Now install it:</para>
<para>Note that the test results will always show the error
<quote>ufs2_stage1_5 is too big.</quote> This is due to a compiler
issue, but can be ignored unless you plan to boot from an UFS
partition. The partitions are normally only used by Sun
workstations.</para>
<para>Install the package:</para>
<screen><userinput>make install
mkdir /boot/grub
cp /usr/lib/grub/i386-pc/stage{1,2} /boot/grub</userinput></screen>
<para>Replace <filename class="directory">i386-pc</filename> with whatever
directory is appropriate for the hardware in use.</para>
<para>The <filename class="directory">i386-pc</filename> directory
contains a number of <filename>*stage1_5</filename> files, different
ones for different file systems. Review the files available and copy
@ -52,9 +74,58 @@ copy the <filename>e2fs_stage1_5</filename> and/or
<sect2 id="contents-grub" role="content"><title>Contents of Grub</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>grub, grub-install,
grub-md5-crypt, grub-terminfo, and mbchk</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="grub">
<term><command>grub</command></term>
<listitem>
<para>The Grand Unified Bootloader's command shell</para>
<indexterm zone="ch-system-grub grub"><primary sortas="b-grub">grub</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grub-install">
<term><command>grub-install</command></term>
<listitem>
<para>Installs GRUB on the given device</para>
<indexterm zone="ch-system-grub grub-install"><primary sortas="b-grub-install">grub-install</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grub-md5-crypt">
<term><command>grub-md5-crypt</command></term>
<listitem>
<para>Encrypts a password in MD5 format</para>
<indexterm zone="ch-system-grub grub-md5-crypt"><primary sortas="b-grub-md5-crypt">grub-md5-crypt</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="grub-terminfo">
<term><command>grub-terminfo</command></term>
<listitem>
<para>Generates a terminfo command from a terminfo name; it can be
employed if an unknown terminal is being used</para>
<indexterm zone="ch-system-grub grub-terminfo"><primary sortas="b-grub-terminfo">grub-terminfo</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="mbchk">
<term><command>mbchk</command></term>
<listitem>
<para>Checks the format of a multi-boot kernel</para>
<indexterm zone="ch-system-grub mbchk"><primary sortas="b-mbchk">mbchk</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,15 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-gzip" xreflabel="Gzip" role="wrap">
<sect1 id="ch-system-gzip" role="wrap">
<title>Gzip-&gzip-version;</title>
<?dbhtml filename="gzip.html"?>
<indexterm zone="ch-system-gzip"><primary sortas="a-Gzip">Gzip</primary></indexterm>
<sect2 role="package"><title/>
<para>The Gzip package contains programs for compressing and decompressing
files.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +19,11 @@
<seglistitem><seg>0.1 SBU</seg><seg>2.6 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Gzip installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -26,7 +33,10 @@
<screen><userinput>./configure --prefix=/usr</userinput></screen>
<para>Issue a sed command:</para>
<para>The <command>gzexe</command> script has the location of the
<command>gzip</command> binary hard-wired into it. Because the
location of the binary is changed later, the following command ensures
that the new location gets placed into the script:</para>
<screen><userinput>sed -i 's@"BINDIR"@/bin@g' gzexe.in</userinput></screen>
@ -51,8 +61,134 @@ ln -s gunzip /bin/uncompress</userinput></screen>
<sect2 id="contents-gzip" role="content"><title>Contents of Gzip</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>gunzip (link to gzip), gzexe,
gzip, uncompress (link to gunzip), zcat (link to gzip), zcmp, zdiff,
zegrep, zfgrep, zforce, zgrep, zless, zmore, and znew</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="gunzip">
<term><command>gunzip</command></term>
<listitem>
<para>Decompresses gzipped files</para>
<indexterm zone="ch-system-gzip gunzip"><primary sortas="b-gunzip">gunzip</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gzexe">
<term><command>gzexe</command></term>
<listitem>
<para>Creates self-uncompressing executable files</para>
<indexterm zone="ch-system-gzip gzexe"><primary sortas="b-gzexe">gzexe</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="gzip">
<term><command>gzip</command></term>
<listitem>
<para>Compresses the given files using Lempel-Ziv (LZ77) coding</para>
<indexterm zone="ch-system-gzip gzip"><primary sortas="b-gzip">gzip</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="uncompress">
<term><command>uncompress</command></term>
<listitem>
<para>Decompresses compressed files</para>
<indexterm zone="ch-system-gzip uncompress"><primary sortas="b-uncompress">uncompress</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zcat">
<term><command>zcat</command></term>
<listitem>
<para>Uncompresses the given gzipped files to standard output</para>
<indexterm zone="ch-system-gzip zcat"><primary sortas="b-zcat">zcat</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zcmp">
<term><command>zcmp</command></term>
<listitem>
<para>Runs <command>cmp</command> on gzipped files</para>
<indexterm zone="ch-system-gzip zcmp"><primary sortas="b-zcmp">zcmp</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zdiff">
<term><command>zdiff</command></term>
<listitem>
<para>Runs <command>diff</command> on gzipped files</para>
<indexterm zone="ch-system-gzip zdiff"><primary sortas="b-zdiff">zdiff</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zegrep">
<term><command>zegrep</command></term>
<listitem>
<para>Runs <command>egrep</command> on gzipped files</para>
<indexterm zone="ch-system-gzip zegrep"><primary sortas="b-zegrep">zegrep</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zfgrep">
<term><command>zfgrep</command></term>
<listitem>
<para>Runs <command>fgrep</command> on gzipped files</para>
<indexterm zone="ch-system-gzip zfgrep"><primary sortas="b-zfgrep">zfgrep</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zforce">
<term><command>zforce</command></term>
<listitem>
<para>Forces a <filename class="extension">.gz</filename> extension on all given files
that are gzipped files, so that <command>gzip</command> will not compress them again; this can be
useful when file names were truncated during a file transfer</para>
<indexterm zone="ch-system-gzip zforce"><primary sortas="b-zforce">zforce</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zgrep">
<term><command>zgrep</command></term>
<listitem>
<para>Runs <command>grep</command> on gzipped files</para>
<indexterm zone="ch-system-gzip zgrep"><primary sortas="b-zgrep">zgrep</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zless">
<term><command>zless</command></term>
<listitem>
<para>Runs <command>less</command> on gzipped files</para>
<indexterm zone="ch-system-gzip zless"><primary sortas="b-zless">zless</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="zmore">
<term><command>zmore</command></term>
<listitem>
<para>Runs <command>more</command> on gzipped files</para>
<indexterm zone="ch-system-gzip zmore"><primary sortas="b-zmore">zmore</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="znew">
<term><command>znew</command></term>
<listitem>
<para>Re-compresses files from <command>compress</command> format to
<command>gzip</command> format&mdash;<filename class="extension">.Z</filename>
to <filename class="extension">.gz</filename></para>
<indexterm zone="ch-system-gzip znew"><primary sortas="b-znew">znew</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -10,6 +10,12 @@
<indexterm zone="ch-system-hotplug"><primary sortas="a-Hotplug">Hotplug</primary></indexterm>
<sect2 role="package"><title/>
<para>The Hotplug package contains scripts that react upon hotplug events
generated by the kernel. Such events correspond to every change in the kernel
state visible in the <systemitem class="filesystem">sysfs</systemitem>
filesystem, e.g., the addition and removal of hardware. This package also
detects existing hardware during boot and inserts the relevant modules into the
running kernel.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +23,10 @@
<seglistitem><seg>0.01 SBU</seg><seg>0.1 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Hotplug installation depends on</segtitle>
<seglistitem><seg>Unchecked</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -26,15 +36,17 @@
<screen><userinput>make install</userinput></screen>
<para>Copy a file that the &quot;install&quot; target omits.</para>
<para>Copy a file that the <quote>install</quote> target omits.</para>
<screen><userinput>cp etc/hotplug/pnp.distmap /etc/hotplug</userinput></screen>
<para>Remove Hotplug's init script:</para>
<para>Remove the init script that Hotplug installs, since we're going to be
using the script included with LFS-Bootscripts:</para>
<screen><userinput>rm -rf /etc/init.d</userinput></screen>
<para>Remove the network hotplug agent:</para>
<para>Network device hotplugging is not supported by LFS bootscripts yet. For
that reason, remove the network hotplug agent:</para>
<screen><userinput>rm -f /etc/hotplug/net.agent</userinput></screen>
</sect2>
@ -42,7 +54,113 @@
<sect2 id="contents-hotplug" role="content"><title>Contents of Hotplug</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed program</segtitle>
<segtitle>Installed scripts</segtitle>
<segtitle>Installed files</segtitle>
<seglistitem><seg>hotplug</seg>
<seg>/etc/hotplug/*.rc, /etc/hotplug/*.agent</seg>
<seg>/etc/hotplug/hotplug.functions, /etc/hotplug/blacklist, /etc/hotplug/{pci,usb},
/etc/hotplug/usb.usermap, /etc/hotplug.d</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="hotplug">
<term><command>hotplug</command></term>
<listitem>
<indexterm zone="ch-system-hotplug hotplug"><primary
sortas="b-hotplug">hotplug</primary></indexterm>
<para>This script is called by default by Linux kernel when something
changes in its internal state (e.g., a new device is added or removed).</para>
</listitem>
</varlistentry>
<varlistentry id="hotplug-rc">
<term><command>/etc/hotplug/*.rc</command></term>
<listitem>
<indexterm zone="ch-system-hotplug hotplug-rc"><primary
sortas="d-/etc/hotplug/*.rc">/etc/hotplug/*.rc</primary></indexterm>
<para>These scripts are used for cold plugging, i.e., detection and other
specific actions upon hardware already present during system startup.
They are called by the <filename>hotplug</filename> initscript that comes
from the LFS-Bootscripts package.
The <command>*.rc</command>
scripts try to recover hotplug events that were lost during system boot
because, e.g., the root filesystem was not mounted by the kernel.
</para>
</listitem>
</varlistentry>
<varlistentry id="hotplug-agent">
<term><command>/etc/hotplug/*.agent</command></term>
<listitem>
<indexterm zone="ch-system-hotplug hotplug-agent"><primary
sortas="d-/etc/hotplug/*.agent">/etc/hotplug/*.agent</primary></indexterm>
<para>These scripts are called by <command>hotplug</command>
in response to different types of hotplug events generated by the kernel.
Their action is to insert corresponding kernel modules and call user-provided
scripts, if any.
</para>
</listitem>
</varlistentry>
<varlistentry id="hotplug-functions">
<term><filename>/etc/hotplug/hotplug.functions</filename></term>
<listitem>
<indexterm zone="ch-system-hotplug hotplug-functions"><primary
sortas="e-/etc/hotplug/hotplug.functions">/etc/hotplug/hotplug.functions</primary></indexterm>
<para>This file contains common functions used by other scripts in Hotplug
package.
</para>
</listitem>
</varlistentry>
<varlistentry id="hotplug-blacklist">
<term><filename>/etc/hotplug/blacklist</filename></term>
<listitem>
<indexterm zone="ch-system-hotplug hotplug-blacklist"><primary
sortas="e-/etc/hotplug/blacklist">/etc/hotplug/blacklist</primary></indexterm>
<para>This file contains the list of modules that should never be
inserted into the kernel by hotplug scripts.
</para>
</listitem>
</varlistentry>
<varlistentry id="hotplug-subdirs">
<term><filename class="directory">/etc/hotplug/{pci,usb}</filename></term>
<listitem>
<indexterm zone="ch-system-hotplug hotplug-subdirs"><primary
sortas="e-/etc/hotplug/{pci,usb}">/etc/hotplug/{pci,usb}</primary></indexterm>
<para>These directories are supposed to contain user-written handlers for
hotplug events.
</para>
</listitem>
</varlistentry>
<varlistentry id="hotplug-usb.usermap">
<term><filename>/etc/hotplug/usb.usermap</filename></term>
<listitem>
<indexterm zone="ch-system-hotplug hotplug-usb.usermap"><primary
sortas="e-/etc/hotplug/usb.usermap">/etc/hotplug/usb.usermap</primary></indexterm>
<para>This file contains rules that determine which user-defined handlers to
call for each USB device, based on its vendor, id and other attributes.
</para>
</listitem>
</varlistentry>
<varlistentry id="hotplug-hotplug.d">
<term><filename class="directory">/etc/hotplug.d</filename></term>
<listitem>
<indexterm zone="ch-system-hotplug hotplug-hotplug.d"><primary
sortas="e-/etc/hotplug.d">/etc/hotplug.d</primary></indexterm>
<para>This directory contains programs (or symlinks to them)
that are interested in receiving hotplug events. E.g.,
<application>Udev</application> puts its symlink here during installation.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-iana-etc" xreflabel="Iana-Etc" role="wrap">
<sect1 id="ch-system-iana-etc" role="wrap">
<title>Iana-Etc-&iana-etc-version;</title>
<?dbhtml filename="iana-etc.html"?>
<indexterm zone="ch-system-iana-etc"><primary sortas="a-Iana-Etc">Iana-Etc</primary></indexterm>
<sect2 role="package"><title/>
<para>The Iana-Etc package provides data for network services and protocols.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,10 @@
<seglistitem><seg>0.1 SBU</seg><seg>641 KB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Iana-Etc installation depends on</segtitle>
<seglistitem><seg>Make</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -26,7 +31,7 @@
<screen><userinput>make</userinput></screen>
<para>Now install it:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -35,9 +40,35 @@
<sect2 id="contents-iana-etc" role="content"><title>Contents of Iana-Etc</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed files</segtitle>
<seglistitem><seg>/etc/protocols and /etc/services</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="protocols">
<term><filename>/etc/protocols</filename></term>
<listitem>
<para>Describes the various DARPA Internet protocols that are
available from the TCP/IP subsystem</para>
<indexterm zone="ch-system-iana-etc"><primary sortas="e-/etc/protocols">/etc/protocols</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="services">
<term><filename>/etc/services</filename></term>
<listitem>
<para>Provides a mapping between friendly textual names for internet
services, and their underlying assigned port numbers and protocol
types</para>
<indexterm zone="ch-system-iana-etc"><primary sortas="e-/etc/services">/etc/services</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-inetutils" xreflabel="Inetutils" role="wrap">
<sect1 id="ch-system-inetutils" role="wrap">
<title>Inetutils-&inetutils-version;</title>
<?dbhtml filename="inetutils.html"?>
<indexterm zone="ch-system-inetutils"><primary sortas="a-Inetutils">Inetutils</primary></indexterm>
<sect2 role="package"><title/>
<para>The Inetutils package contains programs for basic networking.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,35 +18,84 @@
<seglistitem><seg>0.2 SBU</seg><seg>11 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Inetutils installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils,
Diffutils, GCC, Glibc, Grep, Make, Ncurses, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Inetutils</title>
<para>Apply a patch patch:</para>
<para>Inetutils has issues with the Linux 2.6 kernel series. Fix these
issues by applying the following patch:</para>
<screen><userinput>patch -Np1 -i ../inetutils-&inetutils-version;-kernel_headers-1.patch</userinput></screen>
<para>Apply another patch:</para>
<para>All programs that come with Inetutils will not be installed.
However, the Inetutils build system will insist on installing all the
man pages anyway. The following patch will correct this
situation:</para>
<screen><userinput>patch -Np1 -i ../inetutils-&inetutils-version;-no_server_man_pages-1.patch</userinput></screen>
<para>Now prepare Inetutils for compilation:</para>
<para>Prepare Inetutils for compilation:</para>
<screen><userinput>./configure --prefix=/usr --libexecdir=/usr/sbin \
--sysconfdir=/etc --localstatedir=/var \
--disable-logger --disable-syslogd \
--disable-whois --disable-servers</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>--disable-logger</parameter></term>
<listitem><para>This option
prevents Inetutils from installing the <command>logger</command> program, which is used by
scripts to pass messages to the System Log Daemon. Do not install it
because Util-linux installs a better version later.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-syslogd</parameter></term>
<listitem><para>This option
prevents Inetutils from installing the System Log Daemon, which is
installed with the Sysklogd package.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-whois</parameter></term>
<listitem><para>This option disables
the building of the Inetutils <command>whois</command> client, which is out of date.
Instructions for a better <command>whois</command> client are in the BLFS book.</para></listitem>
</varlistentry>
<varlistentry>
<term><parameter>--disable-servers</parameter></term>
<listitem><para>This disables the installation of the various network
servers included as part of the Inetutils package. These servers are
deemed not appropriate in a basic LFS system. Some are insecure by
nature and are only considered safe on trusted networks. More
information can be found at <phrase condition="html"><ulink
url="&blfs-root;view/svn/basicnet/inetutils.html"/></phrase><phrase
condition="pdf"><ulink url="&blfs-root;view/svn/ basicnet/inetutils.html"/></phrase>. Note that
better replacements are available for many of these
servers.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Install it:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>Move the <command>ping</command> program:</para>
<para>Move the <command>ping</command> program to its FHS-compliant
place:</para>
<screen><userinput>mv /usr/bin/ping /bin</userinput></screen>
@ -54,8 +104,80 @@
<sect2 id="contents-inetutils" role="content"><title>Contents of Inetutils</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>ftp, ping, rcp, rlogin, rsh, talk, telnet, and tftp</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="ftp">
<term><command>ftp</command></term>
<listitem>
<para>Is the file transfer protocol program</para>
<indexterm zone="ch-system-inetutils ftp"><primary sortas="b-ftp">ftp</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="ping">
<term><command>ping</command></term>
<listitem>
<para>Sends echo-request packets and reports how long the replies take</para>
<indexterm zone="ch-system-inetutils ping"><primary sortas="b-ping">ping</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="rcp">
<term><command>rcp</command></term>
<listitem>
<para>Performs remote file copy</para>
<indexterm zone="ch-system-inetutils rcp"><primary sortas="b-rcp">rcp</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="rlogin">
<term><command>rlogin</command></term>
<listitem>
<para>Performs remote login</para>
<indexterm zone="ch-system-inetutils rlogin"><primary sortas="b-rlogin">rlogin</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="rsh">
<term><command>rsh</command></term>
<listitem>
<para>Runs a remote shell</para>
<indexterm zone="ch-system-inetutils rsh"><primary sortas="b-rsh">rsh</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="talk">
<term><command>talk</command></term>
<listitem>
<para>Is used to chat with another user</para>
<indexterm zone="ch-system-inetutils talk"><primary sortas="b-talk">talk</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="telnet">
<term><command>telnet</command></term>
<listitem>
<para>An interface to the TELNET protocol</para>
<indexterm zone="ch-system-inetutils telnet"><primary sortas="b-telnet">telnet</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="tftp">
<term><command>tftp</command></term>
<listitem>
<para>A trivial file transfer program</para>
<indexterm zone="ch-system-inetutils tftp"><primary sortas="b-tftp">tftp</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -7,6 +7,65 @@
<title>Introduction</title>
<?dbhtml filename="introduction.html"?>
<para>See testing</para>
<para>In this chapter, we enter the building site and start
constructing the LFS system in earnest. That is, we chroot into the
temporary mini Linux system, make a few final preparations, and then
begin installing the packages.</para>
<para>The installation of this software is straightforward. Although
in many cases the installation instructions could be made shorter and
more generic, we have opted to provide the full instructions for every
package to minimize the possibilities for mistakes. The key to
learning what makes a Linux system work is to know what each package
is used for and why the user (or the system) needs it. For every
installed package, a summary of its contents is given, followed by
concise descriptions of each program and library the package
installed.</para>
<para>If using the compiler optimizations provided in this chapter,
please review the optimization hint at <ulink
url="&hints-root;optimization.txt"/>. Compiler optimizations can make
a program run slightly faster, but they may also cause compilation
difficulties and problems when running the program. If a package
refuses to compile when using optimization, try to compile it without
optimization and see if that fixes the problem. Even if the package
does compile when using optimization, there is the risk it may have
been compiled incorrectly because of the complex interactions between
the code and build tools. The small potential gains achieved in using
compiler optimizations are often outweighed by the risks. First-time
builders of LFS are encouraged to build without custom optimizations.
The subsequent system will still run very fast and be stable at the
same time.</para>
<para>The order that packages are installed in this chapter needs to
be strictly followed to ensure that no program accidentally acquires a
path referring to <filename class="directory">/tools</filename>
hard-wired into it. For the same reason, do not compile packages in
parallel. Compiling in parallel may save time (especially on dual-CPU
machines), but it could result in a program containing a hard-wired
path to <filename class="directory">/tools</filename>, which will
cause the program to stop working when that directory is
removed.</para>
<para>Before the installation instructions, each installation page
provides information about the package, including a concise
description of what it contains, approximately how long it will take
to build, how much disk space is required during this building
process, and any other packages needed to successfully build the
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>.</para></note>
</sect1>

View File

@ -3,16 +3,17 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-iproute2" xreflabel="IProute2" role="wrap">
<title>Iproute2-&iproute2-version;</title>
<sect1 id="ch-system-iproute2" role="wrap">
<title>Iproute2-&iproute2-version;</title>
<?dbhtml filename="iproute2.html"?>
<indexterm zone="ch-system-iproute2">
<primary sortas="a-iproute2">iproute2</primary>
<primary sortas="a-iproute2">Iproute2</primary>
</indexterm>
<sect2 role="package">
<title/>
<para>The Iproute2 package contains programs for basic and advanced
IPV4-based networking.
</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
<segtitle>&diskspace;</segtitle>
@ -21,42 +22,244 @@
<seg>.6 MB</seg>
</seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Iproute2 installation depends on</segtitle>
<seglistitem>
<seg>GCC, Glibc, Make, Linux-Headers, and Sed</seg>
</seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Iproute2</title>
<para>Apply a patch</para>
<para>The <command>arpd</command> binary included in this package is
dependent on Berkeley DB. Because <command>arpd</command> is not a very
common requirement on a base Linux system, remove the dependency on
Berkeley DB by applying the patch using the command below. If
the <command>arpd</command> binary is needed, instructions for
compiling Berkeley DB can be found in the BLFS Book at <ulink
url="&blfs-root;view/svn/content/databases.html#db"/>.
</para>
<screen><userinput>patch -Np1 -i ../iproute2-&iproute2-patch-version;-remove_db-1.patch</userinput></screen>
<!--NEW-->
<para>The patch below fixes the issue with the newer versions of findutils,
the issue will give an error message it options are not in the proper order.
This patch corrects this issue for IPRoute2.</para>
<para>The patch below fixes the issue with the newer versions of
findutils whose <command>find</command> command will report an error
message when its options are not in the proper order.</para>
<screen><userinput>patch -Np1 -i ../iproute2-&iproute2-patch-version;-find_update-1.patch</userinput></screen>
<screen><userinput>patch -Np1 -i ../iproute2-&iproute2-patch-version;-find_update-1.patch</userinput></screen>
<para>Prepare iproute2 for compilation:</para>
<para>Prepare Iproute2 for compilation:</para>
<screen><userinput>./configure </userinput></screen>
<para>Compile the package:</para>
<screen><userinput>make SBINDIR=/sbin</userinput></screen>
<para>Now install it:</para>
<!--NEW-->
<screen><userinput>make install SBINDIR=/sbin</userinput></screen>
<para>The meaning of the make option:</para>
<variablelist>
<varlistentry>
<term><parameter>SBINDIR=/sbin</parameter></term>
<listitem><para>This makes sure that the Iproute2 binaries will install into
<filename class="directory">/sbin</filename>. This is the correct
location according to the FHS, because some of the Iproute2 binaries are used
in the bootscripts.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Install the package:</para>
<screen><userinput>make SBINDIR=/sbin install</userinput></screen>
</sect2>
<sect2 id="contents-iproute2" role="content">
<title>Contents of Iproute2</title>
<para>See testing</para>
<title>Contents of Iproute2</title>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem>
<seg>ifstat, ip, nstat, routef, routel, rtmon, rtstat, ss, and tc.</seg>
</seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="ifstat">
<term>
<command>ifstat</command>
</term>
<listitem>
<para>Shows the interfaces statistic, including the amount of transmitted
and received packages by interface.</para>
<indexterm zone="ch-system-iproute2 ifstat">
<primary sortas="b-ifstat">ifstat</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ip">
<term>
<command>ip</command>
</term>
<listitem>
<para>The main executable. It has several different functions:</para>
<para><command>ip link <replaceable>[device]</replaceable></command>
allows users to look at the state of devices and to make changes.
</para>
<para><command>ip addr</command> allows users to look at addresses and
their properties, add new addresses, and delete old ones.
</para>
<para><command>ip neighbor</command> allows users to look at
neighbor bindings and their properties, add new
neighbor entries, and delete old ones.
</para>
<para><command>ip rule</command> allows users to look at the routing
policies and change them.
</para>
<para><command>ip route</command> allows users to look at the routing
table and change routing table rules.
</para>
<para><command>ip tunnel</command> allows users to look at the IP
tunnels and their properties, and change them.
</para>
<para><command>ip maddr</command> allows users to look at the multicast
addresses and their properties, and change them.
</para>
<para><command>ip mroute</command> allows users to set, change, or
delete the multicast routing.
</para>
<para><command>ip monitor</command> allows users to
continously monitor the state of devices, addresses and routes.
</para>
<indexterm zone="ch-system-iproute2 ip">
<primary sortas="b-ip">ip</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="nstat">
<term>
<command>nstat</command>
</term>
<listitem>
<para>Shows network statistics.</para>
<indexterm zone="ch-system-iproute2 nstat">
<primary sortas="b-nstat">nstat</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="routef">
<term>
<command>routef</command>
</term>
<listitem>
<para>A component of <command>ip route</command>. This is for flushing the routing
tables.
</para>
<indexterm zone="ch-system-iproute2 routef">
<primary sortas="b-routef">routef</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="routel">
<term>
<command>routel</command>
</term>
<listitem>
<para>A component of <command>ip route</command>. This is for listing the routing
tables.
</para>
<indexterm zone="ch-system-iproute2 routel">
<primary sortas="b-routel">routel</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="rtmon">
<term>
<command>rtmon</command>
</term>
<listitem>
<para>Route monitoring utility.</para>
<indexterm zone="ch-system-iproute2 rtmon">
<primary sortas="b-rtmon">rtmon</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="rtstat">
<term>
<command>rtstat</command>
</term>
<listitem>
<para>Route status utility</para>
<indexterm zone="ch-system-iproute2 rtstat">
<primary sortas="b-rtstat">rtstat</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ss">
<term>
<command>ss</command>
</term>
<listitem>
<para>Similar to the <command>netstat</command> command; shows active connections</para>
<indexterm zone="ch-system-iproute2 ss">
<primary sortas="b-ss">ss</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="tc">
<term>
<command>tc</command>
</term>
<listitem>
<para>Traffic Controlling Executable; this is for Quality Of
Service (QOS) and Class Of Service (COS)
implementations
</para>
<para><command>tc qdisc</command> allows users to setup the queueing
discipline
</para>
<para><command>tc class</command> allows users to setup classes based on
the queuing discipline scheduling
</para>
<para><command>tc estimator</command> allows users to estimate the
network flow into a network
</para>
<para><command>tc filter</command> allows users to setup the QOS/COS
packet filtering
</para>
<para><command>tc policy</command> allows users to setup the QOS/COS
policies
</para>
<indexterm zone="ch-system-iproute2 ss">
<primary sortas="b-tc">tc</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-kbd" xreflabel="Kbd" role="wrap">
<sect1 id="ch-system-kbd" role="wrap">
<title>Kbd-&kbd-version;</title>
<?dbhtml filename="kbd.html"?>
<indexterm zone="ch-system-kbd"><primary sortas="a-Kbd">Kbd</primary></indexterm>
<sect2 role="package"><title/>
<para>The Kbd package contains key-table files and keyboard utilities.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,11 @@
<seglistitem><seg>0.1 SBU</seg><seg>12 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Kbd installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Bison, Coreutils,
Diffutils, Flex, GCC, Gettext, Glibc, Grep, Gzip, M4, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -30,7 +36,7 @@
<screen><userinput>make</userinput></screen>
<para>Now install it:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -38,8 +44,244 @@
<sect2 id="contents-kbd" role="content"><title>Contents of Kbd</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>chvt, deallocvt, dumpkeys,
fgconsole, getkeycodes, getunimap, kbd_mode, kbdrate, loadkeys, loadunimap,
mapscrn, openvt, psfaddtable (link to psfxtable), psfgettable (link to
psfxtable), psfstriptable (link to psfxtable), psfxtable, resizecons,
setfont, setkeycodes, setleds, setlogcons, setmetamode, setvesablank,
showconsolefont, showkey, unicode_start, and unicode_stop</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="chvt">
<term><command>chvt</command></term>
<listitem>
<para>Changes the foreground virtual terminal</para>
<indexterm zone="ch-system-kbd chvt"><primary sortas="b-chvt">chvt</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="deallocvt">
<term><command>deallocvt</command></term>
<listitem>
<para>Deallocates unused virtual terminals</para>
<indexterm zone="ch-system-kbd deallocvt"><primary sortas="b-deallocvt">deallocvt</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="dumpkeys">
<term><command>dumpkeys</command></term>
<listitem>
<para>Dumps the keyboard translation tables</para>
<indexterm zone="ch-system-kbd dumpkeys"><primary sortas="b-dumpkeys">dumpkeys</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="fgconsole">
<term><command>fgconsole</command></term>
<listitem>
<para>Prints the number of the active virtual terminal</para>
<indexterm zone="ch-system-kbd fgconsole"><primary sortas="b-fgconsole">fgconsole</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="getkeycodes">
<term><command>getkeycodes</command></term>
<listitem>
<para>Prints the kernel scancode-to-keycode mapping table</para>
<indexterm zone="ch-system-kbd getkeycodes"><primary sortas="b-getkeycodes">getkeycodes</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="getunimap">
<term><command>getunimap</command></term>
<listitem>
<para>Prints the currently used unimap</para>
<indexterm zone="ch-system-kbd getunimap"><primary sortas="b-getunimap">getunimap</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="kbd_mode">
<term><command>kbd_mode</command></term>
<listitem>
<para>Reports or sets the keyboard mode</para>
<indexterm zone="ch-system-kbd kbd_mode"><primary sortas="b-kbd_mode">kbd_mode</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="kbdrate">
<term><command>kbdrate</command></term>
<listitem>
<para>Sets the keyboard repeat and delay rates</para>
<indexterm zone="ch-system-kbd kbdrate"><primary sortas="b-kbdrate">kbdrate</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="loadkeys">
<term><command>loadkeys</command></term>
<listitem>
<para>Loads the keyboard translation tables</para>
<indexterm zone="ch-system-kbd loadkeys"><primary sortas="b-loadkeys">loadkeys</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="loadunimap">
<term><command>loadunimap</command></term>
<listitem>
<para>Loads the kernel unicode-to-font mapping table</para>
<indexterm zone="ch-system-kbd loadunimap"><primary sortas="b-loadunimap">loadunimap</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="mapscrn">
<term><command>mapscrn</command></term>
<listitem>
<para>An obsolete program that used to load
a user-defined output character mapping table into the console driver; this is
now done by <command>setfont</command></para>
<indexterm zone="ch-system-kbd mapscrn"><primary sortas="b-mapscrn">mapscrn</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="openvt">
<term><command>openvt</command></term>
<listitem>
<para>Starts a program on a new virtual terminal (VT)</para>
<indexterm zone="ch-system-kbd openvt"><primary sortas="b-openvt">openvt</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="psfaddtable">
<term><command>psfaddtable</command></term>
<listitem>
<para>A link to <command>psfxtable</command></para>
<indexterm zone="ch-system-kbd psfaddtable"><primary sortas="b-psfaddtable">psfaddtable</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="psfgettable">
<term><command>psfgettable</command></term>
<listitem>
<para>A link to <command>psfxtable</command></para>
<indexterm zone="ch-system-kbd psfgettable"><primary sortas="b-psfgettable">psfgettable</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="psfstriptable">
<term><command>psfstriptable</command></term>
<listitem>
<para>A link to <command>psfxtable</command></para>
<indexterm zone="ch-system-kbd psfstriptable"><primary sortas="b-psfstriptable">psfstriptable</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="psfxtable">
<term><command>psfxtable</command></term>
<listitem>
<para>Handle Unicode character tables for console fonts</para>
<indexterm zone="ch-system-kbd psfxtable"><primary sortas="b-psfxtable">psfxtable</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="resizecons">
<term><command>resizecons</command></term>
<listitem>
<para>Changes the kernel idea of the console size</para>
<indexterm zone="ch-system-kbd resizecons"><primary sortas="b-resizecons">resizecons</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="setfont">
<term><command>setfont</command></term>
<listitem>
<para>Changes the Enhanced Graphic Adapter (EGA) and Video Graphics
Array (VGA) fonts on the console</para>
<indexterm zone="ch-system-kbd setfont"><primary sortas="b-setfont">setfont</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="setkeycodes">
<term><command>setkeycodes</command></term>
<listitem>
<para>Loads kernel scancode-to-keycode mapping table entries; this is
useful if there are unusual keys on the keyboard</para>
<indexterm zone="ch-system-kbd setkeycodes"><primary sortas="b-setkeycodes">setkeycodes</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="setleds">
<term><command>setleds</command></term>
<listitem>
<para>Sets the keyboard flags and Light Emitting Diodes (LEDs)</para>
<indexterm zone="ch-system-kbd setleds"><primary sortas="b-setleds">setleds</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="setlogcons">
<term><command>setlogcons</command></term>
<listitem>
<para>Sends kernel messages to the console</para>
<indexterm zone="ch-system-kbd setlogcons"><primary sortas="b-setlogcons">setlogcons</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="setmetamode">
<term><command>setmetamode</command></term>
<listitem>
<para>Defines the keyboard meta-key handling</para>
<indexterm zone="ch-system-kbd setmetamode"><primary sortas="b-setmetamode">setmetamode</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="setvesablank">
<term><command>setvesablank</command></term>
<listitem>
<para>Lets the user adjust the built-in hardware screensaver (a blank
screen)</para>
<indexterm zone="ch-system-kbd setvesablank"><primary sortas="b-setvesablank">setvesablank</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="showconsolefont">
<term><command>showconsolefont</command></term>
<listitem>
<para>Shows the current EGA/VGA console screen font</para>
<indexterm zone="ch-system-kbd showconsolefont"><primary sortas="b-showconsolefont">showconsolefont</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="showkey">
<term><command>showkey</command></term>
<listitem>
<para>Reports the scancodes, keycodes, and ASCII codes of the keys
pressed on the keyboard</para>
<indexterm zone="ch-system-kbd showkey"><primary sortas="b-showkey">showkey</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="unicode_start">
<term><command>unicode_start</command></term>
<listitem>
<para>Puts the keyboard and console in UNICODE mode. Never use it on LFS,
because applications are not configured to support UNICODE.</para>
<indexterm zone="ch-system-kbd unicode_start"><primary sortas="b-unicode_start">unicode_start</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="unicode_stop">
<term><command>unicode_stop</command></term>
<listitem>
<para>Reverts keyboard and console from UNICODE mode</para>
<indexterm zone="ch-system-kbd unicode_stop"><primary sortas="b-unicode_stop">unicode_stop</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -1,10 +1,17 @@
<?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-kernfs">
<title>Mounting Virtual Kernel File Systems</title>
<?dbhtml filename="kernfs.html"?>
<para>Create the dirs:</para>
<para>Various file systems exported by the kernel do not exist on the
hard drive, but are used to communicate to and from the kernel
itself.</para>
<para>Begin by creating directories onto which the file systems will be mounted:</para>
<screen><userinput>mkdir -p $LFS/{proc,sys}</userinput></screen>
@ -13,10 +20,18 @@
<screen><userinput>mount -t proc proc $LFS/proc
mount -t sysfs sysfs $LFS/sys</userinput></screen>
<para>Do some <quote>fake mounts</quote>:</para>
<para>Remember that if for any reason you stop working on the LFS
system and start again later, it is important to check that these file
systems are mounted again before entering the chroot
environment.</para>
<para>Additional file systems will soon be mounted from within the
chroot environment. To keep the host up to date, perform a <quote>fake
mount</quote> for each of these now:</para>
<screen><userinput>mount -f -t ramfs ramfs $LFS/dev
mount -f -t tmpfs tmpfs $LFS/dev/shm
mount -f -t devpts -o gid=4,mode=620 devpts $LFS/dev/pts</userinput></screen>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-less" xreflabel="Less" role="wrap">
<sect1 id="ch-system-less" role="wrap">
<title>Less-&less-version;</title>
<?dbhtml filename="less.html"?>
<indexterm zone="ch-system-less"><primary sortas="a-Less">Less</primary></indexterm>
<sect2 role="package"><title/>
<para>The Less package contains a text file viewer.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,11 @@
<seglistitem><seg>0.1 SBU</seg><seg>3.4 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Less installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, Ncurses, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -26,20 +32,63 @@
<screen><userinput>./configure --prefix=/usr --bindir=/bin --sysconfdir=/etc</userinput></screen>
<para>The meaning of the configure option:</para>
<variablelist>
<varlistentry>
<term><parameter>--sysconfdir=/etc</parameter></term>
<listitem><para>This option tells the programs created by the package to look in
<filename class="directory">/etc</filename> for the configuration files.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Now install it:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
</sect2>
<sect2 id="contents-less" role="content"><title>Contents of Less</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>less, lessecho, and lesskey</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="less">
<term><command>less</command></term>
<listitem>
<para>a file viewer or pager; it displays the contents of the given
file, letting the user scroll, find strings, and jump to marks</para>
<indexterm zone="ch-system-less less"><primary sortas="b-less">less</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="lessecho">
<term><command>lessecho</command></term>
<listitem>
<para>needed to expand meta-characters, such as <emphasis>*</emphasis>
and <emphasis>?</emphasis>, in filenames on Unix systems</para>
<indexterm zone="ch-system-less lessecho"><primary sortas="b-lessecho">lessecho</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="lesskey">
<term><command>lesskey</command></term>
<listitem>
<para>used to specify the key bindings for <command>less</command></para>
<indexterm zone="ch-system-less lesskey"><primary sortas="b-lesskey">lesskey</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -10,6 +10,7 @@
<indexterm zone="ch-system-libol"><primary sortas="a-Libol">Libol</primary></indexterm>
<sect2 role="package"><title/>
<para>The Libol package contains support libraries needed by Syslog-ng.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,10 @@
<seglistitem><seg>Unchecked</seg><seg>Unchecked</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Libol installation depends on</segtitle>
<seglistitem><seg>Unchecked</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -24,14 +29,13 @@
<para>Prepare Libol for compilation</para>
<!--NEW-->
<screen><userinput>./configure --prefix=/usr</userinput></screen>
<para>Compile Libol:</para>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Now install it:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -40,7 +44,34 @@
<sect2 id="contents-libol" role="content"><title>Contents of Libol</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>Unchecked</seg></seglistitem>
</segmentedlist>
<!--
<variablelist><title>Short descriptions</title>
<varlistentry id="klogd">
<term><command>klogd</command></term>
<listitem>
<indexterm zone="ch-system-sysklogd klogd"><primary sortas="b-klogd">klogd</primary></indexterm>
<para>is a system daemon for intercepting and logging kernel messages.</para>
</listitem>
</varlistentry>
<varlistentry id="syslogd">
<term><command>syslogd</command></term>
<listitem>
<indexterm zone="ch-system-sysklogd syslogd"><primary sortas="b-syslogd">syslogd</primary></indexterm>
<para>logs the messages that system programs
offer for logging. Every logged message contains at least a date stamp and a
hostname, and normally the program's name too, but that depends on how
trusting the logging daemon is told to be.</para>
</listitem>
</varlistentry>
</variablelist>
-->
</sect2>

View File

@ -3,13 +3,16 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-libtool" xreflabel="Libtool" role="wrap">
<sect1 id="ch-system-libtool" role="wrap">
<title>Libtool-&libtool-version;</title>
<?dbhtml filename="libtool.html"?>
<indexterm zone="ch-system-libtool"><primary sortas="a-Libtool">Libtool</primary></indexterm>
<sect2 role="package"><title/>
<para>The Libtool package contains the GNU generic library support script.
It wraps the complexity of using shared libraries in a consistent, portable
interface.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +20,11 @@
<seglistitem><seg>1.5 SBU</seg><seg>20 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Libtool installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Glibc, Grep, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -42,8 +50,41 @@
<sect2 id="contents-libtool" role="content"><title>Contents of Libtool</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<segtitle>Installed libraries</segtitle>
<seglistitem><seg>libtool and libtoolize</seg><seg>libltdl.[a,so]</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="libtool">
<term><command>libtool</command></term>
<listitem>
<para>Provides generalized library-building support services</para>
<indexterm zone="ch-system-libtool libtool"><primary sortas="b-libtool">libtool</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libtoolize">
<term><command>libtoolize</command></term>
<listitem>
<para>Provides a standard way to add <command>libtool</command> support to a package</para>
<indexterm zone="ch-system-libtool libtoolize"><primary sortas="b-libtoolize">libtoolize</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="libltdl">
<term><filename class="libraryfile">libltdl</filename></term>
<listitem>
<para>Hides the various difficulties of dlopening libraries</para>
<indexterm zone="ch-system-libtool libltdl"><primary sortas="c-libltdl">libltdl</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -12,6 +12,8 @@
</indexterm>
<sect2 role="package"><title/>
<para>The Linux-Libc-Headers package contains the
<quote>sanitized</quote> kernel headers.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -19,21 +21,34 @@
<seglistitem><seg>0.1 SBU</seg><seg>22 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Linux-Libc-Headers installation depends on</segtitle>
<seglistitem><seg>Coreutils</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Linux-Libc-Headers</title>
<para>For years it has been common practice to use <quote>raw</quote>
kernel headers (straight from a kernel tarball) in <filename
class="directory">/usr/include</filename>, but over the last few
years, the kernel developers have taken a strong stance that this
should not be done. This gave birth to the Linux-Libc-Headers Project,
which was designed to maintain an API stable version of the Linux
headers.</para>
<para>Install the header files:</para>
<screen><userinput>cp -R include/asm-i386 /usr/include/asm
cp -R include/linux /usr/include</userinput></screen>
<para>Assure that all the headers are owned by root:</para>
<para>Ensure that all the headers are owned by root:</para>
<screen><userinput>chown -R root:root /usr/include/{asm,linux}</userinput></screen>
<para>And make sure all the users can read the headers:</para>
<para>Make sure the users can read the headers:</para>
<screen><userinput>find /usr/include/{asm,linux} -type d -exec chmod 755 {} \;
find /usr/include/{asm,linux} -type f -exec chmod 644 {} \;</userinput></screen>
@ -43,8 +58,24 @@ find /usr/include/{asm,linux} -type f -exec chmod 644 {} \;</userinput></screen>
<sect2 id="contents-linux-libc-headers" role="content"><title>Contents of Linux-Libc-Headers</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed headers</segtitle>
<seglistitem><seg>/usr/include/{asm,linux}/*.h</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="linux-libc-headers">
<term><filename class="headerfile">/usr/include/{asm,linux}/*.h</filename></term>
<listitem>
<para>The Linux headers API</para>
<indexterm zone="ch-system-linux-libc-headers linux-libc-headers"><primary sortas="e-/usr/include/{asm,linux}/*.h">/usr/include/{asm,linux}/*.h</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-m4" xreflabel="M4" role="wrap">
<sect1 id="ch-system-m4" role="wrap">
<title>M4-&m4-version;</title>
<?dbhtml filename="m4.html"?>
<indexterm zone="ch-system-m4"><primary sortas="a-M4">M4</primary></indexterm>
<sect2 role="package"><title/>
<para>The M4 package contains a macro processor.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,11 @@
<seglistitem><seg>0.1 SBU</seg><seg>3.0 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>M4 installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils, GCC,
Gettext, Glibc, Grep, Make, Perl, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -33,7 +39,7 @@
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>And install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -42,8 +48,31 @@
<sect2 id="contents-m4" role="content"><title>Contents of M4</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed program</segtitle>
<seglistitem><seg>m4</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="m4">
<term><command>m4</command></term>
<listitem>
<para>copies the given files while expanding the macros that they
contain. These macros are either built-in or user-defined and can take
any number of arguments. Besides performing macro expansion,
<command>m4</command> has
built-in functions for including named files, running Unix commands,
performing integer arithmetic, manipulating text, recursion, etc. The
<command>m4</command> program can be used either as a front-end to a compiler or as a
macro processor in its own right.</para>
<indexterm zone="ch-system-m4 m4"><primary sortas="b-m4">m4</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-make" xreflabel="Make" role="wrap">
<sect1 id="ch-system-make" role="wrap">
<title>Make-&make-version;</title>
<?dbhtml filename="make.html"?>
<indexterm zone="ch-system-make"><primary sortas="a-Make">Make</primary></indexterm>
<sect2 role="package"><title/>
<para>The Make package contains a program for compiling large packages.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,11 @@
<seglistitem><seg>0.2 SBU</seg><seg>8.8 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Make installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Diffutils,
GCC, Gettext, Glibc, Grep, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -33,7 +39,7 @@
<para>To test the results, issue:
<userinput>make check</userinput>.</para>
<para>Now install the package:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
@ -42,8 +48,25 @@
<sect2 id="contents-make" role="content"><title>Contents of Make</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed program</segtitle>
<seglistitem><seg>make</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="make">
<term><command>make</command></term>
<listitem>
<para>Automatically determines which pieces of a large package need to
be recompiled and then issues the relevant commands</para>
<indexterm zone="ch-system-make make"><primary sortas="b-make">make</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-man-pages" xreflabel="Man-pages" role="wrap">
<sect1 id="ch-system-man-pages" role="wrap">
<title>Man-pages-&man-pages-version;</title>
<?dbhtml filename="man-pages.html"?>
<indexterm zone="ch-system-man-pages"><primary sortas="a-Man-pages">Man-pages</primary></indexterm>
<sect2 role="package"><title/>
<para>The Man-pages package contains over 1,200 manual pages.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,6 +18,10 @@
<seglistitem><seg>0.1 SBU</seg><seg>15 MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Man-pages installation depends on</segtitle>
<seglistitem><seg>Bash, Coreutils, and Make</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
@ -31,8 +36,25 @@
<sect2 id="contents-manpages" role="content"><title>Contents of Man-pages</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed files</segtitle>
<seglistitem><seg>various manual pages</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="manual-pages">
<term><filename>manual pages</filename></term>
<listitem>
<para>Describe the C and C++ functions, important
device files, and significant configuration files</para>
<indexterm zone="ch-system-man-pages manual-pages"><primary sortas="e-manual-pages">manual pages</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

View File

@ -3,13 +3,14 @@
<!ENTITY % general-entities SYSTEM "../general.ent">
%general-entities;
]>
<sect1 id="ch-system-man" xreflabel="Man" role="wrap">
<sect1 id="ch-system-man" role="wrap">
<title>Man-&man-version;</title>
<?dbhtml filename="man.html"?>
<indexterm zone="ch-system-man"><primary sortas="a-Man">Man</primary></indexterm>
<sect2 role="package"><title/>
<para>The Man package contains programs for finding and viewing manual pages.</para>
<segmentedlist>
<segtitle>&buildtime;</segtitle>
@ -17,40 +18,160 @@
<seglistitem><seg>0.1 SBU</seg><seg>1.9MB</seg></seglistitem>
</segmentedlist>
<segmentedlist>
<segtitle>Man installation depends on</segtitle>
<seglistitem><seg>Bash, Binutils, Coreutils, Gawk, GCC,
Glibc, Grep, Make, and Sed</seg></seglistitem>
</segmentedlist>
</sect2>
<sect2 role="installation">
<title>Installation of Man</title>
<para>Issue a sed substitution:</para>
<para>Two adjustments need to be made to the sources of Man.</para>
<para>The first is a sed substitution to add the
<parameter>-R</parameter> switch to the <envar>PAGER</envar>
variable so that escape sequences are properly handled by Less:</para>
<screen><userinput>sed -i 's@-is@&amp;R@g' configure</userinput></screen>
<para>Issue another sed substitution:</para>
<para>The second is also a sed substitution to comment out the
<quote>MANPATH /usr/man</quote> line in the
<filename>man.conf</filename> file to prevent redundant results when
using programs such as <command>whatis</command>:</para>
<screen><userinput>sed -i 's@MANPATH./usr/man@#&amp;@g' src/man.conf.in</userinput></screen>
<para>Now prepare Man for compilation:</para>
<para>Prepare Man for compilation:</para>
<screen><userinput>./configure -confdir=/etc</userinput></screen>
<para>The meaning of the configure options:</para>
<variablelist>
<varlistentry>
<term><parameter>-confdir=/etc</parameter></term>
<listitem><para>This tells the <command>man</command> program to look for the
<filename>man.conf</filename> configuration file in the <filename
class="directory">/etc</filename> directory.</para></listitem>
</varlistentry>
</variablelist>
<para>Compile the package:</para>
<screen><userinput>make</userinput></screen>
<para>Lastly, install it:</para>
<para>Install the package:</para>
<screen><userinput>make install</userinput></screen>
<para>For some internazionalitation issues, see testing.</para>
<note><para>To disable Select Graphic Rendition (SGR) escape
sequences, edit the <filename>man.conf</filename> file and
add the <parameter>-c</parameter> switch to
the <envar>NROFF</envar> variable.</para></note>
<para>If the character set uses 8-bit characters, search for the line
beginning with <quote>NROFF</quote> in
<filename>/etc/man.conf</filename>, and verify that it looks as
follows:</para>
<screen>NROFF /usr/bin/nroff -Tlatin1 -mandoc</screen>
<para>Note that <quote>latin1</quote> should be used even if it is not
the character set of the locale. The reason is that, according to the
specification, <command>groff</command> has no means of typesetting
characters outside International Organization for Standards
(ISO) 8859-1 without some strange escape codes. When formatting manual
pages, <command>groff</command> thinks that they are in the ISO 8859-1
encoding and this <parameter>-Tlatin1</parameter> switch tells
<command>groff</command> to use the same encoding for output. Since
<command>groff</command> does no recoding of input characters, the
formatted result is really in the same encoding as input, and therefore
it is usable as the input for a pager.</para>
<para>This does not solve the problem of a non-working
<command>man2dvi</command> program for localized manual pages in
non-ISO 8859-1 locales. Also, it does not work with multibyte
character sets. The first problem does not currently have a solution.
The second issue is not of concern because the LFS installation does
not support multibyte character sets.</para>
<para>Additional information with regards to the compression of
man and info pages can be found in the BLFS book at
<ulink url="&blfs-root;view/cvs/postlfs/compressdoc.html"><phrase
condition="pdf">http://www.linuxfromscratch.org/blfs/view/cvs/postlfs/
compressdoc.html</phrase></ulink>.</para>
</sect2>
<sect2 id="contents-man" role="content"><title>Contents of Man</title>
<para>See testing</para>
<segmentedlist>
<segtitle>Installed programs</segtitle>
<seglistitem><seg>apropos, makewhatis, man,
man2dvi, man2html, and whatis</seg></seglistitem>
</segmentedlist>
<variablelist><bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="apropos">
<term><command>apropos</command></term>
<listitem>
<para>Searches the whatis database and displays the short descriptions
of system commands that contain a given string</para>
<indexterm zone="ch-system-man apropos"><primary sortas="b-apropos">apropos</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="makewhatis">
<term><command>makewhatis</command></term>
<listitem>
<para>Builds the whatis database; it reads all the manual pages in the
manpath and writes the name and a short description in the whatis
database for each page</para>
<indexterm zone="ch-system-man makewhatis"><primary sortas="b-makewhatis">makewhatis</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="man">
<term><command>man</command></term>
<listitem>
<para>Formats and displays the requested on-line manual page</para>
<indexterm zone="ch-system-man man"><primary sortas="b-man">man</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="man2dvi">
<term><command>man2dvi</command></term>
<listitem>
<para>Converts a manual page into dvi format</para>
<indexterm zone="ch-system-man man2dvi"><primary sortas="b-man2dvi">man2dvi</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="man2html">
<term><command>man2html</command></term>
<listitem>
<para>Converts a manual page into HTML</para>
<indexterm zone="ch-system-man man2html"><primary sortas="b-man2html">man2html</primary></indexterm>
</listitem>
</varlistentry>
<varlistentry id="whatis">
<term><command>whatis</command></term>
<listitem>
<para>Searches the whatis database and displays the short descriptions
of system commands that contain the given keyword as a separate
word</para>
<indexterm zone="ch-system-man whatis"><primary sortas="b-whatis">whatis</primary></indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>

Some files were not shown because too many files have changed in this diff Show More