第 3 章 选择一个 Debian 发布版本

目录

3.1. 哪一个 Debian 发布版本(stable/testing/unstable)更适合我?
3.1.1. 你让我安装 stable,但是在 stable 中某某和某某硬件不能被检测到/不工作。我该怎么办?
3.1.2. 软件包在不同的发布版本中会有不同的版本号吗?
3.1.3. stable 版本的软件包真的很旧。看看 Kde、Gnome、Xorg,甚至是内核。它们都非常陈旧。为什么会这样?
3.1.4. 如果我今后决定切换到另一个发布版本,我可以这么做吗?
3.1.5. 你能告诉我要安装 stable,testing 还是 unstable 吗?
3.1.6. 你提到了 testing 出问题。是什么意思呢?
3.1.7. 为什么 testing 的问题可以持续几个月?unstable 中的修复不会直接进入 testing 吗?
3.1.8. 从管理员的角度来说,哪个发布版本更值得留意?
3.1.9. 新版本发布时会发生什么?
3.1.10. 我有一个正在工作的,安装了 Debian 的桌面/集群。怎么知道我正在运行哪个发布版本?
3.1.11. 我当前运行 stable。我可以切换到 testing 或者 unstable 吗?如果可以,怎么做?
3.1.12. 我正在跟踪 testing(bookworm)。新版本发布的时候会发生什么?是我仍然会跟踪 testing,还是我的机器会运行新的稳定版本?
3.1.13. 我仍然很疑惑。你说我应该安装哪个版本呢?
3.2. 但是 Knoppix、Linux Mint Debian Edition、Ubuntu 等又是什么呢?
3.2.1. 我知道 Knoppix/Linux Mint Debian Edition/Ubuntu/……是基于 Debian 的。所以我安装它们到硬盘后,可以使用“apt”包管理工具吗?
3.2.2. 我在硬盘上安装了 Knoppix/Linux Mint Debian Edition/Ubuntu/……,然后遇到了一个问题。我该怎么办?
3.2.3. 我正在使用 Knoppix/LMDE/Ubuntu/……,现在我想要使用 Debian。我应该如何迁移?

有很多种不同的 Debian 发布版本。选择一个合适的 Debian 发布版本是一个十分重要的决定。本节涵盖的信息可以帮助用户选择最适合自己机器的版本,并回答了在选择过程中可能出现的疑惑。本节不回答“为何要选择 Debian”,而是“应当选择 Debian 的哪个发布版本”。

关于可用的发布版本的更多信息,请阅读第 6.1 节 “有多少种 Debian 发布版本?”

3.1. 哪一个 Debian 发布版本(stable/testing/unstable)更适合我?

答案有点儿复杂。回答其实取决于您打算做什么。一个解决方法是问一位使用 Debian 的朋友。但这并不意味着您不能独立地作出决定。事实上,您在阅读完本章节后,就应当能作出选择。

  • 如果安全性或者稳定性对您有哪怕一点点的重要性:安装 stable。句号。这是最合适的方法。

  • 如果您是一位新的桌面用户,请从 stable 开始尝试。有一些软件十分陈旧,但它提供了一个缺陷最少的工作环境。在您感觉更有信心之后,您可以轻松地切换到更新的 unstable(或 testing)。

  • 如果您是一位在操作系统方面十分有经验的桌面用户,并不介意偶尔遇到一些奇怪的问题,甚至是整个系统崩溃,请使用 unstable。它拥有最新、最棒的软件,缺陷通常也会很快被修复。

  • 如果您打算运行一台服务器,尤其是对稳定性有严格要求,或者机器暴露于互联网的情况下,请安装 stable。这很明显是最健壮、最安全的选择。

以下问题(但愿)能对您的选择提供更多信息。在阅读完整个 FAQ 之后,如果您仍然不能作出决定,请坚持选择 stable。

3.1.1. 你让我安装 stable,但是在 stable 中某某和某某硬件不能被检测到/不工作。我该怎么办?

尝试使用搜索引擎在网上搜索,看一下有没有其他人可以让它在 stable 中工作。绝大多数硬件应当可以在 stable 中工作。但是如果您拥有一些最新的、最前沿的硬件,它可能不能在 stable 中工作。如果是这种情况,您可能需要安装/升级到 testing 或者 unstable。

对于笔记本,https://www.linux-on-laptops.com/ 是查看有没有其他人可以让它在 Linux 下工作的非常棒的一个网站。这个网站不是针对 Debian 的,但仍是一个丰富的信息来源。对于桌面计算机,我不知道任何类似的网站。

另一个选择是在 debian-user 邮件列表中提问,方式是发送邮件到 debian-user@lists.debian.org。您不需要订阅就可以向这个邮件列表发送信息。邮件存档可以在 https://lists.debian.org/debian-user/ 阅读。关于订阅该邮件列表的信息,也可以在邮件存档页面找到。强烈建议您将您的问题发送到邮件列表,而不是 IRC。邮件列表的信息会被存档,所以您的问题的解决方法可以帮助其他有相同问题的人。

3.1.2. 软件包在不同的发布版本中会有不同的版本号吗?

是的。unstable 中的版本最新。但是 unstable 的软件包没有经过良好测试,并可能存在缺陷。

另一方面,stable 包含的软件包的版本比较旧。但这些软件包经过了良好的测试,存在缺陷的可能性更低。

testing 中的软件包处于这两个极端之间。

3.1.3. stable 版本的软件包真的很旧。看看 Kde、Gnome、Xorg,甚至是内核。它们都非常陈旧。为什么会这样?

好吧,您可能是对的。stable 中的软件包的年龄取决于最近一次版本发布在什么时候。因为版本发布之间通常会间隔 1 年以上,您可能会发现 stable 包含了版本非常陈旧的软件包。然而,它们已经经过了反复测试。可以十分有信心地说,这些软件包没有任何已知的严重缺陷、安全漏洞等。stable 中的软件包和其他 stable 中的软件包无缝整合。这些特性对于每天 24 小时、每周 7 天不间断运行的生产环境的服务器十分重要。

另一方面,testing 或者 unstable 中的软件包可能有隐藏的缺陷、安全漏洞等。更重要的是,testing 和 unstable 中的一些软件包可能不能正常工作。通常在单一桌面计算机上工作的人更喜欢使用最新、最现代的软件包集合。unstable 是更适合这类人群的解决方案。

正如您所看到的,稳定性和新版本的软件是不可兼得的。如果您需要稳定性:安装 stable。如果您需要使用最新的软件包进行工作,安装 unstable。

3.1.4. 如果我今后决定切换到另一个发布版本,我可以这么做吗?

可以,但这一过程是单向的。您可以从 stable --> testing --> unstable。但反过来是“不可能”的。所以您最好要确定您希望安装/升级到 unstable。

实际上,如果您是专业人士,还愿意花费一些时间,而且您非常小心,并且您知道您在做什么的话,那么或许可以从 unstable 降级到 testing,再到 stable。但是安装脚本在设计时不支持这么做。所以在此过程中,您的配置文件可能会丢失,而且……

3.1.5. 你能告诉我要安装 stable,testing 还是 unstable 吗?

不能。这是一个十分主观的问题。没有一个完美的答案,因为这取决于您对软件的需求、您是否愿意处理可能出现的问题,以及您在系统管理方面的经验。这儿有一些提示:

  • stable 非常稳定。它不会出现大问题,并且有完整的安全支持。但它可能不支持最新的硬件。

  • testing 的软件比 stable 更新,并且出问题的概率比 unstable 要小。但一旦出问题,可能需要很长时间来修复。有时候可能需要数天,有时候甚至需要数月。它也不会有持续的安全支持。

  • unstable 有最新的软件,并且经常变化。后果是,它可能在任何时候出现问题。不过,修复常常能在数天内完成,并且它永远含有为 Debian 打包的软件的最新版本。

当在 testing 和 unstable 之间作出选择时,请注意有时候使用 testing 可能比使用 unstable 更有利。本文档的作者之一曾在 gcc 版本从 gcc3 过渡到 gcc4 时碰到了这种情况。他尝试在一台使用 unstable 的机器上安装 labplot 软件包,但是无法安装,因为它的有些依赖关系已经过渡到了 gcc4,有些没有。但在运行 testing 的机器上,可以安装该软件包的 testing 版本,因为已经过渡到 gcc4 的软件包还没有“渗漏”到 testing。

3.1.6. 你提到了 testing 出问题。是什么意思呢?

有时候,某个软件包可能无法通过包管理工具安装。有时候,某个软件包可能完全不可用,可能它因为有缺陷或依赖关系未满足而被(暂时)移除了。有时候,某个软件包可以安装,但无法正常工作。

当这些事情发生时,我们就说这个发布版本“出问题”了(至少对于这个软件包而言)。

3.1.7. 为什么 testing 的问题可以持续几个月?unstable 中的修复不会直接进入 testing 吗?

unstable 引入的缺陷修复和改进会在一个固定的天数后进入 testing。假设是 5 天。unstable 中的软件包只在没有针对它们的 RC bug 被报告的情况下才能进入 testing。如果在 unstable 中的软件包有针对它的 RC bug 报告,它在 5 天后也不会进入 testing。

其中的想法是,如果软件包有任何问题,就会被使用 unstable 的用户发现,并会在进入 testing 之前被修复。这会让 testing 在大多数时候都保持一个可用的状态。这是个极好的想法,如果您问我的话。但是事情并不总是如此简单的。考虑以下的情况:

  • 想象您对软件包 XYZ 感兴趣。

  • 让我们假设在 6 月 10 日,testing 中的版本是 XYZ-3.6,unstable 中的版本是 XYZ-3.7。

  • 5 天后,XYZ-3.7 从 unstable 迁移到 testing。

  • 所以在 6 月 15 日,testing 和 unstable 仓库中都有 XYZ-3.7。

  • 假设 testing 版本的一位用户发现有新的 XYZ 软件包可用,并升级 XYZ-3.6 到 XYZ-3.7。

  • 然后在 6 月 25 日,某位 testing 或者 unstable 的用户在 XYZ-3.7 中发现了一个 RC bug,并将其提交到了 BTS。

  • XYZ 的维护者修复了这一缺陷,并且在,比方说 6 月 30 日,将其上传到 unstable。这里的 5 不应视为准确数字。可能会需要更少或更多时间,取决于手头的 RC bug 的严重程度。

  • unstable 中的新版本,XYZ-3.8,计划于 7 月 5 日进入 testing。

  • 但是在 7 月 3 日另外一位用户在 XYZ-3.8 中发现了另外一个 RC bug。

  • 假设 XYZ 的维护者在 5 天后修复了这一新的 RC bug 并上传了 XYZ 的新版本。

  • 所以在 7 月 8 日,testing 的版本是 XYZ-3.7,unstable 是 XYZ-3.9。

  • 这一新版本 XYZ-3.9 计划于 7 月 13 日进入 testing。

  • 这样一来,因为您运行 testing,并且因为 XYZ-3.7 有缺陷,您可能需要等到 7 月 13 日才能使用 XYZ。也就是说,XYZ 基本上在一个月的时间里都不能正常工作。

情况还有可能变得更加复杂,比如说,XYZ 依赖 4 个其他的软件包。这可能导致 testing 版本在数月内都不能使用。尽管以上的场景是虚构的,类似的事情有可能在现实中发生,虽然十分罕见。

3.1.8. 从管理员的角度来说,哪个发布版本更值得留意?

许多人选择 Debian 而不是其他 Linux 发行版的主要原因之一就是 Debian 仅需要极少的管理工作。人们只需要一个能够工作的系统。通常我们可以说 stable 仅需要极少的维护工作,而 testing 和 unstable 则需要管理员的持续维护。如果您运行 stable,您需要留心的仅仅是跟踪安全更新。如果您运行 testing 或者 unstable,您则需要注意已安装的软件包的新发现的缺陷、新修复的缺陷和新引入的功能等。

3.1.9. 新版本发布时会发生什么?

这个问题不能帮助您选择 Debian 的发布版本。但是您迟早会碰到这个问题。

当前的 stable 发布版本为 bullseye;下一个 stable 发布版本将被称作 bookworm。作为一个特例,让我们考虑 bookworm 作为下一个稳定版本被发布时将会发生什么。

  • oldstable = buster; stable = bullseye; testing = bookworm; unstable = sid

  • unstable 永远被称作 sid,与新版本是否发布无关。

  • 软件包不断地从 sid 迁移到 testing(即 bookworm)。但是 stable(即 bullseye)中的软件包将保持不变,除非有安全更新。

  • 一段时间后 testing 将被冻结。但它仍然被叫做 testing。在这段时间内,unstable 中的新软件包都不能迁移到 testing,除非它包含对发布关键的(release-critical, RC)缺陷的修复。

  • 当 testing 被冻结时,所有新引入的缺陷修复都需要经过发布团队成员的人工检查。这是为了保证在已冻结的 testing 中不会有任何未知的严重问题。

  • “已冻结的 testing”中的 RC bug 的数量要么被降至零,要么,如果大于零的话,这些 bug 会被标记为已忽略,或被推迟到下一个小版本再修复。

  • 没有 RC bug 的“已冻结的 testing”将会作为新的稳定版本被发布。在我们的例子中,这一新的稳定版本将被叫做 bookworm。

  • 在此阶段 oldstable = bullseye, stable = bookworm。此时 stable 和“已冻结的 testing”的内容是相同的。

  • 新的 testing 将会基于旧的 testing。

  • 软件包开始从 sid 进入 testing,而 Debian 社区将为下一个 stable 版本的发布而努力。

3.1.10. 我有一个正在工作的,安装了 Debian 的桌面/集群。怎么知道我正在运行哪个发布版本?

大多数情况下非常容易搞清楚。查看 /etc/apt/sources.list 文件。会有类似这样的行:

deb http://ftp.us.debian.org/debian/ unstable main contrib

第三个字段(上面的例子中是“unstable”)指出了这个系统正在跟踪哪一个 Debian 发布版本。

您也可以使用 lsb_release(在软件包 lsb-release 中)。如果您在一个 unstable 的系统上运行这个程序,您会得到:

$ lsb_release  -a
LSB Version:    core-2.0-noarch:core-3.0-noarch:core-3.1-noarch:core-2.0-ia32:core-3.0-ia32:core-3.1-ia32
Distributor ID: Debian
Description:    Debian GNU/Linux unstable (sid)
Release:    unstable
Codename:   sid

但是,事情并不总是那样简单。有些系统的 sources.list 文件可能有数行,对应不同的发布版本。如果管理员跟踪来自不同 Debain 发布版本的不同软件包,就可能出现这一情况。经常把这种配置叫做 apt-pinning。这种系统可能是不同发布版本的混合。

3.1.11. 我当前运行 stable。我可以切换到 testing 或者 unstable 吗?如果可以,怎么做?

如果您当前正运行 stable,那么 /etc/apt/sources.list 文件的第三个字段将要么是“bullseye”,要么是“stable”。您需要将其改成您想要运行的发布版本。如果您想要运行 testing,那就将 /etc/apt/sources.list 的第三个字段改成“testing”。如果您想要运行 unstable,那么就把第三个字段改成“unstable”。

当前 testing 被叫做 bookworm。所以,如果您将 /etc/apt/sources.list 的第三个字段改为 “bookworm”,那么您也将运行 testing。不过即使在 bookworm 变为 stable 之后,您仍然将会跟踪 bookworm。

Unstable 永远被称作 Sid。所以如果您将 /etc/apt/sources.list 的第三个字段改成“sid”,那么您将跟踪 unstable。

当前 Debian 向 testing 提供安全更新,但不对 unstable 提供,因为对 unstable 的修复会直接进入 main 仓库。所以如果您运行 unstable,请务必从 /etc/apt/sources.list 中删除关于安全更新的行。

如果您准备升级到的版本有一份发行说明(即使它还没有发布),阅读它可能是个好主意,因为发行说明可能会提供如何升级到该版本的信息。

话虽如此,一旦您作出了以上的修改,您就可以运行 aptitude update,并安装您所需要的软件包。注意,从一个不同的发行版本安装软件包可能会自动升级您系统的一部分。如果您单独安装了一些软件包,您将会得到一个混合了不同的发布版本的系统。

在有些情况下,简单地使用 apt full-upgradeaptitude safe-upgrade 或者 aptitude full-upgrade 完全升级到新的发布版本可能是最佳选择。阅读 apt 和 aptitude 的手册页以获得更多信息。

3.1.12. 我正在跟踪 testing(bookworm)。新版本发布的时候会发生什么?是我仍然会跟踪 testing,还是我的机器会运行新的稳定版本?

这取决于 /etc/apt/sources.list 中的行。如果您正运行 testing,这些行要么类似:

deb http://ftp.us.debian.org/debian/ testing main

要么类似:

deb http://ftp.us.debian.org/debian/ bookworm main

如果 /etc/apt/sources.list 的第三个字段是“testing”,那么即使新版本发布后,您也会跟踪 testing。所以在 bookworm 发布之后,您将会运行一个具有不同代号的、新的 Debian 发布版本。这一变化起初可能不明显,但当新软件包从 unstable 移至 testing 后就会明显起来。

但如果第三个字段为“bookworm”,那么您就将跟踪 stable(因为 bookworm 将成为新的稳定版)。

3.1.13. 我仍然很疑惑。你说我应该安装哪个版本呢?

如果还是不确定的话,最佳的尝试是使用 stable 发布版本。

3.2. 但是 Knoppix、Linux Mint Debian Edition、Ubuntu 等又是什么呢?

它们都不是 Debian;它们是基于 Debian 的发行版。虽然有很多相似之处和共同特性,但也有很多关键的不同之处。

所有这些发行版都有它们自己的优点,也各自都有适合的用户群体。欲了解更多信息,请阅读 Debian 网站上的基于 Debian 的发行版

3.2.1. 我知道 Knoppix/Linux Mint Debian Edition/Ubuntu/……是基于 Debian 的。所以我安装它们到硬盘后,可以使用“apt”包管理工具吗?

这些发行版是基于 Debian 的。但它们不是 Debian。您仍可通过将 /etc/apt/sources.list 文件指向这些发行版的仓库的方式使用 apt 包管理工具。但那样您运行的不是 Debian,而是一个不同的发行版。它们是不同的。

大多数情况下,如果您坚持使用一个发行版,您应当只使用它,而不是混用来自其他发行版的软件包。很多常见的损坏都是由于用户运行一个其他的发行版,又试图安装 Debian 的软件包导致的。虽然这些软件包使用相同的格式和名称(.deb),但这并不意味着它们是兼容的。

例如,Knoppix 是一个被设计为从 Live CD 引导的发行版,而 Debian 被设计为安装到硬盘。如果您想知道一个特定的硬件是否能够工作,或者想体验一下 GNU/Linux 系统是什么样子的,Knoppix 就很不错。Knoppix 适合用于演示目的,而 Debian 被设计为能够 24/7 不间断运行。并且,Debian 的软件包数量和支持的架构数量远远超过 Knoppix。

如果您需要 Debian,您最好从一开始就安装 Debian。虽然有可能能够从其他发行版安装 Debian,比如 Knoppix,但这一过程需要专门的知识。如果您正在阅读这份 FAQ,我会假设您对 Debian 和 Knoppix 都比较陌生。如果确实如此,您应当在一开始就安装 Debian,以避免后续的更多麻烦。

3.2.2. 我在硬盘上安装了 Knoppix/Linux Mint Debian Edition/Ubuntu/……,然后遇到了一个问题。我该怎么办?

建议您不要使用 Debian 的论坛(包括邮件列表和 IRC)寻求帮助,因为那里的用户提供的建议可能会假设您在使用 Debian。这些“修复方案”可能不适合您运行的系统,并可能使您的问题变得更加糟糕。

首先使用您正在运行的发行版的论坛。如果您没有得到回答,或您得到的回答不能解决问题,您可能想要尝试在 Debian 的论坛获得帮助,但不要忘了上一段提供的建议。

3.2.3. 我正在使用 Knoppix/LMDE/Ubuntu/……,现在我想要使用 Debian。我应该如何迁移?

您应当把从基于 Debian 的发行版切换到 Debian 视为从一个操作系统切换到另一个。您应当备份您的全部数据,并从头重新安装操作系统。您不应当尝试用软件包管理工具将现有的系统“升级”到 Debian,因为您可能得到一个无法使用的系统。

如果您的全部用户数据(也就是您的 /home)都在一个单独的分区下,迁移到 Debian 事实上是十分简单的,您只需要在安装时告诉安装程序挂载(但不格式化)这个分区。但仍然建议备份您的数据,以及您先前系统的配置(也就是 /etc/,可能还包括 /var/)。