今天,为了测试一下阿里拼音,很难得地进了一次ubuntu,后来发现居然还是9.10的版本,看不下去了,就顺手升级了一下。
本以为这种升级历史上已经做过很多次,应该不会有什么问题的,但是今天还是遇到问题了,就在这里记一下吧。
我升级的思路比较老土,就是先
sudo sed 's/karmic/lucid/g' -i /etc/apt/sources.list再apt-get update,再一直交替进行upgrade和dist-upgrade,直到完全没有错误,再重启。如果中间遇到某个包有问题,一般是先卸载这个包,升级完成以后再给安装上就好了。
但是今天遇到一个无法先卸载的包,到某步的时候,出来这样一个错误:
E: Could not perform immediate configuration on ‘util-linux’.Please see man 5 apt.conf under APT::Immediate-Configure for details. (2)
很明显,这个是 util-linux 包出问题了,但是这个包太底层了,如果卸了这个,整个ubuntu就差不多没了,我可不敢保证我还能给折腾回去。
解决问题的思路:
先试着手工dpkg安装这个包:
sudo dpkg -i /var/cache/apt/archives/util-linux_2.17.2-0ubuntu1_i386.deb
dpkg:对于含 util-linux 的文件 .../util-linux_2.17.2-0ubuntu1_i386.deb 来说,有预依赖(pre-dependency)方面的问题:
util-linux 预依赖于 libc6 (>= 2.11)
已安装了 libc6,不过安装的版本是 2.10.1-0ubuntu17。
dpkg:处理 /var/cache/apt/archives/util-linux_2.17.2-0ubuntu1_i386.deb (--install)时出错:
预依赖(pre-dependency)问题 - 将不安装util-linux
在处理时有错误发生:
/var/cache/apt/archives/util-linux_2.17.2-0ubuntu1_i386.deb看来其实是libc6这个包版本有问题,于是查到这个包及其依赖包的deb,手动下载并安装:
wget http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc6_2.11.1-0ubuntu7.2_i386.deb
wget http://security.ubuntu.com/ubuntu/pool/main/e/eglibc/libc-bin_2.11.1-0ubuntu7.2_i386.deb
sudo dpkg -i libc6_2.11.1-0ubuntu7.2_i386.deb libc-bin_2.11.1-0ubuntu7.2_i386.deb这样成功以后,就比较好办了,虽然直接dist-upgrade仍然不行,但是执行
sudo apt-get dist-upgrade -f就可以成功解决此问题了。
现在分析看来应该是由于我的sources.list里面没有security部分造成的,如果在里加上
deb http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse
deb-src http://security.ubuntu.com/ubuntu lucid-security main restricted universe multiverse
应该就不会错了吧~
都说ubuntu的大版本升级比较折腾,看来还真是,呵呵。幸好咱也算老手了,不然遇到这种问题,还不被整成重装啊?