C.5. Prepare HTTP server

It is best if the web server runs the version of Red Hat Linux as is being upgraded to. If it runs an earlier version, then do not rebuild the operating system on this machine and install anaconda-runtime from the later operating system.

Copy the Linux distribution to a local web server using a mirroring utility like wget. Alternatively the files can be copied from the distribution CDs to the web server.

bash$ mkdir --mode=664 --parents /var/www/html/redhat/linux/7.1/en/os/i386
bash$ umask 002
bash$ wget -nh -nH -r -N -nr -l0 -k -np -X SRPMS ftp://ftp.redhat.com/pub/redhat/linux/7.1/en/os/i386/ -P /var/www/html/redhat/linux/7.1/en/os/i386

It's best to use a mirror site in place of Red Hat's FTP site used in the example above.

It is very important not to gain files along the way. Delete any files generated by FTP servers, web servers and CD-ROMs.

bash$ cd /var/www/html/redhat
bash$ # Files added by FTP server
bash$ find . -name '.listing' -print -exec rm {} \;
bash$ find . -name 'ls-*' -print -exec rm {} \;
bash$ # Files added by a wget from a HTTP server
bash$ find . -name '\?*' -print -exec rm {} \;
bash$ # Files added by a CD-ROM
bash$ find . -name 'TRANS.TBL' -print -exec rm {} \;

We now need to add the latest updates to the distributed software. This is done to avoid the machine being compromised immediately following the upgrade.

Adding the updates is essential for Red Hat Linux 7.1, see Section A.2.

Collect together the updates RPMs from ftp://ftp.redhat.com/pub/updates/7.1/en/os/ in the subdirectories i386, i486, i586 i686, images and noarch.

Merge these updates into the copy of the distribution. For each updated RPM file, remove the original RPM file then replace it with the updated RPM file. For example:

bash$ cd /var/www/html/redhat/linux/7.1/en/os/i386/RedHat/RPMS
bash$ ls /var/www/html/redhat/updates/7.1/en/os/i386
SysVinit-2.78-17.i386.rpm
bash$ ls SysVinit-*.rpm
SysVinit-2.78-15.i386.rpm
bash$ rm SysVinit-2.78-15.i386.rpm
bash$ cp /var/www/html/redhat/updates/7.1/en/os/i386/SysVinit-2.78-17.i386.rpm .
bash$ chmod u=rw,g=r,o=r SysVinit-2.78-17.i386.rpm

Merge the RPMs from the updates subdirectories i386, i686 and noarch into /var/www/html/redhat/linux/7.1/en/os/i386/RedHat/RPMS. Merge the files from the directory /var/www/html/redhat/updates/7.1/en/os/images into the directory /var/www/html/redhat/linux/7.1/en/os/i386/images.

The file /var/www/html/redhat/linux/7.1/en/os/i386/RedHat/base/hdlist and hdlist2 contain the list of the RPMs to install. This needs to be modified to contain the names of the updated RPMs.

Install the anaconda-runtime RPM on the HTTP server. This RPM should be the same version as the Red Hat Linux being upgraded to.

Now create a new hdlist with the commands:

bash$ cd /usr/lib/anaconda-runtime
bash$ rm /var/www/html/redhat/linux/7.1/en/os/i386/RedHat/base/hdlist*
bash$ umask 002
bash$ ./genhdlist --withnumbers --hdlist /var/www/html/redhat/linux/7.1/en/os/i386/RedHat/base/hdlist /var/www/html/redhat/linux/7.1/en/os/i386

The distribution plus the updates can now be used for a network install. They cannot be used for a CD install, but that doesn't concern us.

As the distribution plus the updates is different from the original distribution, we should not use the version number of the original distribution. Appending the date to which the updates have been applied seems best.

bash$ cd /var/www/html/redhat/linux/
bash$ mv 7.1 7.1-20020202