<sect1 id="ch02-install" xreflabel="Chapter 2 - How to install the software">
<title>How to install the software</title>
<?dbhtml filename="install.html" dir="chapter02"?>

<para>Before you start using the LFS book, we should point out that all
of the commands here assume that you are using the bash shell. If you
aren't, the commands may work, but we can't guarantee it. If you want a
simple life, use bash.</para>

<para>Before you can actually start doing something with a package, you need
to unpack it first. Often the package files are tar'ed and
gzip'ed or bzip2'ed. We're not going to write down every time how to
unpack an archive. We'll explain how to do that once, in this 
section.</para>

<para>To start with, change to the $LFS/usr/src directory by running:</para>

<para><screen><userinput>cd $LFS/usr/src</userinput></screen></para>

<para>If a file is tar'ed and gzip'ed, it is unpacked by
running either one of the following two commands, depending on the
filename:</para>

<para><screen><userinput>tar -xvzf filename.tar.gz</userinput>
<userinput>tar -xvzf filename.tgz</userinput></screen></para>


<para>If a file is tar'ed and bzip2'ed, it is unpacked by
running:</para>

<para><screen><userinput>bzcat filename.tar.bz2 | tar -xv</userinput></screen></para>

<para>Nowadays most tar programs, but not all, are
patched to be able to use bzip2 files directly. They use either
the -I, the -y, or the -j parameter, which work the same as the -z
parameter for handling gzip files. The above construction, however,
works no matter how your host system decided to patch tar.</para>

<para>If a file is just tar'ed, it is unpacked by running:</para>

<para><screen><userinput>tar -xvf filename.tar</userinput></screen></para>

<para>When an archive is unpacked, a new directory will be created under the
current directory (and this book assumes that the archives are unpacked
under the $LFS/usr/src directory). Please enter that new directory
before continuing with the installation instructions. Again, every time
this book is going to install a package, it's up to you to unpack the source
archive and cd into the newly created directory.</para>

<para>From time to time you will be dealing with single files such as patch
files. These files are generally gzip'ed or bzip2'ed. Before such files
can be used they need to be uncompressed.</para>

<para>If a file is gzip'ed, it is unpacked by running:</para>

<para><screen><userinput>gunzip filename.gz</userinput></screen></para>

<para>If a file is bzip2'ed, it is unpacked by running:</para>

<para><screen><userinput>bunzip2 filename.bz2</userinput></screen></para>

<para>After a package has been installed, two things can be done with
it: either the directory that contains the sources can be deleted, or it
can be kept. We highly recommend deleting it. If you don't do this and
try to re-use the same source later on in the book (for example re-using
the source trees from Chapter 5 in Chapter 6), it may not work
as you expect it to. Source trees from Chapter 5 will have your host
distribution's settings, which don't always apply to the LFS system
after you enter the chroot environment. Even running something like
<emphasis>make clean</emphasis> doesn't always guarantee a clean source
tree.</para>

<para>So, save yourself a lot of hassle and just remove the source directory
immediately after you have installed it, but keep the downloaded tarball
available for when you need it again.</para>

<para>There is one exception; the kernel source tree. Keep it around as you
will need it later in this book when building a kernel. Nothing before then
will use the kernel tree, so the source tree won't be in your way. If,
however, you are short of disk space, you can remove the kernel tree and
re-untar it later when required.</para>

</sect1>

