Please read the following carefully: throughout this document you will
frequently see the variable name $LFS. $LFS must at all times
be replaced by the directory where the partition that contains the LFS system
is mounted. How to create and where to mount the partition will be explained
later on in full detail in chatper 4. In my case the LFS partition is mounted
on /mnt/hda5. If I read this document myself and I see $LFS somewhere,
I will pretend that I read /mnt/hda5. If I read that I have to run this command:
cp inittab $LFS/etc
I actually will run this: cp inittab /mnt/hda5/etc
It's important that you do this no matter where you read it; be it in commands you enter on the prompt, or in some file you edit or create.
If you want, you can set the environment variable LFS. This way you can literally enter $LFS in stead of replacing it by something like /mnt/hda5. This is accomplished by running: export LFS=/mnt/hda5
If I read cp inittab $LFS/etc, I literally can type cp inittab $LFS/etc and the shell will replace this command by cp inittab /mnt/hda5/etc automatically.
Do not forget to set the LFS variable at all times. If you haven't set the variable and you use it in a command, $LFS will be ignored and whatever is left will be executed. The command cp inittab $LFS/etc without the LFS variable set, will result in copying the inittab file to the /etc directory which will overwrite your system's inittab. A file like inittab isn't that big a problem as it can easily be restored, but if you would make this mistake during the installation of the C Library, you can break your system badly and might have to reinstall it if you don't know how to repair it. So that's why I strongly advise against using the LFS variable. You better replace $LFS yourself by something like /mnt/hda5. If you make a typo while entering /mnt/hda5, the worst thing that can happen is that you'll get an error saying "no such file or directory" but it won't break your system. Don't say I didn't warn you ;)
Throughout this document I will assume that you have stored all the packages you have downloaded in a subdirectory under $LFS/usr/src.
I myself have use the convention of having a $LFS/usr/src/sources directory. Under sources you'll find the directory 0-9 and the directories a through z. A package as sysvinit-2.78.tar.gz is stored under $LFS/usr/src/sources/s/ A package as bash-3.02.tar.gz is stored under $LFS/usr/src/sources/b/ and so forth. You don't have to follow this convention of course, I was just giving an example. It's better to keep the packages out of $LFS/usr/src and move them to a subdirectory, so we'll have a clean $LFS/usr/src directory in which we will unpack the packages and work with them.
The next chapter contains the list of all the packages you need to download, but the partition that is going to contain our LFS system isn't created yet. Therefore store the files temporarily somewhere where you want and remember to copy them to $LFS/usr/src/<somesubdirectory> when you have finished chapter 4.
Before you can actually start doing something with a package, you need to unpack it first. Often you will find the package files being tar'ed and gzip'ed (you can see this from a .tar.gz or .tgz extension). I'm not going to write down every time how to ungzip and how to untar an archive. I will tell you how to that once, in this paragraph. There is also the possibility that you have the possibility of downloading a .tar.bz2 file. Such a file is tar'ed and compressed with the bzip2 program. Bzip2 achieves a better compression than the commonly used gzip does. In order to use bz2 archives you need to have the bzip2 program installed. Most if not every distribution comes with this program so chances are high it is already installed on your system. If not, install it using your distribution's installation tool.
tar xvfz filename.tar.gz; rm filename.tar.gz
or tar xvfz filename.tgz; rm filename.tgz
tar --use-compress-prog=bzip2 -xvf filename.tar.bz2; rm filename.tar.bz2
tar
xvf filename.tar; rm filename.tar
Note that immediately after we have unpacked the archive, we delete the package file as we don't need it anymore. That's why you have to copy the file and not move it. If you move it and then delete it, you will need to re-download it when you need it again.
When the archive is unpacked a new directory will be created under the current directory (and this howto assumes that you unpack the archives under the $LFS/usr/src directory). You have to enter that new directory before you continue with the installation instructions. All the above will be sumarized as 'Unpack the xxx archive'. So, when you read it, you copy the package to $LFS/usr/src, you run the tar program to ungzip/unbzip and untar it, then you enter the directory that was created and then you read the next line of the installation instructions.
After you have installed a package you can do two things with it. You can
either delete the directroy that contains the sources or you can keep it. If
you decide to keep it, that's fine by me. But if you need the same package
again in a later chapter (all software upto chapter 7.2 will be re-installed
in chapter 7.3) you need to delete the directory first before using it again.
If you don't do this, you might end up in trouble because old settings will
be used (settings that apply to your normal Linux system but which don't apply
anymore when you have restarted your computer into the LFS system). Doing a
simple make
clean does not always guarantee a totally clean source tree. The
configure script also has files lying around in various subdirectories which
are rearely removed by the make clean process.