前几天(FC4发布那天)一不小心趁着热乎用BT把FC4的ISO下载回来了,到安装的时候突然觉得还是升级FC3到FC4比较适合我这个懒人,毕竟计算机里面已经配置好了无穷多的程序了。升级安装有两种方案:光盘启动升级和通过apt/yum升级,这两种方案以前都用过,基本都没什么大问题,考虑到我的服务器没有显示器,制作了安装光盘也要临时挪一个显示器过去,安装过程需要半小时,这半小时(网关)服务器就无法工作了,所以还是yum升级比较方便。用yum 升级的关键是如何节省下载时间,用过debian的人估计都知道,一个unstable的debian过一两个月做一次 apt-get (dist-)upgrade一般就要下载几百兆的王文件,这可不是个好主意,我现在已经下载了ISO文件,是不是就可以不用下载升级文件了?
下面就是远程登陆服务器通过yum升级FC3到FC4的方法
0 root ssh登陆到服务器
1 准备活动,首先参考 http://fedoraproject.org/wiki/YumUpgradeFaq
首先保证FC3的yum是******版本:
$yum update yum
下载FC4的fedora-release:
$wget http://yourmirrorhere/pub/fedora/linux/core/4/$yourarch/os/Fedora/RPMS/fedora-release-4-2.noarch.rpm
$rpm -Uvh /path/to/fedora-release-4-2.noarch.rpm
2 准备安装文件
copy ISO文件到服务器的一个目录,$ISO
cd $ISO
$mkdir cd1
$mkdir cd2
$mkdir cd3
$mkdir cd4
$mount -t iso9660 -o loop,ro FC4-i386-disc1.iso cd1
$mount -t iso9660 -o loop,ro FC4-i386-disc2.iso cd2
$mount -t iso9660 -o loop,ro FC4-i386-disc3.iso cd3
$mount -t iso9660 -o loop,ro FC4-i386-disc4.iso cd4
#下面过程是让yum直接利用ISO文件的关键
$cd /var/cache/yum/base/packages
ln -s $ISO/cd1/Fedora/RPMS/*.rpm .
ln -s $ISO/cd2/Fedora/RPMS/*.rpm .
ln -s $ISO/cd3/Fedora/RPMS/*.rpm .
ln -s $ISO/cd4/Fedora/RPMS/*.rpm .
3 运行yum update测试系统软件包以及要下载的程序大小
由于yum需要计算系统软件包的相互依赖关系,这一步可能需要比较长的时间(和用光盘升级走到这一步等待的时间差不多,可以忍受)
如果yum运行到***后提示 xxxxx is needed by yyyyy, 直接运行rpm -e yyyy。这一步操作是没有问题的,即使yyyy软件包是以后需要的,再次运行yum的过程中yyyy一般都会被自动安装好。我升级过程中只有 kernel-utils和几个KDE相关的包出现了依赖错误,其它的都很顺利。
这一步******的问题是yum会检测到kernel-utils is needed by kernel(FC4里面已经没有kernel-utils这个包了),而显然kernel是不能直接删除的(按道理如果不重新启动计算机也可以直接删除kernel rpm,不过没有试过,喜欢冒险的可以试一次)。解决办法:
首先找到FC4安装盘上面的kernel rpm(在/var/cache/yum/base/packages下面),
$rpm -ihv kernel-2.6.11-1.1369_FC4.i686.rpm
用新kernel重新启动计算机,重复上面第二步和第三步,然后rpm -e 删除FC3的kernel和kernel-utils
这时如果不再存在依赖问题了,yum就会提示你输入一个y,进行下一步升级。升级过程需要时间,不过在此过程中服务器还是一直在工作的,上面运行的服务也都一直保持有效。全部升级完成之后再重新启动一次,重启也许都不需要了,因为这时已经在运行FC4的kernel了,其它程序和库的升级不需要重启。