Remote Serial Console HOWTO
Prev | Appendix C. Upgrading Red Hat Linux from a serial console | Next

# 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

Prev | Home | Next
Prepare a network install floppy diskette | Up | Record network configuration