2. Anatomy of the Red Hat FTP site

In the spirit of the Linux community, Red Hat Software has made available their Linux distributions for several platforms on their FTP site. These are all available from the top distribution directory (pub/redhat/linux/). Let's have a look at the distribution tree.

2.1. Redhat 9 directories organization

The latest distribution is, as of this writing, available only for the i386 platform. The toplevel directory appears a bit shallow, given the presence of a single architecture. (pub/redhat/linux/9/en/os/ ).
 
        i386/
      

Otherwise, the toplevel directory, for releases slightly older than 9, contains distributions for the different platforms. For example, the corresponding directory for release 7.1 of Redhat Linux, is structured this way:
 
        alpha/   i386/   ia64/   ppc/   s390x/
      

The root of the i386 directory in a Redhat 9 distribution looks like this:
 
	-rwxr-xr-x    2 root     root          248 Mar 14  2003 autorun
	drwxr-xr-x    7 root     root         4096 Mar 14  2003 dosutils
	-rw-r--r--    3 root     root         6192 Mar 14  2003 EULA
	-rw-r--r--    3 root     root        18385 Mar 14  2003 GPL
	drwxr-xr-x    3 root     root         2048 Mar 14  2003 images
	drwxr-xr-x    2 root     root         2048 Mar 14  2003 isolinux
	-rw-r--r--    3 root     root         6127 Mar 14  2003 README
	-rw-r--r--    2 root     root        13052 Mar 14  2003 README-Accessibility
	-rw-r--r--    2 root     root         6686 Mar 14  2003 README.de
	-rw-r--r--    2 root     root         6990 Mar 14  2003 README.es
	-rw-r--r--    2 root     root         6492 Mar 14  2003 README.fr
	-rw-r--r--    2 root     root         6805 Mar 14  2003 README.it
	-rw-r--r--    2 root     root         7995 Mar 14  2003 README.ja
	-rw-r--r--    2 root     root         7312 Mar 14  2003 README.ko
	-rw-r--r--    2 root     root         5070 Mar 14  2003 README.pt
	-rw-r--r--    2 root     root         6613 Mar 14  2003 README.pt_BR
	-rw-r--r--    2 root     root         5879 Mar 14  2003 README.zh_CN
	-rw-r--r--    2 root     root         5892 Mar 14  2003 README.zh_TW
	drwxr-xr-x    4 root     root         2048 Mar 14  2003 RedHat
	-rw-r--r--    2 root     root        25824 Mar 14  2003 RELEASE-NOTES
	-rw-r--r--    2 root     root        29902 Mar 14  2003 RELEASE-NOTES-de.html
	-rw-r--r--    2 root     root        30409 Mar 14  2003 RELEASE-NOTES-es.html
	-rw-r--r--    2 root     root        32354 Mar 14  2003 RELEASE-NOTES-fr.html
	-rw-r--r--    2 root     root        30064 Mar 14  2003 RELEASE-NOTES.html
	-rw-r--r--    2 root     root        29925 Mar 14  2003 RELEASE-NOTES-it.html
	-rw-r--r--    2 root     root        34666 Mar 14  2003 RELEASE-NOTES-ja.html
	-rw-r--r--    2 root     root        33520 Mar 14  2003 RELEASE-NOTES-ko.html
	-rw-r--r--    2 root     root        29496 Mar 14  2003 RELEASE-NOTES-pt_BR.html
	-rw-r--r--    2 root     root        22747 Mar 14  2003 RELEASE-NOTES-pt.html
	-rw-r--r--    2 root     root        25217 Mar 14  2003 RELEASE-NOTES-zh_CN.html
	-rw-r--r--    2 root     root        26645 Mar 14  2003 RELEASE-NOTES-zh_TW.html
	-rw-r--r--    3 root     root         1910 Mar 14  2003 RPM-GPG-KEY
	-r--r--r--    1 root     root         1823 Mar 14  2003 TRANS.TBL
      

The SRPMS directory contains the RPMS packages in source form.

The images directory contains boot and drivers floppy images that can be copied to a diskette if needed. In the 9 release, there is only one boot disk image available. This boot image is named bootdisk.img. A secondary driver disk is required beside this one if the installation is not performed directly from a CD-ROM or HD. A boot.iso file has now been added to boot a machine from the cdrom drive and start (network) installations more easily (i.e. without messing up with too many floppies). See section Installation and references therein for details and consult the README file in the directory for a more detailed explanation of the various files.

The isolinux directory contains the files needed to boot from the CD (and to rebuild bootable CDs which work the same way). This process was moved from floppy emulation to no emulation. This helps avoiding space constraints and compatibility problems.

The dosutils directory contains various programs for some other operating systems which are sometimes useful to support the installation process. An explanatory README file is included also in this case.

The listing is completed by a lot of files and the RedHat directory. The latter is the subject of the next sections while the formers have contents which will appear straightforward by simply reading their names (perhaps apart from the EULA, or End User License Agreement).

2.2. The "RedHat" directory -- the core of the distribution

The most important part of the directory tree is rooted in the RedHat directory:

 
        drwxr-xr-x    2 root     root        53248 Jun 14 03:15 RPMS
        drwxr-xr-x    2 root     root          4096 Jun 14 04:15 base
      

The RPMS directory contains the major part of the Red Hat distribution consisting of a set of RPM (Redhat Package Manager) files. An RPM package typically contains binary executables, along with relevant configuration files and documentation. See the section RPM packages for more information.

The base directory holds different files needed during the installation process, like the comps.xml file, which defines the components (groups of packages) used during the "Choose packages to install" phase. See section The comps file for more information on this file, and how to use it.

Two other important files in the base directory are hdlist and hdlist2 containing most of the header fields from all the RPMs in the RPMS directory. This means that all the interdependencies among RPM packages can be determined just by reading these files without having to read all the RPM packages which is quite convenient especially during FTP installs. Another use of these files is mapping package names to file names (eg. perl to perl-5.004-6.i386.rpm). This means that if you want to incorporate updates from RedHat (see section Including the updates) or add your own packages to the RPMS directory, you need to update hdlist and hdlist2. This is described later in Rebuilding the installer. Besides these files, the images from which the installation environment (i.e. kernel, python interpreter, anaconda, etc.) is loaded are found.

2.3. The "updates" directory

The /pub/redhat/linux/updates directory has updates for all releases of RedHat's distribution since version 3.0.3. This is the place to find software packages that have been updated for some reason or other. You should especially be aware of security updates. These are publicised on RedHat's errata page whenever a fix is available. The most important files found in the updates directory are:

 
        drwxrwsr-x    3 root      root          4096 Jul 13 10:13 5.2
        drwxrwsr-x    3 root      root          4096 Jul 13 10:13 6.0
        drwxrwsr-x    3 root      root          4096 Jul 13 10:13 6.1
        drwxrwsr-x    4 root      root          4096 Jul 13 10:14 6.2
        drwxrwsr-x    4 root      root          4096 Jul 13 10:14 7.0
        drwxrwsr-x    4 root      root          4096 Jul 13 10:14 7.1
        drwxrwsr-x    4 root      root          4096 Jul 13 10:13 7.2
        drwxrwsr-x    3 root      root          4096 Jul 13 10:14 7.3
        drwxrwsr-x    3 root      root          4096 Jul 13 10:14 8.0
        drwxrwsr-x    3 root      root          4096 Jul 13 10:14 9
      

The structure of each of these directories is similar to that described in the section The Redhat 9 tree. So you will find for each version, in the subdirectory en/os/ a series of subdirectories representing the various architectures and a noarch and SRPMS subdirectories, for packages which work on every architecture or are in source form respectively.

 
        drwxrwsr-x    2 root      root          4096 Sep 23 05:28 SRPMS
        drwxrwsr-x    2 root      root          4096 Aug 28 18:25 athlon
        drwxrwsr-x    2 root      root          8192 Sep 23 05:28 i386
        drwxrwsr-x    2 root      root          4096 Jul 13 10:14 i486
        drwxrwsr-x    2 root      root          4096 Aug 28 18:26 i586
        drwxrwsr-x    2 root      root          4096 Aug 28 18:26 i686
        drwxrwsr-x    2 root      root          4096 Jul 13 10:14 noarch
      

2.4. Differences for the 8.0 tree

The 8.0 distribution layout is almost identical to the one just described. The only major differences, in this respect, can be found in the images directory.

The images directory contains boot and drivers floppy images that can be copied to a diskette if needed. In the 8.0 release, there are three boot disk images available. The first boot image is called boot.img, and is required when installation is performed directly from a CD-ROM. If installing from a NFS mounted disk or FTP is required, the bootnet.img disk image is needed. Installs through PCMCIA adapters need the pcmcia.img floppy. See section Installation and references therein for details and consult the README file in the directory for a more detailed explanation of the various files.

2.5. Differences for the 7.x tree

The two distributions are fairly similar in this respect. The only changes which are of some interest to us (and easy to notice with a simple inspection of the main distribution tree) are represented by a missing isolinux directory and some changes in the RedHat/base directory. The first one is due to the way the installation CDs are made bootable in releases prior to 8.0 ("floppy emulation" has been superseded by "no emulation" in release 8.0), while the second is an effect of the migration of the comps file format to XML in Redhat releases after 8.0 (that's why it was renamed comps.xml). The Redhat/base/comps file is, in fact, a simple textual file with a quite inflexible syntax in releases prior to and including Redhat 7.3.

2.6. Differences for the 6.x tree

For release 6.2 ( pub/redhat/linux/6.2/en/os/), the last of the 6 series, the organization is the following (the previous releases are mostly similar if not really equal, in this respect):

        alpha/   i386/   sparc/
      

While the root of the i386 directory looks like this:
        -rw-r--r--    1 root     root        18385 Sep  7  1999 COPYING
        -rw-r--r--    1 root     root         3400 Mar  8  2000 README
        -rw-r--r--    1 root     root        16300 Mar  8  2000 RELEASE-NOTES
        -rw-r--r--    1 root     root         1908 Sep 25  1999 RPM-GPG-KEY
        drwxr-xr-x    1 root     root          512 Sep 27 15:22 RedHat
        drwxr-xr-x    1 root     root        17408 Sep 27 15:22 SRPMS
        -rwxr-xr-x    1 root     root          538 Sep 26  1999 autorun
        -rwxr--r--    1 root     root         2048 Mar  9  2000 boot.cat
        drwxr-xr-x    1 root     root          512 Sep 27 15:22 doc
        drwxr-xr-x    1 root     root          512 Sep 27 15:22 dosutils
        drwxr-xr-x    1 root     root          512 Sep 27 15:22 images
        drwxr-xr-x    1 root     root          512 Sep 27 15:22 misc
      

In the following paragraphs I will only list differences from the newest releases, what is not explicitly mentioned is (or is believed to be) unchanged.

The doc directory contains an abundance of information. Most importantly, the RedHat installation manual can be found in HTML format in the directory or on the Redhat website ( Redhat 6.2 Installation guide). Next, there are the reference guide and the getting started guide. The documentation for the 7.x/8.0/9 releases is on a separate CD (in a different tree, on the ftp site).

The images directory contains boot floppy images that can be copied to a diskette if needed, like for 8.0, 7.3 and 9. See section Installation and references therein for details. The misc directory contains source and executables of a number of programs needed for the installation.

The most important part of the directory tree is (again) rooted in the RedHat directory:

        drwxr-xr-x   2 root     root    28672   Oct 26 09:01   RPMS
        drwxr-xr-x   2 root     root     4096   Oct 26 09:01   base
        -rw-r--r--   1 root     root        0   Jan 19  1999   i386
        drwxr-xr-x   6 root     root     4096   Oct 26 09:01   instimage
      

The RPMS directory should be already known to you. See the section RPM packages for more informations. The base directory holds different book-keeping files needed during the installation process, like for releases 7.3, 8.0 and 9. The only noticeable differences being represented by a single hdlist file and a missing stage2.img file whose functionalities should be provided by the files included in the instimage directory. This contains, in fact, a bare-bones live file system with a number of programs and shared libraries needed during the installation procedure.

The updates directory is really similar to the one described for release 9 with the only difference of having more architecture related directories.