2008-08-25

ubunut 8.04升级笔记

8.04已经发布很长时间了,我的系统还是7.04,最近时间充裕,于是决定升级。

据说使用命令apt-get install dist-upgrade升级,会存在解决不了的依赖性问题,保险起见,使用图形界面的升级程序。

从7.04升级到7.10过程很顺利,速度也很快。简单测试了一下,scim、kaffeine都运行正常,于是继续从7.10升级到8.04。

都是cn99的源,但从7.10到8.04的过程却非常慢,从六点开始,到十点更新数据包还没下载完,只能把电脑留在实验室,明天再来看了。第二天过来,却发现更新过程卡住了

During the step “Setting up locales (2.7.9-4) …” I get the following message:

Generating locales…
en_AU.UTF-8…

top显示,有一个localedef进程占用了99%的CPU,而且已经运行了六个多小时,多半是死掉了。这个时候正是升级过程中最关键的安装阶段,如果直接重启,升级失败,后面就麻烦了。考虑了一下,大不了跳过这个步骤,把其他包装完,以后再解决这个问题。

sudo killall -9 localedef

没反应……,看进程状态,是R+,没道理杀不掉,但重试n遍,屡试无果。

pstree,找到localedef的父进程为locale-gen,

sudo killall -9 locale-gen

成功杀死,localedef进程还是存在,但是升级已经可以往下走。 在后面的过程中还会出现这样的情况,不必理会,直接kill。有一些包会由于依赖性安装失败,诸如sun jdk,但基本的组件可以顺利安装,完成后,重启系统。

重启完后,四处google,发现这已经是一个登录在册的bug,ID号为249340。最简单的解决方法如下:

找到/etc/belocs/locale-gen.conf,将其中的ARCHIVE值从no改为yes,然后

sudo apt-get install update

便可顺利的重新生成locale,并且把升级过程中由于依赖性未安装的包重新装上。

–EOF–