[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ 下一页 ]


Debian GNU/Linux 3.1 ('sarge'), Intel x86发布说明
第 4 章 - 从旧发行版升级


4.1 准备升级

在升级之前,强烈建议您完整备份系统或至少备份重要数据和配置文件。升级工具和进程非常可靠,但是在安装过程中的硬件错误会导致系统严重损坏。

您需要备份的主要部份是/etc和/var/lib/dpkg中的内容以及dpkg --get-selections "*"(此处双引号不可忽略)的输出信息。

升级过程并会修改/home目录中的文件。不过,一些应用程序(比如Mozilla,某些KDE程序)会在第一次执行时用新的默认设置覆盖用户配置文件。作为预防措施,您可以把home目录中以句点开头的隐藏文件备份起来,以便恢复原来的设置。同时,通知其它用户这一问题。

虽然通过SSH访问您系统的用户不会在升级过程中注意到太多,他们也可能想继续工作,但是,在升级之前通知所有用户是明智的。如果要采取进一步预防措施,可以在升级之前备份或反挂载用户分区(/home)。重新启动并不是必须的,除非您要把内核一并升级。

全面的升级应在文本模式的虚拟控制台(或直连的串行终端)运行,或者远程地通过SSH运行。

重要提示!不要使用telnet、rlogin、rsh或在要升级的计算机上由xdm、gdm、kdm管理的X会话进行升级。因为它们很可能在升级时被终止,那将造成一个因未完全升级而无法访问的系统。

任何软件包安装操作都必须在超级用户权限下运行,所以要以root身份登录或用su/sudo来取得必需的访问权限。


4.2 检查系统状态

在本章描述的升级过程是专门针对“纯”的woody系统。在此假定您的系统已经是最新版的woody。如果不是这样或您不清楚,请按升级woody系统, 第 A.1 节操作。

同时我们假定您装有woody的aptitude。您可以用

     $ dpkg -l aptitude

来检查。 如果输出行以"i"开头,您应在升级之前遵照安装woody的aptitude, 第 A.2 节来安装它。


4.2.1 禁用APT pinning(APT的一种用于安装特定版本软件包的功能——译者)

如果您配置了APT来安装非stable的特定软件包(例如从testing),您应当改变APT pinning设置(在/etc/apt/preferences)。可在apt_preferences(5)中找到APT pinning的详细信息。


4.2.2 检查软件包状态

不管用什么方法升级,建议您先检查所有软件包的状态,确认所有软件包都处在可升级状态。以下命令会显示任何错误状态,特别是安装不全或配置失败的软件包。

     # dpkg --audit

您也可以使用dselectaptitude或用命令

     # dpkg -l | pager

     # dpkg --get-selections > ~/curr-pkgs.txt

来检查您系统所有软件包的状态。

在升级前移除任何hold(APT对软件的一种标记,它告诉APT不要自动替换这一软件包——译者)很必要。如果任何升级用的基本软件包处于hold状态,升级就会失败。您可以用

     # dpkg --get-selections | grep hold

检查处于hold状态的软件包。

如果您在本机修改并编译了一个软件包,且没有重命名或在版本号中加入epoch(软件包中自定义的版本号——译者),您必须把它置为hold状态来防止它被更新。 'hold'软件包状态可以用aptitude修改:

     # aptitude hold | unhold <package name>

如果需要修复,最好保证sources.list仍然指向 woody,正像在检查源列表, 第 A.3 节中解释的那样。


4.2.3 非官方源与backports(backports为Debian提供 不需要非Stable链接库就可在Stable版运行的新软件包,有效地弥补了Debian Stable版软件较旧的缺点--译者)

如果您在系统上使用非Debian软件包,请注意这些包可能在升级过程中由于包冲突而被删除。如果这些包是通过在/etc/apt/sources.list中加入非官方源安装的,您应检查这一非官方源是否提供为sarge编译的软件包,然后根据实际情况修改相应的行。

一些用户在woody中使用非官方backport的较“新”软件包。这些包非常容易在升级中出错,因为它们很可能导致包冲突。[1]升级过程中可能出现的问题, 第 4.5.5 节提供如何处理包冲突的办法。


4.3 检查内核支持

sarge不再支持80386处理器,但这不影响它对80486以上处理器的支持。


4.4 准备APT源

在升级之前,您必须在/etc/apt/sources.list中配置apt来生成软件包列表。

apt会以行先后顺序为优先级分析可通过"deb"行找到的所有软件包,然后安装具有最高版本号软件包。(这样,在具有许多镜像地址时,一般地,应先写入本地硬盘,然后CD-ROM,再然后HTTP/FTP镜像)

一个发行版经常既可以由代号(如woody、sarge)也可由状态名(如oldstable、stable、testing、unstable)表示。用代号可使您不会对一个新发行版感到陌生,因此在本说明中我们使用代号。这当然意味着您自己必须关注新版的发行。如果使用状态名,您只会在新版发行时发现可升级的包。


4.4.1 添加Internet APT源

默认设置是从主Debian Internet服务器安装,但是您也可以修改/etc/apt/sources.list 来使用其它镜像,特别是网络上与您最近的镜像。

Debian HTTP或FTP镜像地址可在http://www.debian.org/distrib/ftplist 找到(查看"Full list of mirrors"部分)。HTTP服务器总体上比FTP服务器快。

例如,假设最近的镜像是http://mirrors.kernel.org/debian/当用浏览器或FTP工具访问它时,您会注意到主要目录是这样组织的:

     http://mirrors.kernel.org/debian/dists/sarge/main/binary-i386/...
     http://mirrors.kernel.org/debian/dists/sarge/contrib/binary-i386/...

为了让apt使用这一镜像,在sources.list中加入这一行:

     deb http://mirrors.kernel.org/debian sarge main contrib

注意'dists'被自动隐含地添加了,且在发行版名称之后的参数被用来把安装路径扩展到不同目录中。

添加了新APT源之后,用井号(#)添在行前以把 sources.list中已有的"deb"行禁用。

所有从网上下载的软件包都被储存在/var/cache/apt/archives(以及在下载进程中的partial/),所以在开始安装之前您必须确保有足够的空间。对于一个适当扩展的Debian安装,至少要有300MB的下载数据。


4.4.2 添加本地APT源

您可以修改/etc/apt/sources.list来使用本地驱动器(可能是挂载的NFS分区)上的镜像。

例如,您的镜像在/var/ftp/debian/,它有这样的主目录:

     /var/ftp/debian/dists/stable/main/binary-i386/...
     /var/ftp/debian/dists/stable/contrib/binary-i386/...

要让apt使用它,在sources.list中加入这一行:

     deb file:/var/ftp/debian sarge main contrib

注意`dists' 被自动隐含地添加了,且在发行版名称之后的参数被用来把安装路径扩展到不同目录中。

添加了新APT源之后,用井号 (#)添在行前以把 sources.list中已有的"deb"行禁用。


4.4.3 添加CD-ROM或DVD APT源

如果只想使用CD-ROM,那就把sources.list中已有的deb" 行用"#"注释掉。

确保/etc/fstab中有允许在/cdrom挂载CD-ROM的一行(apt-cdrom需要使用/cdrom挂载点)。例如,如果/dev/hdc是您的CD-ROM驱动器,/etc/fstab应包含这样一行:

     /dev/hdc /cdrom auto defaults,noauto,ro 0 0

注意在第四部分的”defaults,noauto,ro”中,词之间不能有任何空格。

要确认它有效,插入一张CD:

     # mount /cdrom   # 挂载CD-ROM
     # ls -alF /cdrom # 显示CD根目录
     # umount /cdrom  # 卸载CD-ROM

下一步,对于您拥有的每一张Debian Binary CD-ROM运行

     # apt-cdrom add

来向APT的数据库添加每一CD的信息。


4.5 升级软件包

建议使用aptitude来全面升级系统。这一工具会做出比直接执行apt-get更安全的升级决定。

不要忘记以读写模式挂载所有分区(一般是root和/usr分区):

     # mount -o remount,rw /mountpoint

下一步确保APT源(/etc/apt/sources.list)指向"sarge"或"stable"。注意:CD-ROM经常被表示为"unstable";虽然这令人迷惑,但不要修改它。

强烈建议您使用/usr/bin/script程序来记录一个升级过程的信息副本。这样如果出现问题,您就有一个日志来验看发生了什么,而且如果需要的话,这可以提供bug报告的确切信息。输入:

     # script -a ~/upgrade-to-sarge.typescript

或类似的命令来开始记录。不要把记录文件放在临时目录中,如/tmp/var/tmp(在这些目录中的文件会在升级或重启动过程中被删除)。

typescript允许您浏览已经滚过屏幕的提示信息。只要转到VT2(Virtual Terminal 2--译者)(使用alt-F2),登录以后,用less ~/upgrade-to-sarge.typescript查看。

升级完成之后,您可以输入exit命令来结束script


4.5.1 更新包列表

首先需要取得新发行版的软件包列表:[2]

     # apt-get update

4.5.2 升级aptitude

升级测试表明sarge的aptitude在解决复杂依赖关系时比apt-get或woody的aptitude更出色。 所以首先应升级它:

     # aptitude install aptitude

您会看到一些关于将要进行的修改的提示信息,并被问到是否确认。在确认之前,您应仔细查看要进行的更改,特别是在升级过程中即将被删除的包。

某些时候,如果很多软件包被列出来准备删除,您可用aptitude事先升级某些软件来缓解这种情况。举一个例子:当对装有KDE的系统进行检查时,我们会注意到这一过程会删除很多KDE和perl包。这时可以先把perl连同aptitude一起升级来解决。


4.5.3 升级doc-base

如果装有doc-base,它也必须在系统升级之前被更新。原因是它会在perl升级时出错。您可以用

     # dpkg -l doc-base

检查它是否已安装。如果输出行以'i'开头表明它已安装,此时必须在进一步工作之前升级它:

     # aptitude install doc-base

4.5.4 升级系统的其它部分

您现在已经一切就绪来进行升级的主要部分,运行

     # aptitude -f --with-recommends dist-upgrade

将进行完整的系统升级,也就是说,安装所有最新版本的软件包并解决所有可能的包依赖关系变化问题。如果必要,它会安装一些新软件包(通常是新的链接库,或改名的软件包),移除任何有冲突的旧包(如console-tools-libs)。

当从一组CD-ROM升级时,您会被要求在特定时期插入特定CD。可能必须多次插入同一CD,这取决于分布于CD中的软件包内部关系。

只有改变其它包状态才能被更新的软件包会被保留为当前版本(显示为'held back'状态)。这可以通过使用aptitude来选择这些包来安装或输入aptitude -f install package来解决。

--fix-broken (或只是-f)设置项使 apt尝试修复系统中的依赖性错误。apt不允许系统中存在未满足的包依赖关系。


4.5.5 升级过程中可能出现的问题

如果在使用aptitudeapt-getdpkg时出现如下错误

     E: Dynamic MMap ran out of room

那是因为默认的缓冲区太小。解决办法有二:移除/etc/apt/sources.list中的多余行,增大缓冲区。缓冲区大小可通过/etc/apt/apt.conf中的APT::Cache-Limit设定。假设现有/etc/apt/apt.conf中未设定这一变量,可以这样做:

     # echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf

启用APT::Force-LoopBreak设置来临时移除在Conflicts/Pre-Depends(A Conflicts B表示A、B不能同时被安装,A Pre-Depends B表示安装A之前必须安装B——译者)循环中的一个基本软件包有时很必要。aptitude将警告您这种情况并终止升级。您可以通过在aptitude命令行中加入-o APT::Force-LoopBreak=1设置来实现。

很有可能的是,系统依赖性结构会非常混乱而需要手动干预。通常这要使用aptitude

     # dpkg --remove packagename

来去除这些不友好的软件包,或者

     # aptitude --fix-broken install
     # dpkg --configure --pending

在极端情况下您可能要用

     # dpkg --install /path/to/packagename.deb

强行重新安装。

如果从"纯"woody升级,包冲突问题不会出现,但若使用非官方 backport包则会出现该问题。包冲突会造成如下错误:

     Unpacking replacement <package-foo> ...
     dpkg: error processing <package-name-for-foo> (--unpack):
      trying to overwrite `<some-file-name>',
      which is also in package <package-bar>

您可以强行删除出错信息最后一行的软件包:

     # dpkg -r --force-depends packagename

修好之后,您应可以通过上面提到的aptitude命令方法恢复升级过程。

在升级过程中,您会被问一些问题来配置或重新配置部分软件包。如果您被问到任何在/etc/init.d/etc/terminfo目录中的文件,或/etc/manpath.config文件是否应被包维护者的文件替代时,通常回答'yes'很必要。您可以在任意时候转回旧的文件,因为它们会被标以 .dpkg-old扩展名储存。

如果您不知道应该做什么,记下软件包或者文件的名字,再在升级后解决这些问题。您可以搜索日志文件来复查升级过程中显示的屏幕信息。


4.6 重启前的任务

aptitude dist-upgrade完成时,“前期”升级就已经结束了,但是在重启之前还有许多其它事情要做。

阅读/usr/share/doc/xfree86-common/README.Debian-upgrade.gz来获取X视窗系统的详细系统升级信息。它与所有的先前Debian发行版用户相关。简短地讲,您需要阅读它!


4.6.1 升级内核

注意在这些步骤中Linux内核没有被更新。您应该自己去做,通过安装kernel-image-* 软件包或者通过从原代码编译自定的内核。

Debian GNU/Linux带有稳定的旧Linux 2.4系列中的2.4.27内核。为了实现更好的硬件支持或更高的性能,您可以使用2.6系列的内核。

但是,不要把升级到2.6内核看作从woody升级的一部分。关于升级到2.6内核的问题可在升级到2.6内核, 第 5.2 节中找到。

为升级内核,您必须尽量选择适合您计算机的内核。可以用

     # apt-cache search ^kernel-image

来获取您可以使用的内核列表。

然后您应该使用aptitude install来安装它。一旦新内核被安装,您应该重启来使用它,享受它的新功能。

请注意woody(及以前的发行版)不以软件包的形式安装内核。在sarge中有所改变,您可以安装虚拟软件包来跟踪内核变化。这些软件包被命名为kernel-image-VERSION-ARCHVERSION与内核版本(2.4或2.6)对应,ARCH与可用的系统架构对应。如果您想给包管理的内核使用安全支持(Debian针对系统安全提供的即时升级--译者),请安装最适合您系统的内核软件包。

如果要更刺激,有一种简单的方法来编译您自己定制的内核。安装kernel-package工具然后阅读/usr/share/doc/kernel-package中的文档。


4.7 废弃的软件包

sarge不但新引入了几千个新软件包,也废弃了200多个在woody中的旧软件包。它不为这些废弃软件包提供升级补丁。不过这不影响您在必要时继续使用废弃的软件包,Debian项目通常在sarge发布一年后停止对它们的安全支持[3],而且这期间不会提供其它支持。如果可以的话,就应把它们换为的替代软件。

软件包被移去有很多原因:不再被上游开发者维护或没有Debian开发者(即DD--译者)愿意维护;功能被其它软件或新版本更好地取代;错误太严重。在最后一个原因中,软件包很可能还属于unstable。

包管理软件会标注出来哪些软件包被废弃,查看这方面信息十分容易。如果用aptitude,您会在"Obsolete and Locally Created Packages"部分见到这些软件包的列表。dselect提供一个类似的列表,不过可能有些差异。另外,如果您使用aptitude手动安装了woody中的软件包,它会记录您手动安装的包并且在包被删除时把由于依赖关系而被安装的包标记为废弃。而且,不像deborphanaptitude不会把您手动安装的包标记为废弃,这不同于由于依赖关系而被自动安装的包。

有许多寻找废弃软件包的附加工具,比如deborphandebfostercruft。 推荐使用deborphan,虽然它只报告"libs"和"oldlibs"中的废弃链接库。不要随意删除这些工具显示的软件包,特别是当您使用冒犯性的非默认设置时,它们很容易造成假象。推荐在删除之前仔细查看包的信息(内容,大小和描述)。

Debian错误跟踪系统经常提供包被移除的原因。您应阅读软件本身的bug报告和ftp.debian.org pseudo-package的bug报告。


4.7.1 Dummy包

一些woody中的软件包在sarge中被分成几部分,以提高系统的易维护性。为了简化升级,sarge经常提供通过依赖关系安装其它新包的"dummy"包--与woody包有相同名称的空包。"dummy"包在升级后就没用了,可以安全地删除。

大多数(不是所有)的dummy包的描述部分说明它们的目的。但是,包描述信息不是唯一的,所以您可能会发现deborphan加上--guess选项对寻找这些包有用。注意有些dummy包在升级后不会被删除,它们被用来记录一个程序的可用版本。


[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ 下一页 ]


Debian GNU/Linux 3.1 ('sarge'), Intel x86发布说明

$Id: release-notes.zh_CN.sgml,v 1.9 2005/06/08 05:49:47 liling Exp $

Josip Rodin, Bob Hilliard, Adam Di Carlo, Anne Bezemer, Rob Bradford (current), Frans Pop (current)
debian-doc@lists.debian.org