Ubuntu从源升级的一点心得

使用Ubuntu,从5.10 Breezy到6.06 Dapper, 6.10 Edgy, 7.04 Feisty一路走来,每次都是直接从源升级,因为update-manager对我来说太慢了,算是有了一点点经验吧,不成系统,仅供参考。

速度与耐心

升级的下载速度和处理速度都要耗费大量时间,最好有一个快点的源,关掉其他任务,以提高效率。

vi /etc/apt/source.list
sudo aptitude update
sudo aptitude upgrade
sudo aptitude install
sudo aptitude dist-upgrade

aptitude带上install, upgrade, dist-upgrade要多运行几遍,确认确实没有问题了再重启,有的时候第一次运行未必就能把所有软件更新到最新。

另外aptitude和apt-get可以来回混着用用,这两个软件看似相似,又似乎有一些不太一样的地方,有时候这个卡住了,用那个就可以继续。

一般认为aptitude比apt-get能够更好的解决包依赖性问题,不过有的时候我们的确需要绕过依赖关系,这时候用哪个就自己尝试喽。

老大难的Python

Ubuntu中最难升级的不是内核(别人都编译好了的嘛),而是Python,每次升级都会遇到和Python相关的一大堆依赖性问题,处理方式主要有两种:

  • 通过aptitude install指定安装部分python包,这样依赖性关系更好解决一些,处理完一部分,再处理另外一部分就轻松些了。
  • aptitude提示删除的时候要小心一些,如果是正常删除旧包用新的替代还好,有时候遇到难解决的问题经常让你删了xserver或者ubuntu-desktop什么的,一般不要同意。
  • python版本升级会带来更大的灾难,实在没办法的时候可以考虑修改/usr/bin/python,这个文件是一个链接文件,如果他是指向python2.5,那么就修改为python2.4试试,反正升级完成之后再修改回来,有的时候包升级的顺序不同,会导致青黄不接的情况,需要把python暂时降级。

配置文件尽量单独保存

这样在升级的时候不容易被覆盖,同时把自己的个性设置和系统默认设置分开,管理起来更方便。

及时删除不用的内核版本

本身不影响使用,就是升级的时候影响处理速度,反正也没用了,干嘛不删,注意当前正在使用的内核版本不要删除。

敢于拔掉钉子户

有些包有着乱绕或者互锁的依赖性关系,无法处理的时候不妨删除一个试试,不过最好记下来包的名字方便以后查找问题,另外一些关键的包比如apt, aptitude, dpkg, tar, zip什么的千万别删。

不要傻等

如果出现:

Resolving dependencies...
Open:5953; closed: 4999; defer: 0; conflict: 11
No solution found within the allotted time.  Try harder? [Y/n]

这样的文字,提示在指定的时间内没有找到解决依赖性问题的方案时,趁早用其他的方式吧,如果你回答Y,不仅要不厌其烦的等待下一次提示,而且找到天亮也找不出方案来。

零敲碎打

永远不要太着急,装上一个是一个,更新一个是一个,问题需要一个一个的解决。

最好还能有另外一台能用的电脑,这样即方便查一些包的资料,还能打发升级中的空闲时间。:)

学会“忘记”

有时候走进依赖陷阱之后,动弹不得,安也不让,卸也不让,实在没法作什么了,试试:

cd /var/lib/dpkg
mv status status.bak
touch status

然后再继续upgrade什么的,系统就会忘记以前已经成为死套的依赖性问题,重新开始计算了。不过此招慎用,文件删除之后,系统要把所有已经安装过的程序全部都configure一遍,极其耗时。

其实真正起作用的,是这个文件中和结成死套的那几个包相关的内容,用vi编辑,把那几个包的内容删除就可以了,注意备份!

7 thoughts on “Ubuntu从源升级的一点心得”

    1. 暂时还没有,工作比较忙。 最好看看别人升级的体会再升, 大的方面应该没问题,但因为一些细节耽误使用还是比较麻烦的。

Leave a Reply

Your email address will not be published. Required fields are marked *