Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1753819
  • 博文数量: 787
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-22 15:17
文章分类

全部博文(787)

文章存档

2008年(787)

我的朋友

分类:

2008-09-25 16:05:58

RedHat 企业版Linux AS3和WS3的Update3版本光盘版(下面简称U3)不提供升级安装选项,给在学习这个优秀系统的爱好者(咱不说盗版,那太难听了,等咱有了 钱......。如果确实需要在生产环境使用这个系统,强烈建议购买正版,个人感觉EL3确实是一个优秀发行版)造成了一定困难。这里提供一个采用硬盘 ISO文件升级到AS3U3的方法,这个方法适合我自己的系统,如果有错误和不足之处欢迎批评指出。

0 强烈建议升级前仔细阅读RELEASE NOTES

0.1 系统背景和一个小技巧

我的机器是一个用于开发和提供简单服务的老双P3,安装了AS3提供的大部分软件,已经升级到U2并自己编译安装了了大部分U2之后的补丁,下面实例都是基于我自己的软件和硬件环境的,如果您的软件环境不同,下面的一些步骤会有不同。

0.1 转换BIN/CUE格式的光盘镜像到ISO格式

ror提供的U3是rar压缩的CUE格式的光盘镜像,要在硬盘安装需要首先解压并转换成ISO格式。
软件需求:rar和bchunk,可以在rpmfind.net找到src.rpm,AS3下面可能需要自己用rpmbuild命令编译再安装。以bchunk为例:

下载bchunk
[root@ns root]# rpmbuild --rebuild bchunk-1.1.1-3mdk.src.rpm
[root@ns root]# rpm -ihv /usr/src/redhat/RPMS/i386/bchunk-1.1.1-3mdk.i386.rpm

解压rar压缩的U3光盘,并转换成ISO格式
[root@ns CD1]# rar x rorr3a31.rar
[root@ns CD1]# bchunk rhel-3-U3-i386-as-disc1.bin rhel-3-U3-i386-as-disc1.cue rhel-3-U3-i386-as-disc1

这样产生的ISO文件名字为:rhel-3-U3-i386-as-disc101.iso

对其它3个光盘镜像做同样处理。


1 RPM目录准备(假设ISO文件都在当前目录)

[root@ns AS3U3]# mkdir cd1
[root@ns AS3U3]# mkdir cd2
[root@ns AS3U3]# mkdir cd3
[root@ns AS3U3]# mkdir cd4
[root@ns AS3U3]# mount -t iso9660 rhel-3-U3-i386-as-disc101.iso cd1 -o loop,ro
[root@ns AS3U3]# mount -t iso9660 rhel-3-U3-i386-as-disc201.iso cd2 -o loop,ro
[root@ns AS3U3]# mount -t iso9660 rhel-3-U3-i386-as-disc301.iso cd3 -o loop,ro
[root@ns AS3U3]# mount -t iso9660 rhel-3-U3-i386-as-disc401.iso cd4 -o loop,ro
[root@ns AS3U3]# mkdir RPMS
[root@ns AS3U3]# cd RPMS
[root@ns RPMS]# ln -s ../cd1/RedHat/RPMS/*rpm .
[root@ns RPMS]# ln -s ../cd2/RedHat/RPMS/*rpm .
[root@ns RPMS]# ln -s ../cd3/RedHat/RPMS/*rpm .
[root@ns RPMS]# ln -s ../cd4/RedHat/RPMS/*rpm .



2 删除冲突软件包

kernel RPM不要使用升级方式安装,应该采用全新安装方式,因此首先删除所有kernel*rpm
[root@ns RPMS]# rm -f kernel*rpm (只是删除了临时建立的连接,源文件不会受到影响)

RPMS目录下面同时存在i386和i686RPM时使用rpm -F会有问题,应根据系统架构删除同名RPM。如果系统是i686(pentium pro及以后)架构,删除相应的i386的RPM包

列出所有i686 RPM:
[root@ns RPMS]# ls | grep i686
glibc-2.3.2-95.27.i686.rpm
nptl-devel-2.3.2-95.27.i686.rpm
openssl-0.9.7a-33.12.i686.rpm

删除重复的i386 RPM:
[root@ns RPMS]# rm -f glibc-2.3.2-95.27.i386.rpm
[root@ns RPMS]# rm -f nptl-devel-2.3.2-95.27.i386.rpm
[root@ns RPMS]# rm -f openssl-0.9.7a-33.12.i386.rpm


3 测试rpm冲突,因为AS3U3新添了一些软件包,同时把一些原来处于同一个包下面的包分开成了多个包(更合理了),所以需要首先测试系统软件包

各人的系统软件包不同,将会有不同的提示,下面只是我机器上面的示例,需要根据个人情况认真分析

[root@ns RPMS]# rpm -Fvh *rpm
error: Failed dependencies:
booty is needed by anaconda-9.1.3-3.RHEL
libdns.so.11 is needed by bind-9.2.4-EL3_10
libisc.so.7 is needed by bind-9.2.4-EL3_10
libisccc.so.0 is needed by bind-9.2.4-EL3_10
libisccfg.so.0 is needed by bind-9.2.4-EL3_10
liblwres.so.1 is needed by bind-9.2.4-EL3_10
libdns.so.11 is needed by bind-utils-9.2.4-EL3_10
libisc.so.7 is needed by bind-utils-9.2.4-EL3_10
liblwres.so.1 is needed by bind-utils-9.2.4-EL3_10
smtpdaemon is needed by mdadm-1.5.0-9
libmysqlclient.so.10 is needed by php-mysql-4.3.2-14.ent
librpm-4.2.so is needed by rpm-4.2.3-10
librpmbuild-4.2.so is needed by rpm-4.2.3-10
librpmdb-4.2.so is needed by rpm-4.2.3-10
librpmio-4.2.so is needed by rpm-4.2.3-10
librpm-4.2.so is needed by rpm-build-4.2.3-10
librpmbuild-4.2.so is needed by rpm-build-4.2.3-10
librpmdb-4.2.so is needed by rpm-build-4.2.3-10
librpmio-4.2.so is needed by rpm-build-4.2.3-10
librpm-4.2.so is needed by rpm-devel-4.2.3-10
librpmdb-4.2.so is needed by rpm-devel-4.2.3-10
librpmio-4.2.so is needed by rpm-devel-4.2.3-10
librpm-4.2.so is needed by rpm-python-4.2.3-10
librpmdb-4.2.so is needed by rpm-python-4.2.3-10
librpmio-4.2.so is needed by rpm-python-4.2.3-10
librpm-4.2.so is needed by (installed) net-snmp-5.0.9-2.30E.6
librpm-4.2.so is needed by (installed) net-snmp-perl-5.0.9-2.30E.6
librpmdb-4.2.so is needed by (installed) net-snmp-5.0.9-2.30E.6
librpmio-4.2.so is needed by (installed) net-snmp-5.0.9-2.30E.6
librpmio-4.2.so is needed by (installed) net-snmp-perl-5.0.9-2.30E.6
Suggested resolutions:
bind-9.2.2-21.i386.rpm
bind-utils-9.2.2-21.i386.rpm
booty-0.31.1-1.i386.rpm
mysql-3.23.58-1.i386.rpm
postfix-2.0.16-13.RHEL3.i386.rpm
rpm-4.2.2-0.14.i386.rpm

这里提示有很多冲突,不过这没关系,认真看Suggested resolutions,如果某个软件包确实安装了原来系统默认版本,比如bind和rpm,却提示needed,那么一定是U3对这组软件包结构做了新 的修改。如果系统没有被依赖的软件包,那么可以肯定这个软件包是U3新添的,比如booty。

我升级了mysql到4.0.x,mailserver使用的是qmail,所以会有smtpdaemon和libmysqlclient的依赖问题。可 以先把存在依赖问题的包mdadm和php-mysql删除,待系统升级成功之后再重新安装。其它的deps都是因为RPM包重组造成的(AS3U3新加 了rpm-libs和bind-libs)。

删除真正存在冲突的软件包(我这里只有这两个包)
[root@ns RPMS]# rpm -e mdadm
[root@ns RPMS]# rpm -e php-mysql

4 安装预需求RPM

升级rpm包管理工具(U3系统新加了rpm-libs-4.2.3-10.i386.rpm)
[root@ns RPMS]# rpm -Uhv rpm-libs-4.2.3-10.i386.rpm rpm-4.2.3-10.i386.rpm rpm-python-4.2.3-10.i386.rpm rpm-build-4.2.3-10.i386.rpm rpm-devel-4.2.3-10.i386.rpm

安装booty(U3系统新加软件包):
[root@ns RPMS]# rpm -Uhv booty-0.31.1-1.i386.rpm

升级bind(U3系统新加了bind-libs-9.2.4-EL3_10.i386.rpm),
[root@ns RPMS]# rpm -Uhv bind-9.2.4-EL3_10.i386.rpm bind-utils-9.2.4-EL3_10.i386.rpm bind-libs-9.2.4-EL3_10.i386.rpm


在此之后可以重新运行rpm -Fvh *rpm 测试,如果没有新的依赖问题,就会直接进入下一步


5 升级系统

运行rpm升级整个系统
[root@ns RPMS]# rpm -Fvh *rpm

需要等待比较长的一段时间(一个完全安装的系统升级,约180个包,大概要15分钟,其中很多时间用来运行ldconfig),不过和重新安装配置系统相比,这点时间还是很短的。


6 重新安装前面临时删除的rpm包:

[root@ns RPMS]# rpm -ihv --nodeps mdadm-1.5.0-9.i386.rpm
[root@ns RPMS]# rpm -ihv --nodeps php-mysql-4.3.2-14.ent.i386.rpm


7 安装新内核

重新连接内核包到RPMS目录:
[root@ns RPMS]# ln -s ../cd1/RedHat/RPMS/kernel*rpm .
[root@ns RPMS]# ln -s ../cd2/RedHat/RPMS/kernel*rpm .
[root@ns RPMS]# ln -s ../cd3/RedHat/RPMS/kernel*rpm .
[root@ns RPMS]# ln -s ../cd4/RedHat/RPMS/kernel*rpm .

安装新内核:
[root@ns RPMS]# rpm -ihv kernel-2.4.21-20.EL.i686.rpm kernel-unsupported-2.4.21-20.EL.i686.rpm kernel-smp-2.4.21-20.EL.i686.rpm kernel-smp-unsupported-2.4.21-20.EL.i686.rpm

如果系统安装了内核源码:
[root@ns RPMS]# rpm -Uhv kernel-source-2.4.21-20.EL.i386.rpm


8 OK,完工。现在cat /etc/issue应该显示

[root@ns RPMS]# cat /etc/issue
Red Hat Enterprise Linux AS release 3 (Taroon Update 3)
Kernel r on an m


重新启动!!!!
--------------------next---------------------

阅读(700) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~