6.6. 升级至下个稳定发行版

Debian 知名的功能之一是可升级至下个稳定版:dist-upgrade — 知名的句子 — 相当促进 Debian 的名声。除了极少的例外,升级电脑系统只需几分钟的时间,或暂十来分钟,依照从软件包保存库下载的速度而定.

6.6.1. 建议进程

Debian 各稳定版之间存在相当的差异,升级前应仔细阅读发布说明。

基本 发布说明

操作系统 (更宽广的说,任何软件都在内) 的发布说明是一份描述软件概况的文档,特别关照指定的版本。相对于完成的软件文档,这些文档相当简短,通常列出前版之后新生成的功能。也提供升级的进程、对前版用户的警示、以及若干错误更正。

发布说明是在线的:当前稳定版的发布说明使用固定的 URL,旧版的发布说明可在其代码名下找到:

http://www.debian.org/releases/stable/releasenotes

http://www.debian.org/releases/wheezy/releasenotes

本段内容专注于由 Wheezy 系统升级至 Jessie。这是系统的主要运作;不是 100% 无风险,必须先备份重要的数据才升级。

减少安装的软件包,只安装绝对必要的软件包,才能让升级容易 (且简短)。相关的工具包括 aptitudedeborphandebfoster (见 第 6.2.7 节 “自动追踪已安装的软件包”)。例如,您可使用以下命令,再使用 aptitude 的交互模式再检查并微调该移除的软件包:

  1. # deborphan | xargs aptitude --schedule-only remove

接着开始升级了。首先修改 /etc/apt/sources.list 文件的内容,告诉 APT 从 Jessie 而不是从 Wheezy 提取软件包。若文件内只有 Stable 而不是指名代码,则不需要修改,因为 Stable 总是指向 Debian 最新的发布版。修改或不修改都一样,必须重新加载可用软件包数据库 (使用 apt update 命令或 synaptic 图形接口的重新加载钮)。

注册这些添加的软件包来源后,首先运行最低量的升级 apt upgrade。以两阶段升级,减缓软件包管理工具的工作并确保使用最新的软件包,纳入完整发行版升级所需的错误更正与改进。

第一次升级完成后,就该处理升级本身,apt full-upgradeaptitude、或 synaptic均可。采用之前应小心检查建议的举措:应添加建议的软件包或移除建议且不再需要的软件包。任何情况下,前端都应与 Jessie 系统兼容且是最新的。所以,必须耐心地等待下载必要的软件包,回复 Debconf 的问题以及本地的配置档,然后等 APT 完成它的工作。

6.6.2. 处理升级后的问题

仅管 Debian 管理者已经尽力做好份内的工作,主系统的升级仍可能卡卡的不如想像中顺利。软件的新版本可能无法与旧的兼容 (例如,可能改变缺省行为或数据格式)。同时,尽管在 Debian 发布前做为详尽的测试,还是有若干漏网的错误。

可以先安装 apt-listchanges package, 软件包,在软件包升级前先显示可能问题。由软件包维护者编辑的这些信息且置于 /usr/share/doc/*软件包名*/NEWS.Debian 文件名内,供用户参考。阅读该等文件 (可能经由 apt-listchanges) 应有助于归避不好的意外。

新版的软件不见得都能顺利运作。不够普及或未经详实测试就会出现这种现象;在稳定版里,最后升级的软件常常后悔。碰到这种情形,首先应查看错误追踪系统 https://bugs.debian.org/*软件包名称*,寻找别人提报的踪迹。若尚未被提报,就应动手提报它 reportbug。若已被提报,错误报告与相关的消息就是处理该错误很好的信息来源:

  • 有时已有补丁,并且列在错误报告内;可以本地重新编译修补破碎的软件包 (见 第 15.1 节 “从源码重建安装包”);

  • 否则,用户可能找到另个解决问题的方法且在报告内分享;

  • 再不然,维护者可能已准备并公开修订软件包。

很严重的错误,将有特别的软件包供稳定版使用。在这种情况下,修订后的软件包位于 Debian 镜射站的 proposed-updates 区块 (见 第 6.1.2.3 节 “计划更新”)。对应的条目暂时加在 sources.list 文件内,可用 aptaptitude 命令安装升级软件包。

修订软件包尚未被稳定版管理者认可时,就不会出现在此区块。用户必须自己动手认可它。虽然列在此的软件包尚未可得,但至少已知在审查中。

https://release.debian.org/proposed-updates/stable.html