LWN:区分Debian的testing和unstable版本!

关注了就能看到更多这么棒的文章哦~

Distinguishing Debian testing from unstable

By Jonathan Corbet
August 9, 2024
Gemini-1.5-flash translation
https://lwn.net/Articles/984635/

有时,最小的改动会引发最长久的争论。例如,一项关于修改 Debian 不稳定发行版(Debian unstable distribution)系统上的信息文本文件中的一行改动的提议,已经演变成一场漫长而有时不友好的辩论。然而,这场讨论的核心归结为一个看似简单的问题:一个程序应该能够确定它是否正在 Debian 测试版(Debian testing)或不稳定版(unstable)系统上运行吗?

像大多数发行版一样,Debian 也维护着几个不同版本的软件发布,其中一些比另一些更稳定。Debian 项目大约每两年创建一个主要稳定版(major stable release);该版本将获得此项目持续三年的支持,之后将获得两年缩减版长期支持(reduced long-term support)。当前的 Debian 稳定版是 Debian 12,称为“bookworm”。未来版本的开发是在 不稳定版 发行版中进行的,也称为“sid”。虽然在现实世界中使用不稳定版是可行的(许多人确实如此),但用户必须为偶尔出现故障做好准备。从 Debian testing 测试版 中获得的体验会稍好一些,这个版本会接收在不稳定版中运行了一段时间且没有造成严重问题(serious problems)的软件包。

测试版本质上是下一个主要 Debian 稳定版——只是还没有完成。它已经包含了下一个版本的代号“trixie”。现在安装 trixie 的用户将获得的系统,会演变并稳定为稳定版。

这些发行版,像最近大多数发行版一样,包含一个名为 /etc/os-release 的文件,它告诉感兴趣的软件正在运行的系统类型。此文件有一个 标准格式 ,所有发行版都应该遵循该格式。Debian bookworm 系统上 /etc/os-release 的完整内容如下:

PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

这里的想法是,任何需要根据其运行的系统类型更改其行为的程序都可以查阅此文件并相应地采取行动。在 Debian 系统中, /etc/os-release 作为 base-files 软件包的一部分进行发布。

将技术委员会纳入讨论

8 月 1 日,Luca Boccassi 对 一个错误讨论 的进展感到很不愉快,于是 联系了 Debian 技术委员会,并提出了一项长期存在的争议;他要求做出一个决定,该决定将覆盖 base-files 维护者并从该软件包中删除 /etc/os-release=。他声称(作为 =os-release 规范的维护者),Debian 对该文件的实现存在缺陷。具体来说,它没有正确识别测试版和不稳定版,这使得软件无法仅依靠 /etc/os-release 来区分这两个版本。他说,这个问题是真实存在的:

这些问题不仅仅是理论上的,也不仅仅关乎个人喜好、代码清洁度、代码质量或美观。正如多个独立的错误报告和多个独立的报告者所表明的那样,它们会给 Debian 用户带来非常真实、非常实际和非常痛苦的麻烦,并且必须实现多个丑陋的临时改动作为 Debian 特有的解决方案。

他特别抱怨不稳定版中的代号目前设置为 trixie ,他认为这最起码也是一种误导。他解释道,测试版将成为下一个稳定版,届时它将获得安全支持,然后最终走向生命周期结束。它本质上是 trixie,因此在测试版中使用该代号是合适的。相反,不稳定版永远不会成为稳定版,永远不会有安全支持,也永远不会达到生命周期结束。在这些系统上运行的软件应该能够识别出发行版的预期生命周期;在不稳定版中使用 trixie 代号会让这一切都无法实现了。

他建议不稳定版在 /etc/os-release 中应该包含以下行:

PRETTY_NAME="Debian GNU/Linux sid"
NAME="Debian GNU/Linux"
VERSION_CODENAME=sid

而测试版应该包含:

PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
RELEASE_TYPE=pre-release

当 trixie 稳定版发布时, RELEASE_TYPE 将变为 lts 。他解释说,关键的改动是 VERSION_CODENAME 这一行,它告诉软件它们正在运行哪种 Debian 系统。

支持这种改变的声音相对较少。Gioele Barabucci, lsb_release 实现的维护者,表示,类似的问题也出现在该软件包中。从 bookworm 版本开始, lsb_release 从 /etc/os-release 中获取所有信息,因此它也无法区分测试版和不稳定版。他说,用户已经要求实现这种功能,如果目前的讨论没有满足他们的需求,他们很可能会将这个问题提交给技术委员会。Marc Haber 表示,如果他能够消除目前为解决这个问题而采用的变通方法,他“不会感到难过”。

争议

不用说,对这种改变存在反对意见,否则这场讨论就不会被捅到技术委员会去。许多参与者表示,他们根本没有看到这种改变的好处,Boccassi 也没有提供任何需要这种区分的具体例子(Boccassi 对此表示不同意)。Russ Allbery 表示:“我承认,我没有看出这个用例能令人信服”,并补充说,提出的用例来自“对 Debian 工作原理的误解”。今天在不稳定版中的软件包明天可能就会出现在测试版中,而且可能没有任何改变;他认为,真正令人感兴趣的是给定系统上哪些新的软件包将来自哪个仓库。这些信息可以通过解析软件包管理配置来找到。

正如 Simon McVittie 所描述的那样,许多 Debian 开发人员将不稳定版视为“用于创建下一个稳定版的工具”,而不是一个独立的发行版。在其 /etc/os-release 文件中以不同的方式处理不稳定版,将挑战这种工作方式的观点;许多开发人员不愿意采取这一步。

McVittie 用更专业的术语解释了提议的改变可能导致的麻烦:

这也违背了不稳定版 -> 测试版 -> 稳定版流程的一些设计原则,这些原则包括测试版应该与不稳定版之前的某个状态(所有内容都正常运行)大致等效,下一个稳定版应该在功能上等效于测试版的后期冻结版本,并且在跨越发行版里程碑时,尽可能少地进行更改,以避免扰乱软件包的行为。

他后来给出了 一个具体的例子,说明改变 /etc/os-release 如何会导致软件包移入测试版时出现回归。简而言之,一个根据发行版代号更改其行为的软件包可能在不稳定版中可以正常工作,但在过渡到测试版并看到不同的代号时,可能会出现故障。

Allbery 也 描述了测试版和不稳定版作为不同发行版的想法定义不明确。从 trixie 仓库安装的系统将演变成下一个稳定版,并经历 Boccassi 描述的生命周期。相反,从 testing 仓库安装的系统将从完全相同的软件包集开始(因为 trixie 和 testing 目前是同义词),但当 trixie 发布时,它将继续前进到下一个版本(名为 forky ),并将具有不同的生命周期。一个 /etc/os-release 文件无法真正描述这两种情况:

我认为,这种模糊性是造成这项提议引发如此多讨论的部分原因。Debian 目前还没有关于测试版的明确语义。它处于一种量子叠加状态,对不同的人来说,它同时是多种事物,这项提议试图对其进行标记,以便将该状态坍缩,使其符合一组人的心理模型,从而使另一组人的心理模型失效。

当然,Boccassi 不同意所有这些观点;他 总结了这种情况是“一个微不足道的技术问题,其核心是一个难以解决的社会冲突”。

审判

Boccassi 没能在整个讨论过程中改变太多(如果有的话)人的想法。8 月 6 日,技术委员会主席 Sean Whitton 要求对委员会是否应该直接关闭该请求进行投票;使用的措辞是:“技术委员会拒绝推翻 base-files 的维护者,或对与 /etc/os-release 有关的任何问题提出建议”。Boccassi 显然对这一举动感到惊讶,将其描述为“像是卡夫卡小说中的情节”。所有参与投票的委员会成员都赞成该决议,因此 该问题被关闭,委员会拒绝对此事发表意见。

因此,似乎这场漫长的讨论很可能不会导致 Debian 维护其 /etc/os-release 文件的方式发生任何改变。Debian 项目对其测试版和不稳定版仓库的看法显然与将它们视为具有自身身份的独立发行版不兼容,而且大多数 Debian 开发人员没有看到软件能够区分它们之间的有效理由。尽管讨论现在可能要告一段落,但这看起来像是一个永远不会完全消失的话题。提议的改变很小,但对相关人员来说,这是一件大事。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

4d9e2335a8299002616a1d97adf0b669.jpeg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值