C.5. 准备 HTTP 服务器

最好是 Web 服务器运行要升级到的 Red Hat Linux 版本。 如果它运行的是早期版本,那么不要在这台机器上重建操作系统,并从较新版本的操作系统安装 anaconda-runtime

使用镜像工具(如 wget)将 Linux 发行版复制到本地 Web 服务器。 或者,文件可以从发行版 CD 复制到 Web 服务器。

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

最好使用镜像站点,而不是上面示例中使用的 Red Hat 的 FTP 站点。

非常重要的是不要在此过程中获取文件。 删除由 FTP 服务器、Web 服务器和 CD-ROM 生成的任何文件。

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 {} \;

我们现在需要将最新的更新添加到分布式软件中。 这样做是为了避免机器在升级后立即受到攻击。

添加更新对于 Red Hat Linux 7.1 至关重要,请参阅 A.2 节

ftp://ftp.redhat.com/pub/updates/7.1/en/os/ 的子目录中收集更新 RPMi386, i486, i586 i686, imagesnoarch.

将这些更新合并到发行版的副本中。 对于每个更新的 RPM 文件,删除原始 RPM 文件,然后用更新的 RPM 文件替换它。 例如

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

RPMupdatessubdirectoriesi386, i686noarch/var/www/html/redhat/linux/7.1/en/os/i386/RedHat/RPMS. 将文件从目录/var/www/html/redhat/updates/7.1/en/os/images到目录/var/www/html/redhat/linux/7.1/en/os/i386/images.

文件/var/www/html/redhat/linux/7.1/en/os/i386/RedHat/base/hdlisthdlist2包含要安装的 RPM 列表。 这需要修改以包含更新的 RPM 的名称。

安装anaconda-runtime HTTP 服务器上的 RPM。 此 RPM 应与要升级到的 Red Hat Linux 版本相同。

现在创建一个新的hdlist使用以下命令

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

现在,发行版加上更新可以用于网络安装。 它们不能用于 CD 安装,但这与我们无关。

由于发行版加上更新与原始发行版不同,我们不应使用原始发行版的版本号。 附加应用更新的日期似乎是最好的。

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