您需要在可写磁盘上拥有发行版副本,该磁盘可以从具有 CD 刻录机的计算机访问(duh!)。如果您想包含最新的更新,则此目录应(也)可以从 Linux 机器访问,无论是本地磁盘、不同计算机上的 NFS 挂载磁盘还是 JAZ 磁盘。您可以从 RedHat CD 复制发行版(推荐),或者您可以通过 FTP 获取它。如果您选择使用 FTP,则有两种方法。您可以使用以下部分中介绍的基于 wget 的 shell 脚本,或者使用 howto 1.34 及更早版本中建议的 mirror 包(在 使用 mirror 部分中报告)。
这不是最简单的方法,即使它可能是最准确的方法。我喜欢它,因为它通过比较文件的 RPM 版本而不是日期/时间或名称(如标准镜像包)来工作,并且如果配置为通过 rhcd.conf 文件中的 CHECKSIG 变量这样做,它会在每次下载某些更新时检查更新的签名。
创建一个目录来保存安装文件并 cd 进入它,然后发出命令(这将在您的硬盘驱动器上下载约 3Gb 的数据)
$ wget -r -c -t0 -l0 --retr-symlinks -nH --cut-dirs=9 \ ftp://ftp.mirror.ac.uk/sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386 |
您可能需要更改 ftp 下载镜像,并因此更改传递给 --cut-dirs 选项的参数。实际上,它与 -nH 一起使用,以避免重新创建 ftp 站点目录层次结构。有关如何正确使用该选项的更多信息,您可以查看 wget 文档 和手册页。
如果您想从下载中排除一个或多个目录,可以使用 -X list 选项,其中 list 表示目录的逗号分隔列表。例如,要排除SRPMS上次下载的目录,您将使用
$ wget -r -c -t0 -l0 --retr-symlinks -nH --cut-dirs=9 \ -X /sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386/SRPMS \ ftp://ftp.mirror.ac.uk/sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386 |
如果您考虑以下目录的大小,这可能会很有用SRPMS目录(约 1.2GB),或者至少,我发现它很有用。
如果您想检查 GPG 签名以确保软件包的真实性(这是我建议的),您应该安装 gnupg 软件包(仅在 Redhat 7.3 上需要)并导入您可以在 CD 根目录中找到的 security@redhat.com 公钥(RPM-GPG-KEY)或在 RedHat 网站 上。通过运行命令导入密钥:gpg --import <filename> 在 7.3 及更早版本中,对于 8.0 和 9 版本,应更改为 rpm --import <filename> (有关更多信息,请查看 GNU Privacy Guard 和 RPM - Redhat 软件包管理器网站)。
如果您想检查 rpm 软件包,您可以使用以下命令来完成(我假设您是从完成下载的目录中发出该命令)
对于 7.3 及更早版本
$ find . -name "*.rpm" -exec rpm -K --nopgp {} \; |grep "NOT *OK" |
对于 8.0 和 9 版本(以及我猜想的未来版本)
$ find . -name "*.rpm" -exec rpm -K {} \; |grep "NOT *OK" |
如果您不想 “麻烦” 自己进行所有这些步骤,我希望您想(至少)检查下载文件的完整性(这并不意味着没有人篡改过它们),验证 md5 签名。这是通过以下方式完成的
对于 7.3 及更早版本
$ find . -name "*.rpm" -exec rpm -K --nopgp --nogpg {} \; |grep "NOT *OK" |
对于 8.0 和 9 版本(以及我猜想的未来版本)
$ find . -name "*.rpm" -exec rpm -K --nosignature {} \; |grep "NOT *OK" |
Red Hat 发行版的内容在不同版本之间不会更改,因此您只需下载这些软件包 一次。发行版的所有更改都在updates目录中。因此,如果您想保持 Red Hat 发行版的最新镜像,您只需要保持updates目录为最新。这是使用脚本 updateDist.sh 完成的。在使用此脚本之前,您必须配置 rhcd.conf 配置文件并导出一个 RHCDPATH 变量,该变量指向此文件所在的目录。
$ export RHCDPATH=/home/luigi/tmp/rhcd-scripts $ sh updateDist.sh |
该脚本将下载新的更新,排除包含在 EXCLUDELIST 变量中的子目录,在完成两个测试后,将旧的更新(即刚刚被新版本取代的更新)移动到由 OLDDIR 变量表示的目录。第一个测试比较了.listing文件,由wget到本地目录的内容,以确保所有文件都已下载。第二个测试根据两个变量 CHECKSIG 和 USEGPG 的值验证软件包签名(如果您希望完成操作,请将它们都设置为 “yes”)。如果在签名检查过程中失败,脚本会将有问题的软件包移动到 OLDDIR,为其分配 “.UPDcheckfail” 扩展名并退出,而不会将旧更新移动到 OLDDIR。
Mirror 是一个复杂的 perl 脚本,用于比较远程站点上的目录内容与本地目录。它将使用 FTP 获取远程站点上但本地站点上没有的文件,并删除本地站点上但远程站点上没有的文件。mirror 程序使用配置文件进行配置。mirror 软件包可以从 rufus.w3.org 获取 RPM。制作您的本地副本mirror.redhat的 mirror 配置文件,并编辑文件顶部的相关字段。在默认部分之后,定义这些软件包
package=updates site=ftp.mirror.ac.uk exclude_patt=(SRPMS/) remote_dir=/sites/ftp.redhat.com/pub/redhat/linux/updates/7.3/en/os/i386 local_dir=/home/luigi/tmp/redhat-cd/redhat-7.3-updates package=dist site=ftp.mirror.ac.uk exclude_patt=(SRPMS/) remote_dir=/sites/ftp.redhat.com/pub/redhat/linux/7.3/en/os/i386 local_dir=/home/luigi/tmp/redhat-cd/redhat-7.3 |
以下命令将在您的本地磁盘上下载整个 RedHat 树的副本。在执行此操作之前**思考**,您即将传输大约 1.5Gb 的数据(如果您已排除SRPMS目录)!
$ mirror -pdist mirror.redhat |
这将在您的本地磁盘上镜像 Red Hat FTP 站点。Red Hat 发行版的内容在不同版本之间不会更改,因此您只需下载此软件包 一次。发行版的所有更改都在updates目录中。因此,如果您想保持 Red Hat 发行版的最新镜像,您只需要保持updates目录中。这是使用命令完成的
$ mirror -pupdates mirror.redhat |
您可以通过 cron 脚本定期运行此命令,例如每周一次。RedHat 发行版在全球许多 FTP 服务器上可用,这些服务器每天从 ftp.redhat.com 的主站点更新。您应该选择离您较近的 FTP 站点,请参阅 RedHat 镜像站点列表。
![]() | 我个人没有测试过此过程。这是针对较旧版本的 howto(最高版本 1.34,关于 RedHat <=6.1)唯一提出的过程。 |