红帽子企业版RHEL5.0 的软件包管理

RHEL(Red Hat Enterprise Linux)升级到5.0以后,开始用yum(Yellow dog Update Manager)来管理软件包,包括软件包的更新和补丁的下发。这个可不是一个小变化!这样以来:
1,如果没有购买 Redhat的订阅,就不能得到安装号码(注意不是开始安装时的序列号),从而不能注册系统,就不能得到红帽的软件更新和补丁服务;
2,“添加/删除软件”中(软件包管理器,命令名字是 pirut),软件“列表”就只能看到已经安装的软件包;而“浏览”标签页下将看不到任何可管理的软件包分类(有人认为这是个Bug,其实是Redhat故意制造的“Bug”)。打开菜单“应用程序/系统工具/软件包更新工具”,就会要求用户输入订阅或去注册和购买订阅。

这样,就不能及时获得红帽的更新(没付费,尚且可以理解吧),而且不能用GUI界面的包管理工具来添加/删除系统中的rpm软件包了。虽然可以手工用命令 rpm 来安装和卸载包(命令分别形如 rpm -Uvh packge.rpm 和 rpm -e package),而且只要手工正确安装后,使用上不会有任何问题,但就没有了图形界面的方便性。

事实上,所有的 rpm 包都储存在 RHEL安装光盘(卷标RHEL_5.1 i386 DVD)的 Server 目录下,手工安装时也就是从这里取得安装源。RHEL5.0其实是把安装源从这里指向了它的某个http服务网址了,而且我们可以猜测,直接连接这个网址显然应该需要认证的了。但我们可以设想,如果把安装源指向本地的文件系统,可能也是可以的?事实上确实是可以的。

做法:

1,加载DVD安装盘:
cd /media
mkdir iso
mount /dev/hdc iso
在我用 Vmware6.0安装的RHEL5.3里,用 df 命令看到我的光驱设备是 /dev/hdc。我这里加装到了 /media/iso下。
注意系统本来是自动加载到了 /media/RHEL_5.1 i386 DVD/ 下的,但因为DVD的卷标中间有空格,使用时有问题。所以特别再加载一次,换一个路径。

2,在/etc/yum.repos.d/路径下建立文本文件 RHEL5media.repo,输入以下文本内容:
[base]
name=Base RPM Repository for RHEL5
baseurl=file:///media/iso/Server/
enabled=1
gpgcheck=0

3,修改/usr/lib/python2.4/site-packages/yum/路径下的yumRepo.py文件(可以看到,RHEL5.0的系统代码是用Python开发的!),将其中第 411 行由 remote = url + '/' + relative 修改为 remote = "file:///mnt/iso/Server/" + '/' + relative 就可以了。

这时点击“应用程序/系统工具/软件包更新工具”(命令名字是 pup),就会弹出“软件包更新”窗口,提示没有可用的更新:“当前还没有对您的系统有效的更新的软件包。”语法无可挑剔,但感觉很拗口的一句话了,是个假洋鬼子翻译的吧?

再点击“应用程序/添加删除软件”(不能和上面的“软件包更新工具”同时运行,会有出错提示),打开“软件包管理器”,就会看到“浏览”下左边是“桌面环境”“应用程序”“开发”“服务器”“基本系统”“语言支持”六个软件包分类,右边会分别列出所有的软件包,包括本系统已经安装的和未安装的包。

要注意的是,我是用 mount 命令临时加载光驱设备到 /media/iso/ 下的,以后要如此管理软件包的话必须首先做这一步。如果还想要“自动化”,那么把这条命令加到启动时的自动运行文件里就可以了。方法是:在 /etc/ 下的 rc.local 文件末尾里加:
mount /dev/hdc /media/iso

我顺便想到,如果把Redhat以后的更新包通过手工下载,再添加到光盘的Server目录下(关盘是不可写的,换个路径吧),是不是可以照样升级系统呢?理论上是可以的,但这时rpm包的依赖问题不知道能不能解决呢?我不知道。

(本文在 RHEL5.03下用 gedit编辑器写成。)

2009-4-26

配图版本地址:http://blog.why100000.com/?p=481

你可能感兴趣的:(应用服务器,linux,redhat,python,企业应用)