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

# 第 3 章 选择一个 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 发布版本为 trixie；下一个 stable 发布版本将被称作 forky。作为一个特例，让我们考虑 forky 作为下一个稳定版本被发布时将会发生什么。

- oldstable = bookworm; stable = trixie; testing = forky; unstable = sid

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

- 软件包不断地从 sid 迁移到 testing（即 forky）。但是 stable（即 trixie）中的软件包将保持不变，除非有安全更新。

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

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

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

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

- 在此阶段 oldstable = trixie， stable = forky。此时 stable 和“已冻结的 testing”的内容是相同的。

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

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

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

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

    deb http://deb.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. I am currently using the stable version. Can I change to testing or unstable? If so, how?

First of all, please bear in mind that the stable version is the one recommended for servers as well as for desktop computers, not only you will get security updates if you are running stable but also there are less changes which could potentially break the system or your setup.

If you are currently running stable, then in the `/etc/apt/sources.list` file the third field will be either 'trixie' or 'stable'. If you want to change to a different version, you need to change this to the distribution you want to run. If you want to run testing, then change the third field of `/etc/apt/sources.list` to 'testing'. If you want to run unstable, then change the third field to 'unstable'.

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

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

Currently Debian offers does not offer security updates for testing nor for unstable. The Debian Security Team focus their work on stable and old-stable. Nevertheless, just like any other type of fixes, security fixes in unstable are directly made to the main archive and trickle down to testing in due course. So if you are running unstable make sure that you remove the lines relating to security updates in `/etc/apt/sources.list`. If you are interested in knowing what known security bugs exist in these versions of the distributions, you will this information in the list of vulnerable source packages in testing, and unstable.

If there is a release notes document available for the distribution you are upgrading to (even though it has not yet been released) it would be wise to review it, as it might provide information on how you should upgrade to it. You will always find the Release Notes for testing available at the Debian website but depending on how close the testing version is to release the document might not cover all the potential changes or pitfalls.

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

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

The Debian reference manual provides more insight on running testing and unstable in its section Life with eternal upgrades.

### 3.1.12. 我正在跟踪 testing（forky）。新版本发布的时候会发生什么？是我仍然会跟踪 testing，还是我的机器会运行新的稳定版本？

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

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

要么类似：

    deb http://deb.debian.org/debian/ forky main

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

但如果第三个字段为“forky”，那么您就将跟踪 stable（因为 forky 将成为新的稳定版）。

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

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

## 3.2. But what about Kali, Knoppix, Linux Mint, Ubuntu, and others?

These distributions are not Debian; they are Debian-based. Though there are many similarities and commonalities between them, there are also crucial differences.

Over the years, many distributions have been developed over time reusing and/or rebuilding Debian packages and also adding custom packages on their own. Most of the distributions have been created for specific audiences or purposes. According to Distrowatch, Debian has spawned more than 420 derivatives and more than 120 of them are active at the time of writing.

All these distributions have their own merits and are suited to some specific set of users. For more information, read Debian derivatives available at the Debian website. You can find a complete list of Debian derivatives, including those that are no longer under active development at the Debian derivate Census in the Wiki.

### 3.2.1. I know that Kali/Knoppix/Linux Mint/Ubuntu/... is Debian-based. So after installing it on the hard disk, can I use 'apt' package tools on it?

These distributions are Debian-based, but they are not Debian. You will be still able to use apt package tools by pointing the `/etc/apt/sources.list` file to these distributions' repositories. In some cases some distributions might even have additional package managers that are used instead of apt.

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

For example, Knoppix is a Linux distribution designed to be booted as a live CD whereas Debian is designed to be installed on the hard-disk. Knoppix is great if you want to know whether a particular piece of hardware works, or if you want to experience how a GNU/Linux system 'feels' etc., Knoppix is good for demonstration purposes while Debian is designed to run 24/7. Moreover the number of packages available and the number of architectures supported by Debian are far more than that of Knoppix.

If you want Debian, it is best to install Debian from the get-go. Although it is possible to install Debian through other distributions, such as Knoppix, the procedure calls for expertise. If you are reading this FAQ, I would assume that you are new to both Debian and Knoppix. In that case, save yourself a lot of trouble later and install Debian right from the beginning.

### 3.2.2. I installed Kali/Knoppix/Linux Mint/Ubuntu/... on my hard disk. Now I have a problem. What should I do?

You are advised not to use the Debian forums (either mailing lists or IRC) for help on Debian derivatives as people there may base their suggestions on the assumption that you are running a Debian system. These "fixes" might not be suited to what you are running, and might even make your problem worse.

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

### 3.2.3. I'm using Kali/Knoppix/Linux Mint/Ubuntu/... and now I want to use Debian. How do I migrate?

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

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

第 2 章 获取和安装 Debian GNU/Linux |  | 第 4 章 兼容性问题