想当年,我们怀着兴奋和激动的心情,安装了 RedHat6.2,随着时间的推移和开发人员的努力,内核中的错误和不足被逐渐发现并修正,为了系统的性能和稳定,需要升级内核了。可是我们有许多程序只能运行于2.2.x 内核之下,看来升级到 RedHat 7.2是没有希望了,唯一的办法就是下载新的合适的内核包来升级。看内核升级文档,英文的,不太懂,好不容易搞明白,才发现需要下载的包如此之多,终于下载完了,安装的时候又出问题,由于包的依赖性等问题,这个装不上,那个装不上。最后,内核升级失败。
我们使用的应用程序,也有不少性能和安全方面的问题,也需要升级。在下载安装升级包的时候,会遇到与上面升级内核是同样的问题,难以克服。
最麻烦的问题是,好不容易克服了重重困难,开始安装,可某个包告诉你它需要的一个文件(不是一个包,仅仅是个文件)不存在,天啊!谁知道这个文件在哪个包里,总不能把所有的包都下载下来吧,看来升级是没有指望了,又是失败。
RHN 升级服务是与 RedHat 7.x 同步推出的,就像微软的 windowsupdate。它可以自动检查你的系统有哪些包需要升级,自动计算包的依赖性,从而确定下载什么包来升级你的系统和应用程序,免除了我们的苦恼。
RHN 只会进行小版本升级,不会把你的系统改的面目全非的。比如:6.2 的内核是 2.2.x,它不会把你的内核升级到 2.3.x 或者 2.4.x的。同样的道理,你的 bind 是版本 8 的,它决不会给你升级到版本 9的。这样可以保证你的系统的稳定运行,不会由于升级,导致你的某些对内核版本有依赖的程序不能正常运行,或者象 bind一样,需要你重新配置或生成很多你不了解的新版本所特有的配置文件。
另个好处是,Red Hat 会在有你需要的升级包发布的时候(不是所有的升级包发布的时候),把升级的具体原因和内容发到你在 RHN注册的电子信箱里,你只用收收邮件,就知道有升级消息了,看过之后,可以决定去不去升级你的系统。
从上可以看出,RHN 是管理 Red Hat linux 系统的有效工具。
使用 RHN 前的准备工作:
在安装 RHN 功能之前,需要升级 rpm 管理包。因为 6.2 使用的版本 3 格式的包,而目前 RedHat 推出的包都是基于版本 4格式的,版本 4 格式的包无法在版本 3 下安装。
开始升级 rpm,步骤如下:
1、如下所示,下载相应的 rpm 包:(注意: Red Hat 网上提供的升级包清单不全,缺少 db3 包。)
ftp://updates.redhat.com/6.2/en/os/i386/rpm-4.0.2-6x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/rpm-devel-4.0.2-6x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/rpm-build-4.0.2-6x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/rpm-python-4.0.2-6x.i386rpm
ftp://updates.redhat.com/6.2/en/os/i386/popt-1.6.2-6x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/db3-3.1.17-4.6x.i386.rpm
2、安装 rpm 包,执行如下命令:(注意:是执行两次相同的命令,而不是写错了。)
rpm -Uvh --nodeps --force *
rpm -Uvh --nodeps --force *
3、重建 rpm 数据库,执行如下命令: rpm --rebuilddb
安装 RHN 的客户端工具,步骤如下:
1、如下所示,下载相应的 rpm 包:
ftp://updates.redhat.com/6.2/en/os/i386/up2date-2.7.11-6.x.1.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/python-popt-0.6-1.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/python-xmlrpc-1.5.1-6.x.7.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/python-1.5.2-27.6.x.i386rpm
ftp://updates.redhat.com/6.2/en/os/i386/rhn_register-2.7.2-6.x.8i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/openssl-0.9.5a-7.6.x.i386.rpm
如果你准备在 Xwindows 下执行 RHN 操作,那么还需要下载如下的 rpm 包:
ftp://updates.redhat.com/6.2/en/os/i386/up2date-gnome-2.5.4-0.6.x.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/up2date-2.7.11-6.x.1.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/rhn_register-gnome-2.7.2-6.x.8.i386.rpm
ftp://updates.redhat.com/6.2/en/os/i386/usermode-1.37-1.6.i386.rpm
2、开始安装包,执行如下命令:
rpm -Uvh *
怎么使用 RHN:
1、在 RHN 上注册自己的 linux 计算机,也就是在 RHN 上新建立一个帐号。执行如下命令:
rhn_register
执行后,出来的是图形界面,简单易懂。必须输入的内容有:
想在 RHN 上建立的帐号名及密码,你的电子邮件地址。
它会把你的机器的硬件、软件信息和配置信息发给 RHN,留作记录,用作升级时的参考。
2、导入 Red Hat 的数字签名,执行如下命令两次(有时候一次也可以,这是最保险的方法):
/usr/bin/gpg --import /usr/share/rhn/RPM-GPG-KEY
/usr/bin/gpg --import /usr/share/rhn/RPM-GPG-KEY
3、先看看自己的系统有哪些包需要升级,执行以下命令: up2date -l
它首先在 RHN上查找你的系统需要的最新升级包的名称,然后再除去你已经安装过的,把你目前需要的升级包的详细信息显示出来,主要内容为包的名称、原始版本、发布版本。详细内容后面有例子。
4、使用自动升级功能,执行如下命令:
up2date -u
它会根据设定的规则,对你的系统进行自动升级。具体过程就是:自动下载,自动安装。
如果你改动过应用程序发布时自带的配置文件,up2date就会告诉你,这个应用程序不能自动升级,需要手动升级。主要是为了保护你的配置,以免被错误覆盖,导致应用程序不能正常运行。 比如:你修改过 sendmail 自带的 sendmail.cf 文件,up2date 就会告诉你由于 sendmail.cf 被修改过,所以不能升级 sendmail。
默认情况下内核也是不能自动升级的。
5、手动升级非内核包:
主要用于为象上面的 sendmail
这样的情况。这个操作有一定难度,首先我们要了解旧的配置与新的配置是否相容,也就是新的程序是否可以使用旧的配置文件。这需要到有关的网站去查看或者咨询高手。
如果相容,我们把旧的配置文件保存好,升级完后,再用旧的配置文件覆盖新的配置文件即可。实际上 up2date会自动把旧的配置文件保存为 *.rpmsave,或者它不改动旧的配置文件,而是把新的配置文件命名为
*.rpmnew。升级后配置文件如何变化的具体情况,up2date 在升级完成时,会告诉我们的。但为了保险起见,我们还是手工保存一下为妙。
比如刚才的 sendmail 包,我们用旧的配置文件覆盖新的即可。
如果不相容,而又想升级。最好的办法就是升级完后,重新配置了。
具体操作命令为:
up2date -f 包名称
比如:up2date -f sendmail。有的时候包名称比较长,如 pcmcia-kernel,需要全部输入,只输入 pcmcia 是不行的。
6、手动升级内核:
这种情况下,我们需要首先修改配置文件 /etc/sysconfig/rhn/up2date,修改以前最好备份一下 up2date。主要是其中两项:
removeSkipList=kernel*;
pkgSkipList=kernel*;
把其等号后面的 kernel*; 全部删除,使其变成:
removeSkipList=
pkgSkipList=
修改完成后,保存,再执行 up2date -u 命令即可。
从上面的介绍可以看出,RHN 的确是管理 Red Hat linux 系统的有效工具。
例子:
执行 up2date -l 后的结果
Retrieving list of all available packages...
########################################
########################################
Removing installed packages from list of updates...
########################################
Removing packages marked to skip from list...
########################################
Getting headers for available packages...
########################################
Removing packages with files marked to skip from list...
########################################
Name Version Rel
---------------------------------------------------------
at 3.1.8 22.2
uucp 1.06.1 33.6.2
它告诉我们,at 和 uucp 需要升级。
如果执行 up2date -u 的话,结果与此类似,多了下载和安装。