如何从sarge升级到etch
这两天做sarge到etch的升级,参考了官方的release note,
结合自己的实践写下本文,以便日后查询之用。
Debian官方建议使用aptitude来管理包,所以下面的操作均
以aptitude为例,需要说明的是一旦用了aptitude,就不要
再混用apt-get。
本文假定用户没有安装X windows系统,毕竟Debian更适合于
做服务器,桌面还是用Ubuntu吧。
1. 备份
将系统中重要的系统文件做备份,一般是配置文件、数据库等
# tar -cvf /home/backup/etc.bak /etc/*
2. 准备升级环境
升级的过程中会重启一些服务,所以千万不要通过telnet、
ssh远程连接方式进行升级,最好在本机的终端窗口下操作
(不要在X windows),或者通过modem的serial口远程登录。
(这跟telnet、ssh的远程连接有所区别,cisco等网络设备
经常会用到这种方式)
3. 检查系统软件包状态
系统中如果有软件包处于hold状态,则在升级过程中可能
失败,最好手工将他们设为unhold
# aptitude search "~ahold" | grep "^.h"
# aptitude unhold pkg_name
如果sarge系统中使用了非官方的软件包,例如backports,
最好先将他们全部卸载,否则升级过程中会引起冲突。
{: class=“warning” }
4. 更改source.list
# vi /etc/apt/source.list
--------8<----------
# deb http://debian.cn99.com/debian sarge main contrib non-free
deb http://debian.cn99.com/debian etch main contrib non-free
# deb-src http://debian.cn99.com/debian sarge main contrib non-free
deb-src http://debian.cn99.com/debian etch main contrib non-free
--------8<----------
中国一般用cn99源,速度比较快,只需要将sarge改为etch就可以了。
5. 更新软件包列表
# aptitude update
6. 确认具有足够的硬盘空间
在升级的过程中需要占用一些临时的磁盘空间,所以要确认是否还有足够的剩余空间
# aptitude -y -s -f --with-recommends dist-upgrade
[ ... ]
XXX upgraded, XXX newly installed, XXX to remove and XXX not upgraded.
Need to get xx.xMB/yyyMB of archives. After unpacking AAAMB will be used.
Would download/install/remove packages.
如果不能满足请删除一些文件,例如aptitude clean或者删除/var/log
7. 升级
sarge和etch之间有不少软件包是有冲突的,直接使用aptitude dist-upgrade
会卸载掉sarge系统里的软件包,而有些软件包是
你想保留的,为了尽量避免这种情况发生,需要做阶段性升级,分三个步骤:
7.1 最小化升级:
# aptitude upgrade
这样就只是更新的软件而不会删除其他东西。
# aptitude install initrd-tools
这将会自动升级libc6和locale,这个时候会重启某些服务。
7.2 升级内核
在做下一步操作之前强烈建议手工升级内核,Etch引进的udev技术已经无法支持比2.6.15旧的内核,而Debian Etch的软件仓库中的内核版本则是2.6.18。我们安装它就可以了。
先确认一下你目前的内核版本
# uname -r
# aptitude search linux-image-2.6*
# aptitude install linux-image-2.6-686
这样就可以安装2.6.18的内核了。
7.3 全面升级
# aptitude dist-upgrade
这将会对sarge进行完全的更新,时间大约半个小时,比我预料中要快很多。
8. 更新软件包的签名信息
Etch的软件包关系系统引入了签名功能,简言之,没有经过Debian官方
签署的软件包无法在etch系统上安装,你当然也可以通过更改/etc/apt/
来取消这个限制。
# aptitude update
至此,您的操作系统就更新完毕了,整个过程不需要重启,这对服务器而言无疑是非常贴心的一项设计。