使用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编辑,把那几个包的内容删除就可以了,注意备份!
您真强,我反正每次都是全新安装的,因为当初从5.04到5.10时吃了个大亏
只是喜欢钻牛角尖而已,有些情况下浪费的时间比重装多多了。:)
upgrade要看运气的。。。
老大,不用再另找一台电脑吧,难到你们家一台电脑一根ADSL?
另外一台电脑只是用来打发升级过程中的等待时间而已。
打算从10.10升级到11.04,不知道你尝试过没有
暂时还没有,工作比较忙。 最好看看别人升级的体会再升, 大的方面应该没问题,但因为一些细节耽误使用还是比较麻烦的。