1.6. 发布周期

Debian 计划的每个程序同时有 6 个不同版本,实验、不稳定、测试、稳定、旧稳定、与 极旧稳定。每个版本都有自己的发展流程。为了了解起见,先看看程序的发展过程,由最初的包装至纳入 Debian 的稳定版。

术语 发布

「release」一词,在 Debian 项目中,系指发行版的特定发行版本 (如:「unstable release」代表的是「尚未稳定的版本」)。这个词语也用于代表软件新版本 (stable 稳定版) 的初次公开发表。

1.6.1. 实验状态

首先看看 实验 发行的特例:对应于还在发展中软件的 Debian 软件包,不必已做完,其名称已说明一切。还没有全部通过此阶段;部分开发者加入软件包为了得到有经验 (或勇敢) 用户的回馈。

否则,此发行版通常会将重大修改纳入基础软件软件包中,因为一旦集成进 Unstable 不稳定版中的软件有重大臭虫,可能导致后果不堪设想。因此,它是完全隔绝且独立的发行版,其软件软件包绝不会移入其他版本中 (除非有情况需要维护者或 ftp 管理者直接、快速干预)。它也不能自我纳入:仅既有软件软件包的部分子集具有 Experimental 实验版,通常不包括基础系统。此发行版因此会与其他能自我纳入的发行版一同搭配使用,例如 Ustable 版。

1.6.2. 不稳定状态

让我们回到典型软件软件包的例子。维护者制作出最初的软件软件包,编绎给 Unstable 版使用并置于 ftp-master.debian.org 服务器上。这个动作会先经过 ftp 管理员的审阅与验证,再放到 Unstable 发行版中;对于那些比起重大臭虫更关心软件是否处于最新状态的用户而言,这就是「时下最新」的发行版。他们会探索程序并且接着测试。

碰到错误后,向软件包维护者报告。维护者会定期准备修正版,然后再上传至服务器。

更新的软件包在六个小时内更新至全球的镜射站。用户测试修正后的软件包并搜索其他程序的可能错误。部分更新的软件包动作更快。在这段时间内,启用自动创建机器人。最常见的情况是,维护者只有一部传统的 PC 在 amd64(或i386)架构下编译其软件包;然后由自动创建机器人接手处理其他架构。有些编译可能失败;维护者收到错误报告,然后在下个版本修正它。由专家发现的错误,其错误报告可能与补丁同时出现。

由自动创建者编译的软件包

图 1.2. 由自动创建者编译的软件包

快速查看 buildd,Debian 软件包再编译者

buildd是 “build daemon” 的缩写,意思是魔鬼创建器。在指定的架构自动编译Debian软件包的程序(尽量避免跨平台)。

因此,arm64 机器专门为 arm64 架构创建二进制文件。buildd 程序从 Debian 开发者的原始软件包里持续产生 arm64 架构的二进制软件包。

Debian所有的电脑都能使用此自动创建器。扩大而言,buildd 一词常用于这些机器,仅供此目的使用。

1.6.3. 迁移至测试

稍后,软件包略为成熟后;编译全部的架构,不再发生新的修订。才能成为测试版的候选 — 基于某些标准供不稳定软件包使用。根据以下的品管保证细目,每天都有程序被自动选入测试版:

  1. 没有严重错误,或,少于当前测试版;

  2. 至少置于不稳定10天,这段时间足够发现与报告任何严重的问题;

  3. 在所有官方支持的架构里编绎成功;

  4. 满足测试版对相依性的要求,或至少能够与其他有问题的软件包放在一起。

此系统不是万无一失;在测试版经常发现软件包的严重错误。不过,还是很有效果的,而且测试版的问题远远少于 不稳定版,对很多人来说,是稳定与新鲜之间的折衷选择。

说明被限制的测试版

很有趣的原则,测试版应没有实际的问题:软件包的跨平台相依性很难独立完成。软件包彼此相依,必须同时殖入大量的软件包,事实上很难同时殖入定期更新的软件包。另一方面,很难制作用于辨认相关软件包家族的脚本(这是 NP 完备的问题,还好我们知道若干方法)。以手动方式与脚本交互并指引若干可能的软件包,或纳入指定软件包于群组内,即使此方法打破若干相依性。这些功能由发布经理及其团队负责。

NP 完整性问题是复杂的指数算法,与数据量、代码长度(图表的量)与涉入的元素有关。唯一的解决方案是时时查看所有可能的配置,可能需要很多方法。尝试法是一种接近,但满意的,解决方案。

社区 发布经理

发布经理是个重要的职位,责任很重。担任此职的人,必须管理 Debian 新的、稳定版,并设置发展测试版的进程,直到进入稳定版的品质。同时设置暂行进度 (不见得遵守它)。

我们还有稳定版发布经理,简称为 SRM,管理与选择纳入 Debian 当前稳定版的更新软件包。以逐案方式,讨论由 Debian 开发者建议纳入的安全补丁与管理可能纳入的建议。

1.6.4. 从测试版至稳定版

假设我们的软件包已经纳入测试版。只要还有改进的空间,其维护者必然奋力改进之并从不稳定版 (以后纳入测试版就快多了:除非发生极大的变化,其相依性早已存在)重新来过。达到完美境界,维护者声明结束其工作。下个步骤是纳入稳定版发行,被发布经理选取时,就是简化的测试版。理想的情况是在安装器完成后才做此决择,并且在测试版找不到严重的错误。

实际上,还没有真的进入稳定版,Debian 必须妥协:移除维护者无法更正错误的软件包、或容许在数千个程序中还有几个错误。发布经理曾声明冻结期间,想被纳入测试版更新必须通过认可的进程。其目标是避免新版本(及其新错误),与只有被认可的错误修订。

软件包通过多个 Debian 版本的途径

图 1.3. 软件包通过多个 Debian 版本的途径

术语 冻结:最后一哩路

在冷冻期,停止测试版的发展;不允许自动更新。只有发布经理授权的软件包,才能依照指示更新。其目的是避免新版本带新的错误;更正过的错误通过审查过的更新才能纳入。

发布新的稳定版本后,稳定版经理继续管理后续的发展(称为 “修订”,如:第7版的修订为 7.1、7.2、7.3)。这些更新有系统地纳入安全补丁。也包括重要的更正(软件包的结护者必须证明问题的严重性才可能被纳入)。

最后,我们假想的软件软件包已经纳入稳定发行版中。这道进程,必须费上好一翻功夫,这正说明新 Debian 稳定发行版之间的间隔为何如此之久。毕竟也是如此,Debian 才能获得其高品质的名声。此外,同时间这三种发行版本都吸引了各自的用户群。比起最新版的 GNOME,服务器的系统管理员更在意系统稳不稳定,因此他们会选择 Debian Stable 稳定版来满足其需求。至于比起坚若磐石的稳定性更在意是否为最新版 GNOME 或 KDE 的最终用户,或许会喜欢 Debian Testing 测试版,在相对新颖的软件版本和较少发生重大问题之间折衷。最后,开发者和有经验的用户,可能自愿在 Debian Ustable 不稳定版中的丛林小径中披荆斩棘,一边测试 Debian 中的最新发展,一边承受感到头痛之苦与遭遇任何新程序臭虫的风险。各自选择各自的 Debian!

文化 GNOME 与 KDE,图形桌面环境

GNOME (GNU Network Object Model Environment 的简称) 与 KDE (K Desktop Environment 的简称) 是自由软件界最流行的两种图形桌面环境。桌面环境系指以图形接口方式集合容易管理常用的软件。通常包括文件管理、办公室软件包、浏览器、电子邮件收发、多媒体播放等。主要差别在于图形程序库的选择:GNOME 选用 GTK+ (以 LGPL 授权的自由软件),而 KDE 采用 Qt (以 GPL 与商业授权的公司包装计划)。

http://www.gnome.org/

http://www.kde.org/

Debian 包装程序的图径

图 1.4. Debian 包装程序的图径

1.6.5. 旧稳定版与更旧稳定版状态

每个稳定版预计有五年寿命每二年发行新的稳定版,同一时间最多可有三个支持的稳定版在流通。新的稳定版发布时,前个版本就变成旧稳定版而更早的就成为更旧稳定版。

Debian 的长期支持版 (This Long Term Support, LTS) 是新的成员:由独立的奉献者及公司联合的 Debian LTS 团队完成。Debian 安全团体不在维护旧的版本。

Debian 安全团队处理当前稳定版以及旧稳定版的安全事宜 (但仅与稳定版重复一年)。每个发布大约只维护三年。Debian LTS 团队支持最后两年的安全维护事宜,所以每个发布至少有五年的支持,在这 5 年内,用户可以将版本从 N 升级到 N+2。

https://wiki.debian.org/LTS

社区支持 LTS 的公司

Debian 的长期支持承诺颇为困难因为志愿者意图规避无趣的工作。旧软件的五年安全维护是 — 对大部分奉献者而言 — 很无趣的工作,还不如发展上游软件的新功能。

长期支持版的问世,有赖于参与公司愿意分享安全维护的成本。

此计划始于2014年六月:部分公司同意雇员以兼职方式奉献 Debian 的长期支持版,其他的赞助者愿意付钱,所以 Debian 的奉献者就有报酬而不是做免钱的。Debian 大部分的奉献者愿意接受长期支持版的报酬,取得 Freexian (Raphaël Hertzog 的公司)的赞助:

http://www.freexian.com/services/debian-lts.html

Debian 长期支持版团队还无力支持 Debian 所有的软件包,因此志愿者的工作是对有兴趣的软件包,取得报酬的奉献者以赞助者的软件包优先。

此计划还需要新的赞助者:本书读者服务的公司有兴趣吗?愿意让雇员兼职为长期支持版工作吗?可以赞助安全维护的经费吗?

https://wiki.debian.org/LTS/Funding