手工升级 Ubuntu Dapper Server 到 Hardy

我的博客学习日记这两年一直都是架在一台赛扬 1.3G + Ubuntu Dapper (6.06)的服务器上,因为安装更新一个程序才发现所有源取消了(试了官方和mirrors.163.com 的),dapper server 的安全更新支持于前一段时间结束(服务器版本5年)。所以将其升级为 Ubuntu Hardy (8.04)。下面记录一些关键之处。
本来,官方的方法是安装专用的升级程序就可以直接顺利升级("sudo do-release-upgrade"),见:Network Upgrade from 6.06 for Ubuntu Servers (Recommended) ,但是因为源已经取消了,单独下载升级程序可能要解决一系列的包依赖问题比较麻烦,所以我进行手工的升级。

先把整个硬盘里的数据备份,如:

tar -cpjf bak.tar.bz2 --exclude=/proc --exclude=/lost+found \
--exclude=/mnt --exclude=/media --exclude=/dev/pts --exclude=/dev/shm \
--exclude=/sys --exclude=/var/cache/eaccelerator /

并把备份的文件复制到安全的地方并检查备份文件的正确性和完整性。

把源( /etc/apt/sources.list )修改成 Hardy 的,我这里使用的源是 .mirrors.163.com 的。执行 "sudo apt-get update",再执行"sudo apt-get dist-upgrade",后来一度出错,提示执行“sudo apt-get -f dist-upgrade”,照做。主要碰到了2个问题。

unifont 软件包好像有冲突,卸载不掉旧的,安装不了新的。解决方法是手工删除相关文件(用 dpkg -S unifont 查找),然后去掉安装信息里的条目(find /var/backups/* | xargs grep unifont 查找,我这里有 aptitude.pkgstates.0 , dpkg.status.0 ,注:不能确定这一步的必要性,反正做了,想法是我把系统里与 unifont 相关的东西都去掉了,你总不会再报错吧?)。然后直接安装 hardy 的版本就行了。这时也应该可以卸载了。

软件包越多,问题出现的可能越多,把 xserver-xorg, x11-common 等等图形界面相关的软件包统统卸载掉了。

如果升级过程中碰到有冲突的软件,先用 sudo dpkg -r 卸载掉,甚至使用强制卸载“sudo dpkg -r --force-all”。如果需要再直接“sudo apt-get install”安装 hardy 的新版本。

升级完毕后重新启动发现好像在加载硬盘分区的过程中卡住了,显示什么 “/dev/mapper”之类的出错信息,手工在 grub 菜单中指定 root=/dev/hda1 (IDE老硬盘,原来指定的根分区用的是 uuid,hardy 实际上为sda1,但在这一步竟然启动到了控制台,运气好 🙂 )。在控制台中发现原来是启动了 evms 的服务,将这个服务用 sudo chmod -x evms 禁止掉,好像还卸载了相关的 lvm2 软件。没有修改其它什么,系统就能正常启动了。

运气不错,其它所有的服务器配置都没有任何改动,甚至包括我原来在 dapper 下手工编译安装的 Nginx + PHP5-CGI也工作正常。至此手工从 Ubuntu Dapper Server 升级到 Hardy Server 成功。也许又能用这个老机器对付两年而不用升级系统了 🙂

如果有人要效仿,再提醒一句,行动之前整个硬盘数据作一个备份!另外,也许用前面提到的官方自动升级的方法Network Upgrade from 6.06 for Ubuntu Servers (Recommended) ,像我这样的情况,先手动下载安装自动升级程序及其依赖软件包,再用自动升级程序进行升级也许是一种更稳妥的方法。

2 thoughts on “手工升级 Ubuntu Dapper Server 到 Hardy”

Comments are closed.