如何从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

至此,您的操作系统就更新完毕了,整个过程不需要重启,这对服务器而言无疑是非常贴心的一项设计。