Debian GNU/Linux 常见问题(FAQ) --------------------------------------------------------------------- 版本 11.0 --------------------------------------------------------------------- 版权 © 1996-2021 Software in the Public Interest     在遵守并包含本文档版权声明的前提下,允许制作和发布本文档的完整拷 贝。 在遵守上述完整拷贝版本有关版权声明的前提下,允许拷贝和发布基于本     文档完整拷贝的修改版本,并且在发布所有通过修改本文档而得到的工作 成果时须使用与本文档的许可声明一致的许可声明。 在遵守上述修改版本版权声明的前提下,允许拷贝和发布本文档其它语言     的翻译版本。如果本许可声明有经自由软件基金会(Free Software Foundation)核准的本地化译本,则遵循本地化译本。 2021 年 1 月 摘要 本文档解答一些关于 Debian GNU/Linux 的常见问题。 --------------------------------------------------------------------- 目录 1. 定义和概览 1.1. 本 FAQ 文档是什么? 1.2. 什么是 Debian GNU/Linux? 1.3. 好的,我知道什么是 Debian 了……什么是 Linux?! 1.4. Debian 只做 GNU/Linux 吗? 1.5. Debian GNU/Linux 与其他 Linux 发行版的区别是什么?为什么我应 该选择 Debian,而不是其他发行版? 1.6. Debian 计划和自由软件基金会的 GNU 计划有什么区别和联系? 1.7. Debian 一词如何发音,有什么含义? 2. 获取和安装 Debian GNU/Linux 2.1. Debian 的最新版本是哪个? 2.2. 在“稳定版”中会有软件包的升级吗? 2.3. 哪里/怎样可以获得 Debian 的安装镜像? 2.4. 如何从 CD-ROM 安装 Debian? 2.5. 为什么官方的稳定版的 CD-ROM 含有指向“frozen”和“unstable”的符 号连接?我以为这张 CD 只有“stable”! 2.6. 我可以直接从一个远程的 Internet 网站获得和安装 Debian 吗? 2.7. 是否有其他引导安装程序的方法? 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。我应该如何迁移? 4. 兼容性问题 4.1. Debian GNU/Linux 可以运行于哪些硬件架构/系统上? 4.2. Debian GNU/Linux 使用什么内核? 4.3. Debian 与其他 Linux 发行版的兼容性如何? 4.4. Debian 系统和其他 Unix 系统之间的源代码兼容性怎么样? 4.5. 我可以在我的 Red Hat/Slackware/……Linux 系统使用 Debian 软件 包(“.deb”文件)吗?我可以在我的 Debian GNU/Linux 系统使用 Red Hat 软件包(“.rpm”文件)吗? 4.6. 我应该如何安装非 Debian 的应用程序? 5. Debian 系统中可用的软件 5.1. Debian GNU/Linux 收录了哪些类型的应用程序和开发工具? 5.2. 谁编写了所有这些软件? 5.3. 我应该如何获得一份 Debian 打包的程序的最新列表? 5.4. 我应该如何安装能够构建软件包的开发环境? 5.5. Debian GNU/Linux 缺少什么软件包? 5.6. 我编译程序时为什么会出现“ld: cannot find -lfoo”错误?为什么 Debian 库软件包里没有任何 libfoo.so 文件? 5.7. Debian 是否支持 Java?支持情况如何? 5.8. 我应该如何确认我正在使用的是 Debian 系统,以及使用的是哪一个 版本? 5.9. Debian 对非英语语言的支持如何? 5.10. ezmlm/djbdns/qmail 在哪里? 5.11. Flash(SWF)播放器在哪里? 5.12. Google Earth 在哪里? 5.13. VoIP 软件在哪里? 5.14. 我有一张无线网卡不支持 Linux。我该怎么办? 6. Debian 档案库 6.1. 有多少种 Debian 发布版本? 6.2. 诸如 etch、lenny 之类的名字是什么? 6.2.1. 过去使用过哪些代号? 6.2.2. 这些代号来自哪里? 6.3. 那“sid”呢? 6.4. stable 目录包含什么? 6.5. “测试版”包含什么? 6.5.1. “测试”的过程是怎样的?它是如何“冻结”的? 6.6. “不稳定版”包含什么? 6.7. Debian 档案库中的那些目录都是干什么用的? 6.8. dists/stable/main 里面的那些目录都是干什么用的? 6.9. 源代码在哪里? 6.10. pool 目录里有什么? 6.11. “incoming”目录是什么? 6.12. 我要如何建立我自己的、可使用 apt 的软件仓库? 7. Debian 软件包管理系统基础 7.1. 什么是 Debian 软件包? 7.2. Debian 二进制软件包的格式是什么? 7.3. 为什么 Debian 软件包的文件名这么长? 7.4. 什么是 Debian 控制文件? 7.5. 什么是 Debian conffile? 7.6. 什么是 Debian preinst、postinst、prerm,和 postrm 脚本? 7.7. 什么是必备、必需、重要、标准、可选和额外软件包? 7.8. 什么是虚拟软件包? 7.9. 一个软件包依赖、推荐、建议、冲突、替代、破坏或者提供另一个软 件包是什么意思? 7.10. “预依赖”是什么意思? 7.11. 软件包状态中的未知、安装、卸载、清除和保留都是什么意思? 7.12. 如何将软件包设置为“保留”? 7.13. 如何安装源码包? 7.14. 如何从源码包构建二进制包? 7.15. 我应该如何创建自己的 Debian 软件包? 8. Debian 软件包管理工具 8.1. Debian 提供了哪些软件包管理程序? 8.1.1. dpkg 8.1.2. APT 8.1.3. aptitude 8.1.4. synaptic 8.1.5. tasksel 8.1.6. 其他软件包管理工具 8.2. Debian 声称可以更新正在运行的程序,这是怎么做到的? 8.3. 怎么知道 Debian 系统中安装了哪些软件包? 8.4. 如何显示已安装的软件包包含的文件? 8.5. 如何查出一个特定的文件属于哪个软件包? 8.6. 为什么我卸载“foo”的时候没有卸载“foo-data”?怎样确保旧的、不 再使用的库软件包被卸载? 9. 使您的 Debian 系统保持最新状态 9.1. 如何使 Debian 系统保持最新? 9.1.1. aptitude 9.1.2. apt-get 和 apt-cdrom 9.2. 必须进入单用户模式才能升级软件包吗? 9.3. 我需要在磁盘上保留所有的 .deb 档案文件吗? 9.4. 我应该如何保存关于安装了哪些软件包的日志?我想知道什么时候进 行了安装和卸载,以及安装和卸载了哪些软件包! 9.5. 可以自动升级系统吗? 9.6. 我有多台机器;我怎样才能只下载一次更新? 10. Debian 和内核 10.1. 我可以安装和编译未经过 Debian 微调的内核吗? 10.2. Debian 提供了哪些工具来编译定制内核? 10.3. Debian 提供了哪些特别的机制来处理内核模块? 10.4. 我是否可以安全地卸载旧的内核软件包,如果可以,应该怎么做? 10.5. 在哪里可以获得关于 Debian 的 Linux 软件包的更多信息? 11. 定制您的 Debian GNU/Linux 系统 11.1. 如何确保所有程序使用相同的纸张大小? 11.2. 如何在不牺牲安全性的情况下提供对硬件外设的访问? 11.3. 如何用 Debian 的方式在启动时加载一个控制台字体? 11.4. 如何配置 X11 程序的默认设置? 11.5. Debian 系统是如何引导的? 11.6. 那么 Debian 使用传统的 System V init 时是什么情况? 11.7. 还有其他引导 Debian 系统的方式吗? 11.8. 软件包管理系统是如何处理含有其他软件包的配置文件的软件包的 ? 11.9. 如何覆盖软件包安装的文件,以使用一个不同的版本? 11.10. 如何把我在本地编译的软件包加入到软件包管理系统已知的软件包 的列表中? 11.11. 有些用户喜欢 mawk,有些喜欢 gawk;有些喜欢 vim,有些喜欢 elvis;有些喜欢 trn,有些喜欢 tin;Debian 如何支持这种多样性? 12. 获得对 Debian GNU/Linux 的支持 12.1. Debian 系统中还能获得哪些有针对性的文档? 12.2. 有没有可以讨论 Debian 的在线资源? 12.2.1. 邮件列表 12.2.2. 网络论坛 12.2.3. 维基 12.2.4. 维护者 12.2.5. Usenet 新闻组 12.3. 有没有搜索有关 Debian GNU/Linux 的信息的便捷的方法? 12.4. 有没有已知的缺陷的记录? 12.5. 如何报告 Debian 中的缺陷? 13. 向 Debian 计划作出贡献 13.1. 如何成为 Debian 成员或 Debian 开发者? 13.2. 如何向 Debian 计划捐赠资源? 13.3. 如何向 Debian 计划捐赠金钱? 13.3.1. Software in the Public Interest 13.3.2. 其他组织 14. 在商业产品中重新分发 Debian GNU/Linux 14.1. 我可以制作或售卖 Debian 的 CD 吗? 14.2. 可以将 Debian 和非自由软件封装到一起吗? 14.3. 我想面向一个“垂直市场”发布一个特殊的 Linux 发行版。我可以使 用 Debian GNU/Linux 作为发行版的核心部分,并在上层添加我自己的应 用程序吗? 14.4. 我可以将我的商业软件封装成 Debian “软件包”,使它可以轻松地 在任何 Debian 系统上安装吗? 15. 下一个 Debian 发布版本可以期待的变化 15.1. 加固系统 15.2. 对非英语语言的用户提供更多的支持 15.3. 改进 Debian 安装程序 15.4. 更多的架构 15.5. 更多的内核 16. 关于本 FAQ 的一般性信息 16.1. 作者 16.2. 反馈 16.3. 获取途径 16.4. 文档格式 第 1 章 定义和概览 1.1. 本 FAQ 文档是什么? 本文档提供了关于 Debian 发行版(Debian GNU/Linux 及其他发行版)和 Debian 项目的常见问题(以及解答!)。如果可能,会提供到其他文档的     链接;我们不会在本文档中大量引用其他文档的内容。您会发现,有些解 答会假定您对类 Unix 操作系统有一定了解。我们会尽可能减少本文档所 要求的预备知识:对一般新手的问题的回答会尽量简单。 如果您不能在本 FAQ 中找到您想找到的问题解答,请阅读第 12.1 节     “Debian 系统中还能获得哪些有针对性的文档?”。如果仍有问题,请查看 第 16.2 节 “反馈”。 1.2. 什么是 Debian GNU/Linux?     Debian GNU/Linux 是 Linux 操作系统的一个发行版,以及其上运行的无 数软件包。     Debian GNU/Linux 是: * 全功能的:Debian 目前包含了超过 59100 个软件包。用户可以选择 安装哪些软件包;Debian 提供了实现这一目的的工具。您可以在 Debian 的任何一个镜像站点 (https://www.debian.org/distrib/ ftplist) 找到 Debian 目前包含的软件包列表及描述。 * 可自由使用和分发的:参与分发和开发不需要成为财团会员,也不需     要付费。所有属于 Debian 正式发行版的软件包都可以自由分发,通 常受到 GNU 通用公共许可证的约束。 Debian 仓库也包含大约 1000 个需要按照特定的条款进行分发的软件 包(位于 non-free 和 contrib 区)。 * 充满活力的:有 1012 名志愿者持续贡献新代码和改进代码,Debian 得以快速发展。软件仓库每日更新两次。 大多数 Linux 用户运行 Linux 的一个特定发行版,例如 Debian GNU/ Linux。不过,理论上,用户可以从互联网或其他地方获得 Linux 内核, 然后自己编译。之后,他们可以用相同的方式获得许多应用程序的源代码     ,编译这些程序,然后将它们安装到系统中。对于复杂的程序,这个过程 可能十分耗时且容易出错。为了避免这种情况,用户通常选择从某个 Linux 发行版获得操作系统和应用软件包。各个 Linux 发行版之间的区别 包括打包以及在用户系统中安装和追踪软件包时使用的软件、协议和流程 ,还包括安装程序、管理工具、说明文档,以及其他服务。 Debian GNU/Linux 是志愿者努力创造出的一个自由的、高质量的、兼容     Unix 的操作系统,包括其上的一整套应用程序。自由的类 Unix 系统的想 法发源于 GNU 计划,并且让 Debian GNU/Linux 如此实用的许多应用程序 也是由 GNU 计划开发的。 对于 Debian 而言,“free”一词遵循 GNU 的解释(参见 Debian 自由软件 指导方针 (https://www.debian.org/social_contract#guidelines) )。     当我们提及自由软件(free software)的时候,“free”指的是自由,不是 价格。自由软件意味着您可以自由分发其拷贝、您已收到,或在需要的时 候能够获得其源代码、您可以修改该软件或在新的自由软件中使用它的一 部分;并且,您知道您可以做这些事情。 Debian 计划于 1993 年由 Ian Murdock 建立,最初受到自由软件基金会     的 GNU 计划的赞助。如今,Debian 的开发者认为它是 GNU 计划的直系后 裔。 虽然 Debian GNU/Linux 本身是自由软件,它也为其他更具价值的 Linux 发行版的开发提供了基础。通过提供一个可靠的、全功能的基本系统, Debian 向 Linux 用户提供了更好的兼容性,也使得 Linux 发行版开发者     不必进行重复的劳动,并专注于能使他们的发行版别具一格的工作。阅读 第 14.3 节 “我想面向一个“垂直市场”发布一个特殊的 Linux 发行版。我 可以使用 Debian GNU/Linux 作为发行版的核心部分,并在上层添加我自 己的应用程序吗?”获得更多信息。 1.3. 好的,我知道什么是 Debian 了……什么是 Linux?! 简而言之,Linux 是一个类 Unix 操作系统的内核。它最初为 386(或更     高的)PC 设计;如今 Linux 也可以在许多其他系统上运行。Linux 由 Linus Torvalds 以及世界各地的许多计算机科学家写就。     除了内核以外,一个“Linux”系统通常包括: * 一个遵循 Linux 文件系统层次结构标准 https://www.pathname.com/ fhs (https://www.pathname.com/fhs) 的文件系统。     * 各式各样的 Unix 实用工具,许多工具是由 GNU 计划和自由软件基金 会(Free Software Foundation)开发的。 Linux 内核、文件系统、GNU 和 FSF 实用工具,以及其他实用工具组合起     来,目的是达成对 POSIX (IEEE 1003.1) 标准的兼容;参见第 4.4 节 “Debian 系统和其他 Unix 系统之间的源代码兼容性怎么样?”。     欲了解更多关于 Linux 的信息,参见 Linux Online (https:// www.linux.org/) 的什么是 Linux (https://www.linux.org/info/) 。 1.4. Debian 只做 GNU/Linux 吗? 目前,Debian 只有 Linux 版本,但随着 Debian GNU/Hurd 以及使用 BSD     内核的 Debian 的诞生,我们也开始提供非 Linux 的操作系统,用于开发 、服务器和桌面平台。然而,这些非 Linux 的移植尚未作为官方版本发布 。     最早尝试的移植是 Debian GNU/Hurd。     Hurd 是运行 GNU Mach 微内核的一组服务器。它们一起构成了 GNU 操作 系统的基石。 参见 https://www.gnu.org/software/hurd (https://www.gnu.org/     software/hurd) 以获得关于 GNU/Hurd 的更多信息,以及 https:// www.debian.org/ports/hurd/ (https://www.debian.org/ports/hurd/) 以获得关于 Debian GNU/Hurd 的更多信息。     第二个尝试的移植是向 BSD 内核的移植。我们尝试使用 FreeBSD 内核。 参见 https://www.debian.org/ports/#nonlinux (https://     www.debian.org/ports/#nonlinux) 以获得关于这些非 Linux 移植的更多 信息。 1.5. Debian GNU/Linux 与其他 Linux 发行版的区别是什么?为什么我应该选 择 Debian,而不是其他发行版?     以下关键特性使得 Debian 与其他发行版不一样: 自由: 如同 Debian 社群契约 (https://www.debian.org/social_contract) 所声明的那样,Debian 将一直是 100% 自由的。Debian 对于提供真 正的自由软件是非常严格的。Debian 自由软件指导方针(DFSG) (https://www.debian.org/social_contract#guidelines) 决定软件 是否是“自由”的。 Debian 软件包管理系统: 整个系统,或是其中任何一个独立组件,都可以原地升级,而不必重 新格式化、不会丢失自定义的配置文件,且(大多数情况下)不需要 重启系统。大多数当代的 Linux 发行版都有某种形式的软件包管理系 统;Debian 软件包管理系统是独一无二的,并且格外健壮(参见第  7 章 Debian 软件包管理系统基础)。 开放的开发: 尽管许多 Linux 发行版是由个人、小而封闭的团体,或是商业性质的 厂商开发的,Debian 是一个由社区进行开发的重要发行版,这一社区 是以创建一个自由的操作系统为共同目标而建立起来的,这与 Linux 和其他自由软件的精神是一致的。 超过 1012 位志愿的软件包维护者维护了超过 59100 个软件包,并帮 助改进 Debian GNU/Linux。Debian 开发者对本计划作出贡献的方式     (在通常情况下)不是编写新的应用程序,而是根据本计划提供的标 准打包已经存在的软件、就缺陷报告与上游开发者进行沟通,以及提 供用户支持。关于如何成为贡献者的额外信息,参见第 13 章向 Debian 计划作出贡献。 通用操作系统: Debian 拥有超过 59100 个软件包 (https://packages.debian.org/ stable/) ,可以在 9 种架构 (https://www.debian.org/ports/) 上 运行。这远比其他任何 GNU/Linux 发行版都要多。参见第 5.1 节 “Debian GNU/Linux 收录了哪些类型的应用程序和开发工具?”以获取 我们提供的软件的概述,以及第 4.1 节 “Debian GNU/Linux 可以运 行于哪些硬件架构/系统上?”以获得支持的硬件平台的描述。 缺陷跟踪系统: Debian 开发者在地理上十分分散,所以在缺陷和修复缺陷方面,需要 复杂的工作和便捷的沟通,才能加快整个系统的开发。我们鼓励用户 使用正式的文风发送缺陷报告,这些报告可以很方便地通过 WWW 存档 或者电子邮件访问。参见本 FAQ 的第 12.4 节 “有没有已知的缺陷的 记录?”以获得关于缺陷记录管理的额外信息。 Debian 政策: Debian 的质量标准有详尽的说明文档,名为 Debian 政策。该文档定 义了维护 Debian 软件包需要遵循的质量和标准。     欲了解额外的相关信息,请阅读选择 Debian 的理由 (https:// www.debian.org/intro/why_debian) 网页。 1.6. Debian 计划和自由软件基金会的 GNU 计划有什么区别和联系? Debian 系统的基石是自由软件的理念,这个理念最先由自由软件基金会 (https://www.gnu.org/) (Free Software Foundation, FSF),尤其是     Richard Stallman (https://www.stallman.org/) 所推广。FSF 的强大的 系统管理工具、实用程序,以及应用程序,也是 Debian 系统的核心组件 。 Debian 计划是区别于 FSF 的一个独立实体,但我们在多个项目上定期沟     通和协作。FSF 直白地请求我们把我们的系统称作 "Debian GNU/Linux", 我们也乐于答应这一请求。 FSF 的长期目标是开发一个叫做 GNU 的新操作系统,基于 Hurd (https:/     /www.gnu.org/software/hurd) 。Debian 和 FSF 在此项目上进行了合作 ,称为 Debian GNU/Hurd (https://www.debian.org/ports/hurd/) 。 1.7. Debian 一词如何发音,有什么含义? 本计划的名字的发音为 Deb'-ee-en,Deb 的 e 是短元音 e,重音在第一     个音节。这个单词是 Debra,以及 Ian Murdock,本计划的建立者,两个 名字的缩写。(字典对 Ian 的发音似乎模棱两可(!),但是 Ian 本人 倾向于 ee'-en。) 第 2 章 获取和安装 Debian GNU/Linux 含有安装说明的官方文档是 Debian GNU/Linux 安装手册 (https://     www.debian.org/releases/stable/installmanual) 。我们将在这里提供 一些有关获取和安装 Debian GNU/Linux 的额外信息。 2.1. Debian 的最新版本是哪个?     当前 Debian GNU/Linux 有三个版本: 版本 11,也叫做“稳定(stable)”版,或者 bullseye 这是稳定且久经测试的软件,它只有在重大的安全或稳定性更新被整 合进入时,才发生变化。 “测试(testing)”版,目前叫做 bookworm 这是存放将要发布的下一个“稳定版”的软件包的地方;它们在“不稳定     版”中进行过一些测试,但可能还不太适合发布。这一发行版的更新比 “稳定版”更频繁,但不如“不稳定版”频繁。 “不稳定(unstable)”版 这是当前正在开发中的版本;它会持续更新。您可以在任何时候,从 任意 Debian 镜像站点的“unstable”仓库获得软件包,用以升级您的 系统,但您可能不能指望系统像以前一样可用和稳定——这就是它叫做“ 不稳定版”的原因!     请阅读第 6.1 节 “有多少种 Debian 发布版本?”以获得更多信息。 2.2. 在“稳定版”中会有软件包的升级吗? 稳定版不会增加新功能。一旦一个 Debian 版本被发布,并被标记为“稳定     版”,它将只会获得安全更新。也就是说,只有在发布之后被发现了安全漏 洞的软件包会得到更新。所有安全更新都通过 security.debian.org (https://security.debian.org) 提供。 安全更新只有一个目的:提供对安全漏洞的修补。它们不是绕过正常的小     版本发布过程,给稳定版偷偷增加新变更的手段。所以,对软件包的安全 更新不会升级该软件。作为替代,Debian 安全团队会将必要的修补向后移 植到该软件在“stable”中的版本。 欲了解关于安全支持的更多信息。请阅读安全 FAQ (https://     www.debian.org/security/faq) 或者 Debian 安全指南 (https:// www.debian.org/doc/manuals/securing-debian-howto/) 。 2.3. 哪里/怎样可以获得 Debian 的安装镜像?     您可以通过在 Debian 网站 (https://www.debian.org/distrib/) 下载合 适的文件来获取安装镜像。     请访问 Debian GNU/Linux 的 CD (https://www.debian.org/CD) 以获得 关于 CD(以及 DVD)镜像的更多信息。 2.4. 如何从 CD-ROM 安装 Debian? 从 CD 安装 Debian 是很简单的:设置您的系统从 CD 启动,插入您的 CD     ,然后重启。您的系统将会执行 Debian 安装程序。参见 Debian GNU/ Linux 安装手册 (https://www.debian.org/releases/stable/ installmanual) 以获得更多信息。 2.5. 为什么官方的稳定版的 CD-ROM 含有指向“frozen”和“unstable”的符号连 接?我以为这张 CD 只有“stable”!     事实上,官方的 Debian CD 镜像含有类似如下的符号链接: /dists/frozen -> bullseye/     /dists/stable -> bullseye/ /dists/testing -> bullseye/ /dists/unstable -> bullseye/     这使得它们在您的 sources.list 含有类似     deb cdrom:[]/ unstable main [...]     的行时也能工作。 这些符号链接的存在并不意味着镜像是“unstable”或“testing”或其他。阅     读位于 /.disk/info 的 CD 标签以确定它含有哪个 Debian 版本。这一信 息也可在 CD 的 /README.txt 中找到。     阅读 https://www.debian.org/releases (https://www.debian.org/ releases) 以确定当前的“稳定版”和“测试版”是什么。 2.6. 我可以直接从一个远程的 Internet 网站获得和安装 Debian 吗?     可以。您可以从我们的仓库网站及其镜像下载一组文件,以引导 Debian 安装系统。 您可以下载一个很小的 CD 镜像文件,用它创建一张可引导的 CD,再用它     安装基本系统,剩下的则通过网络安装。欲了解更多信息,请访问 https: //www.debian.org/CD/netinst/ (https://www.debian.org/CD/netinst/) 。 2.7. 是否有其他引导安装程序的方法? 有。除了 CD 和 DVD 以外,您还可以从 U 盘、直接从硬盘、或是使用 TFTP 网络引导来安装 Debian GNU/Linux。为了在多台计算机上安装,还     可以进行全自动安装。注意:不是所有方法都能被所有计算机架构支持。 一旦安装程序成功引导,系统的剩余部分即可从网络下载,或者通过本地 介质安装。参见 Debian GNU/Linux 安装手册 (https://www.debian.org/ releases/stable/installmanual) 以获得更多信息。 第 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/ (https://     www.linux-on-laptops.com/) 是查看有没有其他人可以让它在 Linux 下 工作的非常棒的一个网站。这个网站不是针对 Debian 的,但仍是一个丰 富的信息来源。对于桌面计算机,我不知道任何类似的网站。 另一个选择是在 debian-user 邮件列表中提问,方式是发送邮件到 debian-user@lists.debian.org。您不需要订阅就可以向这个邮件列表发 送信息。邮件存档可以在 https://lists.debian.org/debian-user/     (https://lists.debian.org/debian-user/) 阅读。关于订阅该邮件列表 的信息,也可以在邮件存档页面找到。强烈建议您将您的问题发送到邮件 列表,而不是 IRC (https://www.debian.org/support) 。邮件列表的信 息会被存档,所以您的问题的解决方法可以帮助其他有相同问题的人。 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-upgrade,aptitude 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 的发行版 (https:// www.debian.org/misc/children-distros) 。 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/)。 第 4 章 兼容性问题 4.1. Debian GNU/Linux 可以运行于哪些硬件架构/系统上? Debian GNU/Linux 包含的所有程序都提供完整的源代码,所以它应当能在     Linux 内核支持的所有系统上工作;阅读 Linux FAQ (http:// en.tldp.org/FAQ/Linux-FAQ/intro.html# DOES-LINUX-RUN-ON-MY-COMPUTER) 以了解更多细节。     当前的 Debian GNU/Linux 版本,11,对于以下架构而言,有完整的二进 制发行版: * amd64:这囊括了基于支持 AMD64 扩展的 64 位 AMD CPU 的系统,以 及基于支持 EM64T 扩展的英特尔 CPU 的系统,以及一个常见的 64 位用户空间。 * arm64:支持含有最新的 64 位 ARM 处理器的设备。 * armel:小端序 ARM 机器。 * armhf:作为 armel 的替代品,提供给支持硬件浮点数的 ARMv7 机器 。 * i386:这囊括了基于英特尔及其兼容处理器的系统,包括英特尔的 386、486、奔腾、奔腾 Pro、奔腾 II(包括 Klamath 和赛扬),和     奔腾 III,以及大多数 AMD、Cyrix 和其他厂商的兼容处理器。 * ia64:英特尔 IA-64(“安腾”)计算机。 * mips:SGI 的大端序 MIPS 系统,Indy 和 Indigo2;mipsel:小端序 MIPS 机器,Digital DECstation。 * powerpc:这包括一些 IBM/摩托罗拉的 PowerPC 机器,包括苹果麦金 塔 PowerMac 型号,以及 CHRP 和 PReP 开放架构的机器。 * ppc64el:64 位小端序 PowerPC 移植,支持数个较新的 PowerPC/ POWER 处理器。 * s390x:用于 IBM System z 机器的 64 位移植,替代 s390。 Debian hurd-i386(在 i386 32 位 PC 上运行 GNU Hurd 内核), mipsel64(小端序模式的 64 位 MIPS),powerpcspe(针对“Signal     Processing Engine”硬件的移植),sparc64 (64 位 SPARC 处理器), sh (日立 SuperH 处理器)以及 x32(在 amd64/x86_64 CPU 上使用 32 位指针)二进制发行版的开发正在进行中。 对 m68k 架构的支持在 Etch(Debian 4.0)版本被放弃,因为它不符合 Debian 发布管理员设定的标准。该架构包括了含有 Motorola 680x0 处理     器(x>=2)和 MMU 的 Amiga 和 ATARI 机器。不过,虽然它不是官方稳定 发布版本的一部分,该移植仍然活跃且可以安装,并可能在未来的版本中 重新被激活。 由于类似的原因,对 hppa(惠普的 PA-RISC 机器)以及 alpha(Compaq/     Digital 的 Alpha 系统)的支持在 Squeeze(Debian 6.0)版本被放弃。 arm 也在该发布版本被放弃,因为它已被 armel 架构取代。 对 32 位 s390 移植的支持(s390)在 Jessie(Debian 8)版本已停止,     它已被 s390x 取代。此外,由于开发人手不足,对 IA-64 和 Sparc 移植 的支持在此发布版本也被迫被移除。     关于可用的移植的更多信息,请查看网站上的移植页面 (https:// www.debian.org/ports/) 。 关于引导、磁盘分区、启用 PCMCIA(PC 卡)设备以及类似的问题,请遵     循安装手册的指引,可以在我们网站 https://www.debian.org/releases/ stable/installmanual (https://www.debian.org/releases/stable/ installmanual) 阅读。 4.2. Debian GNU/Linux 使用什么内核?     除了 Linux,Debian 也针对如下操作系统内核提供完整的二进制发行版: * FreeBSD:通过 kfreebsd-amd64 以及 kfreebsd-i386 移植提供,分     别针对 64 位 PC 和 32 位 PC。这两个移植首次在 Debian 6.0 Squeeze 作为技术预览版发布。然而它们并不是 Debian 8 Jessie 版 本的一部分。     除了这些以外,针对以下移植的工作正在进行中: * avr32,针对 Atmel 的 32 位 RISC 架构的移植,     * hurd-i386,针对 32 位 PC 的移植。该移植将使用 GNU Hurd,GNU 团队共同编写的新操作系统, * sh,针对日立 SuperH 处理器的移植。 过去曾有将本发行版移植到 NetBSD 内核的尝试,以提供 netbsd-i386(     针对 32 位 PC)和 netbsd-alpha(针对 Alpha 机器),但这些移植从未 被发布,并且现在已被废弃。     关于可用的移植的更多信息,请查看网站上的移植页面 (https:// www.debian.org/ports/) 。 4.3. Debian 与其他 Linux 发行版的兼容性如何? Debian 开发者与其他 Linux 发行版作者沟通,以期维持与其他 Linux 发     行版的兼容性。^[1]大多数商业的 Linux 产品在 Debian 上运行得和在构 建它的发行版上一样好。 Debian GNU/Linux 遵从 Linux 文件系统层次结构标准 (https://     www.pathname.com/fhs) 。然而,对此标准的一些规则的解释存在变通空 间,所以 Debian 系统和其他 Linux 系统可能存在细微差别。 4.4. Debian 系统和其他 Unix 系统之间的源代码兼容性怎么样? 对于大多数应用,Linux 版本的源代码和其他 Unix 操作系统兼容。Linux 支持 System V Unix 系统,以及自由和商业的 BSD 衍生系统所支持的几 乎一切东西。然而在 Unix 圈子,这种声明几乎没有价值,因为没有方法     可以证明它。在软件开发领域,完全的兼容性是必需的,而不是“在大多数 情况下”的兼容。所以多年以前,对标准的需求出现了,而如今 POSIX.1( IEEE 标准 1003.1-1990)是类 Unix 操作系统源代码兼容性的主要标准之 一。 Linux 打算遵循 POSIX.1,,但 POSIX 标准需要花钱,且 POSIX.1(以及 FIPS-151-2)认证十分昂贵;这使得 Linux 开发者追求完全符合 POSIX     标准变得十分困难。认证费用使 Debian 不太可能获得官方兼容性认证证 书,即使它能完全通过验证套件。(验证套件现在可以免费获得,所以可 以预期更多人将会着手解决 POSIX.1 兼容性问题。) Unifix GmbH(位于德国 Braunschweig)开发了一个获得了 FIPS 151-2(     POSIX.1 的超集)认证的 Linux 系统。这项技术被用于 Unifix 自己的发 行版,称作 Unifix Linux 2.0,以及 Lasermoon 的 Linux-FT。 4.5. 我可以在我的 Red Hat/Slackware/……Linux 系统使用 Debian 软件包( “.deb”文件)吗?我可以在我的 Debian GNU/Linux 系统使用 Red Hat 软件包 (“.rpm”文件)吗?     不同的 Linux 发行版使用不同的软件包格式以及不同的软件包管理系统。 您也许可以: 将 Debian 软件包解包到运行不同的 Linux 发行版的机器上的程序已 经出现了,而且一般能够工作,至少文件可以被正确解包。反过来也 大致成立,也就是说,将 Red Hat 或者 Slackware 软件包解包到运 行 Debian GNU/Linux 的机器上的程序也许可以正确地解包并放置大 多数文件到正确的目录。这主要归功于 Linux 文件系统层次结构标准 的存在(以及被广泛接受)。可使用 Alien (https:// packages.debian.org/alien) 软件包在不同的软件包格式之间进行转 换。 您也许不会想要:     大多数软件包管理器在解包档案时会写一些管理文件。这些管理文件 通常没有标准化。所以,在运行其他发行版的系统上解包 Debian 软 件包会对该系统的软件包管理器产生不可预测的(当然也不是正面的 )效果。类似地,来自其他发行版的工具可能可以在 Debian 系统中 成功解包它们的档案,但可能会使得 Debian 软件包管理系统在后续 升级或删除一些软件包时出错,甚至简单地输出系统上有哪些软件包 时也可能出错。 更好的方式: Linux 文件系统标准(所以也包括 Debian GNU/Linux)要求 /usr/ local/ 下的子目录完全由用户处置。所以,用户可以解包其他发行版 的软件包到此目录,然后单独管理它们的配置、升级和删除。 4.6. 我应该如何安装非 Debian 的应用程序? 目录 /usr/local/ 下的文件不受 Debian 软件包管理系统的控制。因此, 将您的程序的源代码放在 /usr/local/src/ 是个好习惯。比如,您可能会     解压名为“foo.tar”的软件包源码到目录 /usr/local/src/foo。在您编译 它们之后,将二进制文件放入 /usr/local/bin/,库文件放入 /usr/local /lib/,配置文件放入 /usr/local/etc/。 如果您的程序和/或文件真的必须放入其他的目录,您也可以将它们保存在     /usr/local/,并建立从必须存入的目录到 /usr/local/ 中实际路径的符 号链接。例如,您可以建立如下的链接     ln -s /usr/local/bin/foo /usr/bin/foo 在任何情况下,如果您获得了一个版权声明允许再次发布的软件包,您应     该考虑用它制作一个 Debian 软件包,并将其上传到 Debian 系统。成为 一名软件包开发者的指引可在 Debian 政策文档中找到(参见第 12.1 节 “Debian 系统中还能获得哪些有针对性的文档?”)。 --------------------------------------------------------------------- ^[1] Linux Standard Base (https://wiki.linuxfoundation.org/lsb/ start/) 是一个允许相同的二进制软件包在多个发行版运行的标准。在 Jessie(Debian 8)发布之后,Debian 放弃了 (https://     sources.debian.org/src/lsb/9.20170808/debian/README.Debian/) 对 LSB 兼容性的追求。参见这条 Didier Raboud 于 2015 年 7 月 3 日发布 的消息 (https://lists.debian.org/4526217.myWFlvm1rM@gyllingar) 以 及后续的讨论以了解背景信息。 第 5 章 Debian 系统中可用的软件 5.1. Debian GNU/Linux 收录了哪些类型的应用程序和开发工具?     和大多数 Linux 发行版类似,Debian GNU/Linux 提供: * 用于软件开发、文件管理和文本处理的重要的 GNU 应用,包括 gcc、 g++、make、textinfo、Emacs、Bash shell 以及众多改进过的 Unix 工具, * Perl、Python、Tcl/Tk 以及用于它们的各种相关的程序、模块和库, * Tex(LaTeX)和 Lyx、dvips、Ghostscript,     * Xorg 窗口系统,它为 Linux 提供了一个基于网络的图形用户界面, 以及无数的 X 应用程序,包括 GNOME、KDE 和 Xfce 桌面环境, * 一套完整的网络应用程序,包括各种互联网协议的服务器,例如 HTTP (万维网)、FTP、NNTP(新闻)、SMTP 和 POP(电子邮件)以及 DNS(域名服务器);关系数据库,例如 PostgreSQL、MySQL;以及网 络浏览器,包括各种 Mozilla 产品, * 一套完整的办公应用,包括 LibreOffice 生产力套件、Gnumeric 及 其他电子表格应用、所见即所得(WYSIWYG)编辑器、日历。 本发行版包含超过 58100 个软件包,囊括了新闻服务器、新闻阅读器、税 务软件、数据库和电子表格应用、图像处理程序、通讯软件、网络工具、     邮件工具、Web 服务器,甚至是业余无线电程序。另有 1000 个软件套件 作为 Debian 软件包提供,但由于许可证的限制,它们不是 Debian 的正 式组成部分。 5.2. 谁编写了所有这些软件?     对于所有软件包,它们的作者都记录在文件 /usr/share/doc/PACKAGE/ copyright 中,其中 PACKAGE 需要替换为该软件包的名字。 在 Debian GNU/Linux 系统中打包该软件的维护者记载于各软件包的     Debian 控制文件(参见第 7.4 节 “什么是 Debian 控制文件?”)。位于 /usr/share/doc/PACKAGE/changelog.Debian.gz 的 Debian 变更日志,记 载了其他曾为 Debian 打包作出贡献的人。 5.3. 我应该如何获得一份 Debian 打包的程序的最新列表? 完整的列表可以在任何一个 Debian 镜像站点 (https://www.debian.org/     distrib/ftplist) 获得,位于文件 indices/Maintainers。该文件包括了 软件包的名称和对应的维护者的姓名和电子邮件。     Debian 软件包的 WWW 界面 (https://packages.debian.org/) 很方便地 汇总了 Debian 仓库的大约三十个“区”的软件包。 5.4. 我应该如何安装能够构建软件包的开发环境? 如果您想要在 Debian 系统中构建软件包,您需要一个基本的开发环境,     包括 C/C++ 编译器和其他一些必备的软件包。要安装该环境,您只需要安 装 build-essential 软件包。这是个元软件包,或称作占位软件包,它依 赖构建 Debian 软件包需要的标准开发工具。 不过,有些软件可能需要额外的软件才能被重新构建,这些依赖包括库的     头文件或其他工具,例如 autoconf 或 gettext。Debian 提供了将其他软 件编译为 Debian 软件包时需要的许多工具。 准确地找出需要哪些依赖可能是很困难的,除非您打算重新编译的是 Debian 软件包。后者相对来说比较容易,因为官方的软件包必须包含编译     该软件包需要的额外的软件(除了 build-essential 中的软件包以外)的 列表,这叫做编译时依赖(Build-Dependencies)。要安装编译指定源码 包所需的全部软件包,并编译该源码包,您只需运行:     # apt-get build-dep foo # apt-get source --build foo 注意,如果您想要构建 Debian 分发的 Linux 内核,您还需要安装     kernel-package 软件包。欲了解更多信息,请阅读第 10.2 节 “Debian 提供了哪些工具来编译定制内核?”。 5.5. Debian GNU/Linux 缺少什么软件包?     有一个 Debian 需要打包的软件包列表,叫做需要帮助和预期的软件包列 表 (https://www.debian.org/devel/wnpp/) 。     欲了解关于添加缺少的软件包的详细信息,请阅读第 13 章向 Debian 计 划作出贡献。 5.6. 我编译程序时为什么会出现“ld: cannot find -lfoo”错误?为什么 Debian 库软件包里没有任何 libfoo.so 文件? Debian 政策(Debian Policy)要求这类符号链接(到 libfoo.so.x.y.z     或类似文件)需放在单独的开发软件包中。这些软件包通常命名为 libfoo-dev 或者 libfooX-dev(假设库软件包名为 libfooX,X 为整数) 。 5.7. Debian 是否支持 Java?支持情况如何?     一些 Java 的自由实现有 Debian 软件包可用,既可以提供 JDK,也可以 提供 JRE。您可以使用 Debian 编写、调试及运行 Java 程序。 运行 Java applet 需要一个能够识别并执行它的网络浏览器。Debian 收     录的几个浏览器,例如 Mozilla 和 Konqueror,支持 Java 插件,可以用 来运行 Java applet。     请阅读 Debian Java FAQ (https://www.debian.org/doc/manuals/ debian-java-faq/) 以了解更多信息。 5.8. 我应该如何确认我正在使用的是 Debian 系统,以及使用的是哪一个版本 ?     要确认您的系统是从真正的 Debian 基本光盘安装的,请使用     lsb_release -a 命令。这会显示发行版的名称(在 Distributor ID 字段)和系统的版本     号(在 Release 和 Codename 字段)。以下是在一个 Debian 系统中的运 行结果示例: $ lsb_release -a No LSB modules are available.     Distributor ID: Debian Description: Debian GNU/Linux 7.4 (wheezy) Release: 7.4 Codename: wheezy     您也可以检查是否存在 /etc/debian_version 文件,它仅有一行,给出了 系统的版本号,是由软件包 base-files 定义的。 然而,您需要注意的是,Debian 系统包括许多组成部分,每一部分都(几     乎)可以独立升级。每个 Debian“发布版本”都包含良好定义的、不变的内 容。而更新会单独提供。要得到一行关于软件包 foo 安装状态的描述,请 执行 dpkg --list foo。要得到更详细的描述,请使用:     dpkg --status foo     要查看所有已安装的软件包的版本,请运行:     dpkg -l 注意,程序 dpkg 的存在意味着您可以在您的系统上安装 Debian 软件包     。然而,因为该程序已被移植到了许多其他的操作系统和架构上,所以再 也没有一个可靠的方法来确定一个系统是不是 Debian GNU/Linux 了。 5.9. Debian 对非英语语言的支持如何? * Debian GNU/Linux 包含大约二十多种键盘布局的键盘映射表,也有工 具(位于 kbd 软件包)可以安装、查看和编辑这些映射。 安装过程会提示用户选择键盘布局。 * Debian 几乎所有的软件都支持以 UTF-8 作为字符集。旧的字符集, 例如 ISO-8859-1 和 ISO-8859-2,应当被视作是过时的。     * 当前,对德语、西班牙语、法语、匈牙利语、意大利语、日语、韩语 、荷兰语、波兰语、葡萄牙语、俄语、土耳其语,以及中文手册页的 支持,通过 manpages-LANG 软件包提供(其中 LANG 是两个字母的 ISO 国家代号)。要访问本地语言支持(NLS)的手册页,用户需要将 shell 的 LC_MESSAGES 环境变量设置为适当的字符串。 例如,如果要使用意大利语的手册页,LC_MESSAGES 需要设置为 “italian”。然后 man 程序就会在 /usr/share/man/it/ 下搜索意大 利语手册页。 5.10. ezmlm/djbdns/qmail 在哪里? Dan J. Bernstein 曾经将他编写的所有软件 (https://cr.yp.to/ software.html) 以一个限制性的许可证发布,不允许发布修改的二进制文     件。然而,在 2007 年 11 月,Bernstein 表示 “……我已决定将我过去及 未来编写的所有软件发布至公有领域……”。参见发布者的 FAQ (https:// cr.yp.to/distributors.html) 以了解他的发布条款。 截至本段写就时(2016 年 3 月),ezmlm-idx 仅在 experimental 仓库 提供(mlmmj 也类似,并随 Debian jessie 提供);djbdns 仅在 sid(     unstable)提供,参见 Bug #516394 (https://bugs.debian.org/516394) 和 Bug #796118 (https://bugs.debian.org/796118) 以了解详细信息, 一个类似的替代品是 dbndns 软件包;publicfile 软件仍不是自由软件, publicfile-installer 软件包在 Debian 的 contrib 区提供。     Dan J. Bernstein 的其他软件(qmail、daemontools、ucspi-tcp)随 Debian 提供。 5.11. Flash(SWF)播放器在哪里?     Debian 提供 gnash 和 swfdec:两个自由的 SWF 短片播放器。 5.12. Google Earth 在哪里? Google Earth 的 GNU/Linux 版本在 Google 的网站上可以找到,但它不     仅不是自由软件,而且第三方完全不能重新发布它。不过, googleearth-package(在 contrib 区)可能可以为使用该软件提供帮助 。 5.13. VoIP 软件在哪里?     VoIP 有两个主要的开放协议:SIP 和 H.323。在 Debian main 中,两个 协议都有多个软件实现。ekiga 是流行的客户端之一。 5.14. 我有一张无线网卡不支持 Linux。我该怎么办?     买一个支持的 :) 另外,也可以用 ndiswrapper 实现在 Linux 系统上使用 Windows 的驱动     (如果您有的话)。参见 Debian 维基的 ndiswrapper 页面 (https:// wiki.debian.org/NdisWrapper) 以了解更多信息。 第 6 章 Debian 档案库 6.1. 有多少种 Debian 发布版本? 有三种主要的发布版本:“稳定(stable)”版、“测试(testing)”版和“ 不稳定(unstable)”版。“测试”版有时会“冻结”(参见第 6.5.1 节 ““测     试”的过程是怎样的?它是如何“冻结”的?”)。此外,还有“旧的稳定( oldstable)”版(也就是之前的“稳定”版),以及“实验(experimental) ”版。 实验版本用于提供仍在开发中的软件包,它们有很高的机率会损坏您的系     统。希望研究和测试最前沿软件的开发人员会使用该发行版本。用户不应 该使用这些软件包,因为即使是对最有经验的用户,它们也可能是危险和 有害的。     参见第 3 章选择一个 Debian 发布版本以获得关于选择 Debian 发布版本 的帮助。 6.2. 诸如 etch、lenny 之类的名字是什么? 那些只不过是“代号”。当 Debian 发布版本仍处于开发阶段时,它们没有     版本号,只有代号。设立这些代号的目的是使得制作 Debian 发布版本的 镜像更加容易(如果一个真实存在的目录,如 unstable,突然更名为 stable,将会不得不毫无意义地下载很多文件)。 当前,stable 是到 bullseye(即 Debian GNU/Linux 11)的符号链接,     而 testing 是到 bookworm 的符号链接。这意味着 bullseye 是当前的稳 定版本,而 bookworm 是当前的测试版本。     unstable 是到 sid 的永久链接,因为 sid 永远是不稳定版本的代号(参 见第 6.3 节 “那“sid”呢?”)。 6.2.1. 过去使用过哪些代号? 除了 bullseye 和 bookworm,已经用过的代号有:版本 1.1 buzz、版本 1.2 rex、版本 1.3.x bo、版本 2.0 hamm、版本 2.1 slink、版本 2.2     potato、版本 3.0 woody、版本 3.1 sarge、版本 4.0 etch、版本 5.0 lenny、版本 6.0 squeeze、版本 7 wheezy、版本 8 jessie、版本 9 stretch、版本 10 buster。 6.2.2. 这些代号来自哪里?     到目前为止,这些代号都来自皮克斯电影《玩具总动员》系列的角色。 * buzz(Debian 1.1)是太空人 Buzz Lightyear(巴斯光年), * rex(Debian 1.2)是那只霸王龙, * bo(Debian 1.3)是 Bo Peep(宝贝),那个放羊的女孩, * hamm(Debian 2.0)是那个小猪储蓄罐, * slink(Debian 2.1)是 Slinky Dog,那只玩具狗, * potato(Debian 2.2)当然是 Mr. Potato(蛋头先生), * woody(Debian 3.0)是牛仔胡迪, * sarge(Debian 3.1)是绿色塑料玩具士兵的首领, * etch(Debian 4.0)是那个玩具画板(Etch-a-Sketch),     * lenny(Debian 5.0)是那个玩具望远镜, * squeeze(Debian 6)是那个三只眼的外星人的名字, * wheezy(Debian 7)是那只戴着红领结的橡胶玩具企鹅, * jessie(Debian 8)是那个唱着约德尔的女牛仔, * stretch(Debian 9)是那个有八条长着吸盘的长腿的橡胶玩具章鱼, * buster(Debian 10)是安弟的宠物狗。 * bullseye(Debian 11)是胡迪的玩具木马。 * bookworm(Debian 12)是那个内置手电筒的、爱看书的玩具蠕虫。 * trixie(Debian 13)是蓝色塑料三角龙。 * sid 是破坏所有玩具的隔壁男孩。 使用《玩具总动员》角色名的决定 (https://lists.debian.org/ debian-devel/1996/06/msg00515.html) 是由 Bruce Perens 作出     (https://lists.debian.org/debian-user/1997/04/msg00011.html) 的, 他当时是 Debian 计划领导者,同时也在皮克斯(该电影的制作商)工作 。 6.3. 那“sid”呢? sid 或称作 unstable 是大多数软件包最初上传到的地方。它从来不会被     直接发布,因为将被发布的软件包首先需要进入 testing,然后才能进入 stable 并发布。sid 包含已经发布和尚未发布的架构的软件包。     “sid”这个名字同样来自动画电影《玩具总动员》:Sid 是破坏玩具的隔壁 男孩 :-)     ^[2] 6.4. stable 目录包含什么? * stable/main/:这个目录包含了组成 Debian GNU/Linux 系统最新版 本的正式部分的软件包。 这些软件包都符合 Debian 自由软件指导方针 (https:// www.debian.org/social_contract#guidelines) ,所以都可以自由使 用和分发。 * stable/non-free/:这个目录包含了分发时需要发布者留意特定的版     权要求,所以分发受到限制的软件包。 比如,有些软件包的许可证禁止商业性质的分发。有些软件包可以重 新发布,但事实上是共享软件,而不是自由软件。这些软件包需要先 分别研究甚至讨论其许可证,然后才能重新发布(例如被包含于 CD-ROM 中)。 * stable/contrib/:这个目录包含了本身符合 DFSG 且可以自由分发, 但以某种方式依赖由于不能自由分发而只能被放在 non-free 区的软 件的软件包。 6.5. “测试版”包含什么?     在 unstable 中经过了一定测试的软件包会进入“testing”目录。 这些软件包的版本在所有已构建的架构上要保持一致,并且不能含有使它     们无法安装的依赖关系;它们也必须比“不稳定版”含有更少的对发布关键 的缺陷。通过这种方式,我们希望“测试版”总是更接近于一个发布候选版 本。 关于“测试”状态的更多一般性信息,以及各软件包的“测试”状态的含义,     请阅读 https://www.debian.org/devel/testing (https:// www.debian.org/devel/testing) 。 6.5.1. “测试”的过程是怎样的?它是如何“冻结”的?     当“测试版”足够成熟的时候,发布管理员会开始“冻结”它。正常的迁移延 迟会被延长,以确保从“不稳定版”进入“测试版”的缺陷尽可能少。 经过一段时间后,“测试版”会被真正“冻结”。这意味着所有向“测试版”的     软件包迁移都会被暂停,除非它们含有对发布关键缺陷( release-critical bug)的修补。当发布非常临近的时候,“测试版”也可 能处于“测试周期”中的“深度冻结”阶段。 当“测试版”被“冻结”时,“不稳定版”也会处于一个接近冻结的状态。这是     因为开发者倾向于不把全新版本的软件上传到“不稳定版”,这样“测试版” 中已冻结的软件需要小幅更新时,或是需要修复阻止它们成为“稳定版”的 对发布关键的缺陷时,“不稳定版”就能派得上用场。 我们有一个“测试版”的阻止软件包发布的缺陷列表,或是阻止整个版本发     布的缺陷列表。详情请见当前“测试版”的发行信息 (https:// www.debian.org/releases/testing/) 。     当缺陷的数量降低到可接受的最大值时,已冻结的“测试版”会被宣布是“稳 定”的,并被赋予一个版本号并发布。 最重要的缺陷数量是“对发布关键的(Release Critical)”缺陷数量,可 以在对发布关键的缺陷的状态页面 (https://bugs.debian.org/ release-critical/) 找到。常见的发布目标是 NoRCBugs (https://     wiki.debian.org/ReleaseGoals/NoRCBugs) ,也就是发布版本应当不含有 严重程度为 critical、grave 或是 serious 的缺陷。所有被认为是“关键 的”的问题的列表可以在 RC 政策文档 (https://release.debian.org/ testing/rc_policy.txt) 中找到。 随着每次新版本的发布,之前的“稳定版”将会变得过时,并被存档。欲了     解更多信息,请阅读 Debian 存档 (https://www.debian.org/distrib/ archive) 。 6.6. “不稳定版”包含什么? “unstable”目录包含了当前处于开发中的系统的快照。我们欢迎用户使用     和测试这些软件包,但需要做好充足的准备。使用“不稳定版”的优点是您 可以一直跟随 GNU/Linux 软件行业的最新技术,但是如果系统崩成两半了 ,您就需要自行把它们粘起来 :-)     “unstable”目录中也有 main、contrib 和 non-free 子目录,划分标准和 “stable”相同。 6.7. Debian 档案库中的那些目录都是干什么用的?     为 Debian GNU/Linux 打包的软件位于每个 Debian 镜像站的多个目录树 中的一个。     dists 目录是“distributions”的缩写,它是访问当前可用的 Debian 发布 版本(和预发布版本)的正统方式。     pool 目录包含实际的软件包,参见第 6.10 节 “pool 目录里有什么?”。     有以下的辅助目录: /tools/: 可用于创建可引导磁盘、对磁盘进行分区、压缩和解压文件,以及引 导 Linux 的 DOS 工具。 /doc/:     基本的 Debian 文档,例如这份 FAQ、缺陷报告系统的手册,等等。 /indices/: 站点的各种索引文件(Maintainers 文件和 override 文件)。 /project/: 主要是针对开发者的资料和一些杂项文件。 6.8. dists/stable/main 里面的那些目录都是干什么用的?     在每个主目录树中^[3],有三种类型的子目录是包含索引文件的。 第一种是 binary-某某某子目录,它包含了某个可用的计算机架构的二进     制软件包的索引文件,例如 binary-i386 用于可在 Intel x86 PC 上执行 的软件包,而 binary-sparc 用于可在 Sun SPARCStations 上执行的软件 包。 每个版本可用的架构的完整列表可以在该版本的网页 (https://     www.debian.org/releases) 中找到。当前版本的架构列表请见第 4.1 节 “Debian GNU/Linux 可以运行于哪些硬件架构/系统上?”。 binary-* 中的索引文件名为 Packages(.gz, .bz2),它们包含了该发行版     包括的每个二进制软件包的摘要。实际的二进制软件包位于顶级的 pool 目录。     此外,还有一个子目录叫做 source/,它包含了该发行版包括的源码包的 索引文件。这个文件名为 Sources(.gz, .bz2)。     最后一类重要的子目录存放了安装系统的索引文件,它们位于 debian-installer/binary-架构名。 6.9. 源代码在哪里? Debian 系统的一切都有源代码。进一步地说,系统中大多数程序的许可证     要求在分发程序的同时必须同时分发源代码,或者可以按要求提供源代码 。 源代码在 pool 目录中(参见第 6.10 节 “pool 目录里有什么?”),和     特定架构的二进制包的目录一起分发。要在不熟悉档案库结构的情况下获 得源代码,可以使用类似 apt-get source 软件包名的命令。 由于许可证上的限制,“contrib”和“nonfree”区的软件包可能提供源代码 ,也可能不提供。这些软件包不是 Debian 系统的正式组成部分。有些情     况下,只允许分发没有源代码的“binaly blob”(例如 firmware-misc-nonfree);还有些情况下,软件许可证禁止分发预编译的 二进制文件,但允许分发源码包,用户可以在本地编译(例如 broadcom-sta-dkms)。 6.10. pool 目录里有什么? 软件包位于一个很大的“池(pool)”中,依源码包的名称进行组织。为了     便于管理,pool 按照区(“main”、“contrib”和“non-free”)和源码包名 的首字母进行分类。这些目录包括一些文件:每个架构的二进制软件包, 以及用于生成这些二进制软件包的源码包。 要得到单个软件包的存放位置,您可以执行类似 apt-cache showsrc 软件     包名的命令,再查看“Directory:”行。例如,apache 软件包位于 pool/ main/a/apache/。     另外,因为以 lib* 打头的软件包太多了,它们被单独处理:比如, libpaper 软件包位于 pool/main/libp/libpaper/。     ^[4] 6.11. “incoming”目录是什么?     在开发者上传软件包之后,它将在“incoming”目录待上一小段时间,以验 证软件包的真实性,然后才会被允许进入档案库。 通常您不应该安装这里的软件包。然而,在罕见的紧急情况下,您可以访     问位于 https://incoming.debian.org/ (https://incoming.debian.org /) 的“incoming”目录。您可以手动下载软件包、验证 .changes 和 .dsc 文件中的 GPG 签名和 MD5 校验和,然后安装这些软件包。 6.12. 我要如何建立我自己的、可使用 apt 的软件仓库? 如果您构建了一些私用的 Debian 软件包,并且想要使用标准的 Debian 软件包管理工具安装它们,您可以建立您自己的、可使用 apt 的软件包仓     库。如果您想要共享您的 Debian 软件包,而它们还没有被 Debian 计划 分发,也可以如此做。建立的步骤可以在 Debian 维基 (https:// wiki.debian.org/HowToSetupADebianRepository) 上找到。 --------------------------------------------------------------------- ^[2] 在现在的 sid 还不存在的时候,FTP 站点的组织结构有一个重大缺 陷:它假设当一个架构在“不稳定版”中被创建的时候,这个架构一定会在     新的“稳定版”中发布。对于很多架构,情况并不是这样的,这就导致那些 目录在新版本发布的时候要被重新命名。这并不现实,因为重命名会消耗 大量带宽。 档案库的管理员几年来处理这一问题的方法是,将未发布的架构的二进制     文件放入一个特别的目录,名为“sid”。对于那些还未发布的架构,它们初 次发布的时候,会创建一个从当前的 stable 到 sid 的链接,之后就正常 地在 unstable 树中创建目录。这种组织结构让用户有些困惑。 随着软件包池的出现(参见第 6.10 节 “pool 目录里有什么?”),二进     制软件包开始被存放在 pool 中的标准位置,和发布版本无关,所以发布 一个新版本不再会大量占用镜像的带宽(不过在开发过程中会有很多小的 带宽占用)。     ^[3] dists/stable/main、dists/stable/contrib、dists/stable/ non-free,以及 dists/unstable/main/,等等。 ^[4] 历史上,软件包曾依照所处的发布版本,保存在 dists 目录的对应     的子目录下。这造成了各种问题,例如出现重大变更时,镜像站的带宽占 用会非常大。软件包池的出现修复了这个问题。     dists 目录至今仍用于存放 apt 等程序使用的索引文件。 第 7 章 Debian 软件包管理系统基础 本章涉及 Debian 包管理系统的一些底层细节。如果您主要是想了解相关     工具的用法,请跳过本章,并阅读第 8 章 Debian 软件包管理工具和/或 第 9 章使您的 Debian 系统保持最新状态。 7.1. 什么是 Debian 软件包?     软件包通常包括了实现一组互相关联的命令或功能所需要的一切文件。 Debian 软件包有两种类型: * 二进制包,包含了可执行文件、配置文件、man/info 页面、版权信息 ,以及其他文档。这些软件包使用一种 Debian 特有的存储格式进行 分发(参见第 7.2 节 “Debian 二进制软件包的格式是什么?”);它 们的扩展名通常是“.deb”。二进制包可以使用 Debian 的 dpkg 工具 进行解包(也许会通过 aptitude 等前端进行调用);更多细节请阅 读手册页。     * 源码包,包含了一个 .dsc 文件描述该源码包(包括下述文件的文件 名),一个 .orig.tar.gz 文件,使用经过 gzip 压缩的 tar 档案保 存未经修改的源代码,通常还包括一个 .diff.gz 文件,保存了 Debian 对源代码的修改。dpkg-source 工具可以打包和解包 Debian 源码包;更多细节请阅读手册页。(apt-get 程序可以用作 dpkg-source 的前端。) 软件包管理系统使用“依赖关系”安装软件,这些依赖由软件包的维护者小 心地指定。依赖关系在每个软件包含有的 control 文件里给出。例如,包 含 GNU C 编译器的软件包(gcc)“依赖”软件包 binutils,后者包含了链     接器和汇编器。如果用户在没有安装 binutils 的情况下尝试安装 gcc, 包管理系统(dpkg)会给出一条错误信息,提示它依赖 binutils,并停止 安装 gcc。(不过,如果用户坚持,这个功能可以被覆盖,参见 dpkg(8) )。阅读下方的第 7.9 节 “一个软件包依赖、推荐、建议、冲突、替代、 破坏或者提供另一个软件包是什么意思?”以了解更多信息。     Debian 的包管理工具可以用于: * 操作和管理软件包或其组成部分, * 管理软件包在本地覆盖的文件,     * 帮助开发者建立软件包档案库,以及 * 帮助用户从远程档案库站点安装软件包。 7.2. Debian 二进制软件包的格式是什么? Debian“软件包”,或称作 Debian 档案文件,包含了与特定的程序套件或     一组关联的程序有关的可执行文件、库和文档。正常情况下,Debian 档案 文件的文件名以 .deb 结尾。 Debian 二进制包格式的内部细节在 deb(5) 手册页中有描述。这一内部格     式可能会发生变化(在 Debian GNU/Linux 的各个主要版本之间),所以 如果您需要对 .deb 文件进行底层操作,请总是使用 dpkg-deb(1)。 7.3. 为什么 Debian 软件包的文件名这么长?     Debian 二进制包的文件名遵循以下约定:_<版本号>-_.deb     注意 foo 应当是软件包的名称。要检查特定的 Debian 档案文件(.deb 文件)的包名,可以使用以下方法之一: * 在 Debian 档案站点存储它的目录中检查“Packages”文件。该文件对 每个软件包都有一节简要的信息;每节的第一行就是正式的包名。     * 使用命令 dpkg --info foo_VVV-RRR_AAA.deb(其中 VVV、RRR 和 AAA 分别是该软件包的版本号、修订版本号和架构)。这将显示被解 包的档案文件的包名和其他一些信息。     VVV 部分是上游开发者指定的版本号。版本号没有固定的标准,所以可能 出现诸如“19990513”和“1.3.8pre1”之类迥异的格式。 RRR 部分是 Debian 修订版本号,由 Debian 开发者指定(如果用户自己 构建软件包,则由用户指定)。这一数字对应了 Debian 软件包的修订级     别,所以,一个新的修订级别通常意味着对该软件包的 Debian Makefile (debian/rules)、Debian 控制文件(debian/control)、安装或卸载脚 本(debian/p*),或者配置文件的修改。 AAA 部分给出了该软件包针对的处理器。常见的是 amd64,也就是 AMD64 、Intel 64 或者 VIA Nano 处理器。欲了解其他可能的值,请阅读第      6.7 节 “Debian 档案库中的那些目录都是干什么用的?”重温 Debian 档 案库的目录结构。欲了解详细信息,请阅读 dpkg-architecture(1) 手册 页中关于“Debian 架构”的描述。 7.4. 什么是 Debian 控制文件?     有关 Debian 控制文件的内容的细节,请阅读 Debian 政策手册的第 5 节 ,参见第 12.1 节 “Debian 系统中还能获得哪些有针对性的文档?”。     简短地说,Debian 软件包 hello 的控制文件样例如下: Package: hello Version: 2.9-2+deb8u1 Architecture: amd64 Maintainer: Santiago Vila Installed-Size: 145 Depends: libc6 (>= 2.14) Conflicts: hello-traditional Breaks: hello-debhelper (<< 2.9) Replaces: hello-debhelper (<< 2.9), hello-traditional     Section: devel Priority: optional Homepage: https://www.gnu.org/software/hello/ Description: example package based on GNU hello The GNU hello program produces a familiar, friendly greeting. It allows non-programmers to use a classic computer science tool which would otherwise be unavailable to them. . Seriously, though: this is an example of how to do a Debian package. It is the Debian version of the GNU Project's `hello world' program (which is itself an example for the GNU Project). Package 字段给出了软件包的名称。这个名字可以传递给软件包管理工具     ,以操作该软件包,且它通常与 Debian 档案文件的文件名的第一部分相 似,但不一定完全相同。 Version 字段给出了上游开发者的版本号以及(在最后一部分)Debian 软     件包的修订级别,在第 7.3 节 “为什么 Debian 软件包的文件名这么长? ”中有详细解释。     Architecture 字段指明了该二进制软件包编译时针对的处理器。     Depends 字段给出了安装该软件包前必须安装的软件包列表。 Installed-Size 指出了该软件包安装后会消耗多少磁盘空间。设置该字段     的目的是给软件包安装前端使用,以判断是否有足够的磁盘空间安装该程 序。     Section 行给出了该 Debian 软件包在 Debian 档案站点所存储的“分区” 。 Priority 指出了该软件包在安装时有多重要,这使得半智能的软件,如     apt 或 aptitude,能够将软件包分为各种类别,例如,可选择安装的软件 包。参见第 7.7 节 “什么是必备、必需、重要、标准、可选和额外软件包 ?”。     Maintainer 字段给出了当前负责维护该软件包的人的电子邮件地址。     Description 字段给出了该软件包功能的简短介绍。 要了解一个软件包可能拥有的全部字段的信息,请阅读 Debian 政策手册     ,第 5 节,“控制文件及其字段”,参见第 12.1 节 “Debian 系统中还能 获得哪些有针对性的文档?”。 7.5. 什么是 Debian conffile? conffile 是软件包管理系统在升级该软件包时不会覆盖的配置文件(通常     在 /etc 中)的列表。这确保了对这些文件的本地修改会被保留,因此是 一个非常重要的功能,使得正在运行中的系统的软件包可以被原地升级。     要准确得到升级时将会保留哪些文件的内容,请运行:     dpkg --status package     并查看“Conffiles:”的内容。 7.6. 什么是 Debian preinst、postinst、prerm,和 postrm 脚本?     这些文件是在软件包安装或卸载前后自动执行的可执行脚本。这些文件和 名为 control 的文件都属于 Debian 档案文件的“控制”部分。     各文件分别是: preinst 该脚本在所属的软件包从它的 Debian 档案文件(“.deb”)中被解压 之前执行。许多“preinst”脚本会停止和正在升级的软件包有关的服务 ,直至安装或升级完成(即在“postinst”脚本成功执行之后)。 postinst 该脚本在 foo 从它的 Debian 档案文件(“.deb”)中被解压之后执行 ,通常用于完成软件包 foo 所必需的配置。“postinst”脚本常常请求 用户输入,且/或在用户接受默认值的时候警告他们,应记得在需要时     回来重新配置软件包。许多“postinst”脚本会在新软件包的安装或升 级完成之后执行必要的命令,以启动或重新启动服务。 prerm 该脚本通常停止与软件包有关联的服务。它在删除与软件包相关的文 件之前执行。 postrm 该脚本通常修改与 foo 相关的链接或其他文件,且/或删除该软件包 创建的文件。(另请参见第 7.8 节 “什么是虚拟软件包?”。) 目前所有控制文件都可以在 /var/lib/dpkg/info 目录中找到。与软件包 foo 有关的文件会以“foo”打头,并且,如果适用的话,扩展名会是     “preinst”、“postinst”等。该目录中的 foo.list 文件列出了软件包 foo 安装的所有文件。(注意,这些文件的路径是一个 dpkg 内部变量;您不 应当依赖它。) 7.7. 什么是必备、必需、重要、标准、可选和额外软件包?     每一个 Debian 软件包都被发行版的维护者赋予了一个优先级,以辅助软 件包管理系统。优先级有: * 必需(Required):系统正常运行必需的软件包。 这包括了所有修复系统故障所必需的软件包。您不可以卸载这些软件 包,否则您的系统可能完全损坏,而您甚至可能无法使用 dpkg 来修 复它。只包含“必需”软件包的系统或许无法使用,但却足以让系统管 理员引导系统并安装更多软件。 * 重要(Important)软件包应当能在任何类 Unix 系统上找到。 其他能使系统正常运行或可以正常使用的软件包会出现在这里。这不 包括 Emacs 或 X 或 TeX,或任何其他的大型应用程序。这些软件包 仅能构成最基本的基础架构。 * 标准(Standard)软件包是任何 Linux 系统的标准组成部分,包含了 一个较小的,但功能不会太受限的字符模式的系统。它包含了可以用     来发送电子邮件(使用 mutt)以及从档案服务器下载文件的工具。 这是用户在其他选项都不选的情况下默认会安装的软件包。它不包括 很多大型应用程序,但确实包含了 Python 解释器和一些服务器软件 ,例如 OpenSSH(用于远程管理)和 Exim(用于发送邮件,虽然可以 配置为只发送本地邮件)。它也包含了一些许多用户觉得有用的通用 文档。 * 可选(Optional)软件包包括了所有在您不认识它们的情况下可能想 要安装的软件包,或者没有特殊系统需求的软件包。 这包括 X,完整的 TeX 发行版,以及很多应用程序。 * 额外(Extra):这里的软件包和其他更高优先级的软件包冲突,或者 只在您知道它们是什么的情况下可能有用,或者有其他特殊的系统需 求,因此不适合放在“可选”。 如果您进行一次 Debian 默认安装,所有优先级为标准或更高的软件包都     会被安装在您的系统上,如果您选择了预定义的任务软件包,您还会同时 获得更低优先级的软件包。     另外,有些软件包被标记为必备(Essential),因为系统必须要有它们才 能正常运行。软件包管理工具会拒绝卸载这些软件包。 7.8. 什么是虚拟软件包? 虚拟软件包是一个通用的名称,适合称呼一组软件包中的任意一个,所有 软件包都提供相似的基本功能。例如,konqueror 和 firefox-esr 都是网     页浏览器,所以应该能满足系统中所有需要安装浏览器才能工作或好用的 程序的依赖关系。所以我们说它们两个都提供了名为 www-browser 的“虚 包”。 类似地,exim4 和 sendmail 都提供了邮件客户端的功能。所以我们说它     们都提供了虚包“mail-transport-agent”。如果已经安装了其中的任意一 个,那么任何依赖 mail-transport-agent 的程序都会因为这一虚包的存 在而满足了依赖关系。 Debian 提供了一种机制,如果有提供同一虚包的多个软件包安装在系统上 ,系统管理员可以选择一个作为偏好的软件包。相关的命令是     update-alternatives,在第 11.11 节 “有些用户喜欢 mawk,有些喜欢 gawk;有些喜欢 vim,有些喜欢 elvis;有些喜欢 trn,有些喜欢 tin; Debian 如何支持这种多样性?”中有更详细的描述。 7.9. 一个软件包依赖、推荐、建议、冲突、替代、破坏或者提供另一个软件包 是什么意思?     Debian 软件包管理系统有一系列的软件包“依赖关系”,设计目的是(用单 一的标志)表明在给定系统中程序 A 能够脱离程序 B 独立运行的程度: * 如果运行软件包 A 前必须先安装软件包 B,那么 A 依赖(depend)B 。某些情况下,A 不仅依赖于 B,还依赖 B 的某个版本。这种情况下 ,依赖的版本号通常是一个下限,也就是 A 依赖于 B 的比某一指定 的版本更新的任何版本。 * 如果软件包维护者认为大多数用户在没有软件包 B 提供的功能的情况 下,就不会愿意安装软件包 A,那么 A 推荐(recommend)B。 * 如果软件包 B 包含的文件和软件包 A 的功能有关(并且往往会增强 该功能),那么 A 建议(suggest)B。 * 如果软件包 B 安装于系统上,软件包 A 就无法工作,那么 A 冲突(     conflict)B。最常见的情况是,A 包含的某些文件是对 B 的文件的 改进。“冲突”通常和“替代”同时出现。 * 如果软件包 B 的文件被软件包 A 删除或者(在某些情况下)覆盖, 那么 A 替代(replace)B。 * 如果软件包 A 和软件包 B 无法同时配置在同一系统上,那么 A 破坏 (break)B。如果其中一个软件包在系统中已经处于已安装且已配置 的状态,软件包管理系统会拒绝安装另外一个。 * 如果软件包 B 的所有文件和功能都已经整合进了软件包 A,那么 A 提供(provide)B。这个机制帮助磁盘空间有限的用户只安装软件包 A 中他们真正需要的部分。 关于以上术语的使用方式的更多细节,请阅读 Debian 政策手册,第 7.2     节,“Binary Dependencies”,并请参见第 12.1 节 “Debian 系统中还能 获得哪些有针对性的文档?”。 7.10. “预依赖”是什么意思? “预依赖(Pre-Depend)”是一种特殊的依赖关系。在多数情况下,dpkg 不 管软件包档案文件(即 .deb 文件)依赖的软件包存不存在,都会解压该     档案。简单地说,解压缩意味着 dpkg 将准备安装的软件包里的各个文件 解压到您的文件系统中,并放在正确的位置。如果该软件包依赖于您系统 中没有的其他软件包,dpkg 会拒绝完成安装进程(也就是拒绝执行“配置” 步骤),直到它依赖的软件包被安装。 但是,对于某些软件包,dpkg 甚至会在依赖关系解决前拒绝解压缩它们。 我们称这类软件包“预依赖”某些其他的软件包。Debian 利用这种机制完成     从 a.out 格式到 ELF 格式的升级,因为在这种情况下,软件包解压缩的 顺序是至关重要的。这一方法还能用于其他重大的升级,例如优先级为“必 需”且依赖 LibC 的软件包。     和以前一样,关于这一机制的更多细节可以在政策手册中找到。 7.11. 软件包状态中的未知、安装、卸载、清除和保留都是什么意思?     这些“想要”标志表示用户想要对软件包做什么(通过用户对 dpkg/apt/ aptitude 的直接调用表达出来)。     他们的意思分别是: * 未知(unknown):用户从未表示是否需要该软件包。 * 安装(install):用户希望该软件包被安装或升级。 * 卸载(remove):用户希望该软件包被卸载,但不希望删除任何已存     在的配置文件。 * 清除(purge):用户希望该软件包被完全卸载,包括配置文件。 * 保留(hold):用户不希望处理该软件包,也就是希望保持当前的版 本和当前的状态,无论是什么。 7.12. 如何将软件包设置为“保留”?     有三种方法将软件包设置为“保留”,分别是用 dpkg、apt 和 aptitude。     如果使用 dpkg,您需要先使用如下命令导出已选择的软件包:     dpkg --get-selections \* > selections.txt     然后编辑生成的文件 selections.txt,将您想要设为“保留”的软件包,例 如 libc6 所在的行,由:     libc6 install     改为:     libc6 hold     然后保存文件,并使用以下命令将它加载到 dpkg 数据库:     dpkg --set-selections < selections.txt     如果使用 apt,您可以使用以下命令将软件包设为“保留”:     apt-mark hold package_name     或使用以下命令取消“保留”:     apt-mark unhold package_name     如果使用 aptitude,您可以使用以下命令将软件包设为“保留”:     aptitude hold package_name     或使用以下命令取消“保留”:     aptitude unhold package_name 7.13. 如何安装源码包?     事实上,无法真正地“安装”Debian 源码包,它们仅仅是被解压到了您指定 的目录,用于构建它们可以产生的二进制包。 绝大多数分发二进制包的镜像站也同时分发源码包。如果您已经修改了     APT 的 sources.list(5) 并加入了适当的“deb-src”条目的话,您可以运 行以下命令轻松下载任何源码包:     apt-get source foo 为了帮助您构建源码包,Debian 源码包提供了所谓的“编译依赖(     build-dependency)”机制。这意味着源码包的维护者维护了一个构建该软 件包所必需的其他软件包的列表。您可以在编译源码包之前执行     apt-get build-dep foo     来看看它有多实用。 7.14. 如何从源码包构建二进制包?     推荐的方式是使用各种包装器工具。我们将用 devscripts 工具来演示如 何操作。如果您还没有安装它的话,请安装该软件包。     首先获取源码包:     apt-get source foo     并 cd 到源码树中:     cd foo-*     然后安装所需的编译依赖(如果有的话):     sudo apt-get build-dep foo     然后为您构建的版本指定一个独一无二的版本号(这样当 Debian 发布一 个新版本时,您就不会感到混乱):     dch -l local 'Blah blah blah'     最后构建您的软件包:     debuild -us -uc     如果一切顺利的话,您可以执行以下命令安装您的软件包:     sudo dpkg -i ../*.deb     如果您喜欢手动操作,而不想使用 devscripts,请遵循以下步骤:     您需要准备好 foo_*.dsc、foo_*.tar.gz 以及 foo_*.diff.gz 才能编译 源码(注意:有些 Debian 原生的软件包没有 .diff.gz 文件)。     准备好以上文件(第 7.13 节 “如何安装源码包?”)且安装 dpkg-dev 软 件包之后,执行以下命令:     dpkg-source -x foo_版本号-修订版本号.dsc     这会将源码包解压到一个名为 foo-版本号的目录。     如果您只想编译软件包,您可以 cd 到 foo-版本号目录,然后执行     dpkg-buildpackage -rfakeroot -b     以编译源码包(注意该命令需要 fakeroot 软件包),然后执行     dpkg -i ../foo_version-revision_arch.deb     以安装刚编译好的软件包。 7.15. 我应该如何创建自己的 Debian 软件包? 欲了解关于这一问题的详细信息,请阅读新维护者指南,可在 maint-guide 软件包或 https://www.debian.org/doc/devel-manuals#     maint-guide (https://www.debian.org/doc/devel-manuals# maint-guide) 找到,或者 Debian 维护者指南,可在 debmake-doc 软件 包或 https://www.debian.org/doc/devel-manuals#debmake-doc (https: //www.debian.org/doc/devel-manuals#debmake-doc) 找到。 第 8 章 Debian 软件包管理工具 8.1. Debian 提供了哪些软件包管理程序? 有多个工具可以管理 Debian 软件包,从图形或文本界面工具,到用于安     装软件包的底层工具。所有可用的工具都依赖底层的工具才能正常工作, 这里按照复杂度从高到低排序。     很重要的一个知识点是高层的软件包管理工具,例如 aptitude 或 synaptic,依赖 apt,而 apt 又依赖 dpkg 来管理系统中的软件包。 参见 Debian 参考手册 (https://www.debian.org/doc/manuals/ debian-reference/) 的第 2 章 Debian 软件包管理 (https://     www.debian.org/doc/manuals/debian-reference/ch02.en.html) 以获得 关于 Debian 软件包管理工具的更多信息。该文档有多种语言的翻译以及 不同的格式,参见 Debian 用户手册概览中的 Debian 参考手册条目 (https://www.debian.org/doc/user-manuals#quick-reference) 。 8.1.1. dpkg     这是主要的软件包管理程序。dpkg 支持很多选项。常用的有: * 列出所有选项:dpkg --help。 * 打印指定的软件包的控制文件(和其他信息):dpkg --info foo_VVV-RRR.deb。 * 安装软件包(包括解压缩和配置)到硬盘上的文件系统中:dpkg --install foo_VVV-RRR.deb。 * 解压缩(但不配置)Debian 档案到硬盘上的文件系统中:dpkg --unpack foo_VVV-RRR.deb。注意,经过这一操作的软件包不一定可 以使用;有些文件可能需要进一步配置才可以正常运行。这一命令会 卸载该程序的任何已经安装的版本,并执行软件包的 preinst(参见 第 7.6 节 “什么是 Debian preinst、postinst、prerm,和 postrm 脚本?”)脚本。     * 配置一个已经被解压缩的软件包:dpkg --configure foo。这一命令 会执行软件包的 postinst(参见第 7.6 节 “什么是 Debian preinst 、postinst、prerm,和 postrm 脚本?”)脚本,并执行一些其他操 作。这一命令也会更新软件包的 conffiles 列出的文件。注意 “configure”操作的参数是软件包名(例如 foo),不是 Debian 档案 文件名(例如 foo_VVV-RRR.deb)。 * 从 Debian 档案中解压一个名为“blurf”的文件(或一组名为“blurf*” 的文件):dpkg --fsys-tarfile foo_VVV-RRR.deb | tar -xf - 'blurf*'。 * 卸载一个软件包(但不包括配置文件):dpkg --remove foo。 * 卸载一个软件包(包括配置文件):dpkg --purge foo。 * 列出包含字符串(或正则表达式)“foo*”的软件包的安装状态:dpkg --list 'foo*'。 8.1.2. APT APT 是高级包管理工具(Advanced Package Tool),是 Debian 包管理系 统的一个高级界面,提供了 apt-get 程序。它提供了可以搜索和管理软件     包,以及查询软件包信息的命令行工具,以及访问 libapt-pkg 库的所有 功能的底层接口。更多信息,请参阅位于 /usr/share/doc/apt-doc/ guide.html/index.html 的用户指南(您需要先安装 apt-doc 软件包)。 从 Debian Jessie 开始,一些常用的 apt-get 和 apt-cache 命令在新的 apt 程序中有一个等价的形式。这意味着某些流行的命令,例如 apt-get     update、apt-get install、apt-get remove、apt-cache search 和 apt-cache show 可以简单地通过 apt 进行调用,比如 apt update、apt install、apt remove、apt search 和 apt show。以下是新旧命令的概览 : apt-get update -> apt update apt-get upgrade -> apt upgrade apt-get dist-upgrade -> apt full-upgrade apt-get install 软件包 -> apt install 软件包     apt-get remove 软件包 -> apt remove 软件包 apt-get autoremove -> apt autoremove apt-cache search 字符串 -> apt search 字符串 apt-cache policy 软件包 -> apt list -a 软件包 apt-cache show 软件包 -> apt show 软件包 apt-cache showpkg 软件包 -> apt show -a 软件包 apt 工具整合了 apt-get 和 apt-cache 的功能,并且默认具有更漂亮的     彩色输出格式,让人眼看起来更舒服。如果要用于脚本或者需要使用高级 用法,则仍然建议或必须使用 apt-get。 apt-get 提供了一种简单的方式来使用命令行从多个来源获取和安装软件     包。和 dpkg 不同,apt-get 不能解析 .deb 文件,它使用包名来安装软 件包,且只能从 /etc/apt/sources.list 指定的源里安装 .deb 文件。 apt-get 从配置的源中下载完 .deb 档案^[5]后会直接调用 dpkg。     使用 apt-get 的常见方式有: * 要更新您系统中的软件包列表,您可以运行: apt update (您应该定期执行该命令以更新软件包列表) * 要安装软件包 foo 和它的全部依赖,请运行: apt install foo * 要从您的系统中卸载软件包 foo,请运行: apt remove foo * 要从您的系统中卸载软件包 foo 和它的配置文件,请运行: apt purge foo     * 要列出所有可以更新到新版本的软件包,请运行: apt list --upgradable * 要升级您系统中的所有软件包(但不安装额外的软件包或卸载软件包 ),请运行: apt upgrade * 要升级您系统中的所有软件包,并且在必要的时候安装额外的软件包 或卸载软件包,请运行: apt full-upgrade (使用 upgrade 命令升级时,如果为了满足新的依赖关系需要安装额 外的软件包,则会保留软件包的旧版本。full-upgrade 命令则没有那 么保守。)     注意您需要以 root 用户登录才可以执行修改软件包的命令。     注意 apt-get 现在默认会安装推荐的软件包,另外由于它的鲁棒性,它也 是在命令行安装系统和进行重大系统升级时首选的软件包管理程序。 apt 工具集也包含了 apt-cache 工具,可以查询软件包列表。您可以用它     在软件包管理系统中通过简单的文本或正则表达式查询,或者依赖关系查 询来找出提供特定功能的软件包。使用 apt-cache 的常见方式有: * 要找出描述中包含词语的软件包: apt search 词语 * 要打印软件包的详细信息: apt show 软件包     * 要打印软件包的依赖: apt-cache depends 软件包 * 要打印软件包各可用版本的详细信息,以及反向依赖它的软件包: apt-cache showpkg 软件包 欲了解更多信息,请安装 apt 软件包,并阅读 apt(8)、apt-get(8)、     sources.list(5),并安装 apt-doc 软件包,并阅读 /usr/share/doc/ apt-doc/guide.html/index.html。 8.1.3. aptitude aptitude 是 Debian GNU/Linux 系统的一个软件包管理器,是 apt 包管     理器的一个前端。aptitude 是一个文本界面,使用 curses 库。可以通过 视觉界面或命令行执行操作。     aptitude 让用户可以方便快捷地完成软件包管理任务。它允许用户查看软 件包列表,并执行软件包管理任务,例如安装、升级和卸载软件包。     aptitude 提供了 apt-get 的功能,以及许多额外的功能: * aptitude 可以方便地访问软件包的所有版本。 * aptitude 将过时的软件包列于“过期的和在本地创建的软件包”下,使 跟踪这些软件包变得十分容易。 * aptitude 包含了一个强大的搜索软件包和限制所显示的软件包的机制 。熟悉 mutt 的用户会很容易上手,因为 mutt 是该机制中表达式的     语法的来源。 * aptitude 可以用于安装预定义的任务。更多信息,请见第 8.1.5 节 “tasksel”。 * aptitude 在全屏模式下内置 su 功能,所以可以以普通用户执行。当 确实需要管理员权限时,它会调用 su(并询问 root 密码,如果有的 话)。 您可以使用 aptitude 的视觉界面(只需简单地运行 aptitude),或者直     接从命令行调用。命令行语法和 apt-get 很相似。例如,要安装 foo 软 件包,您可以运行 aptitude install foo。     注意 aptitude 是在命令行进行日常软件包管理的首选程序。     更多信息,请阅读 aptitude(8) 手册页,并安装 aptitude-doc 软件包。 8.1.4. synaptic synaptic 是一个图形化的软件包管理器。它能够以用户友好的方式安装、 升级和卸载软件包。除了提供 aptitude 提供的大多数功能之外,它的功     能还包括编辑正在使用的软件仓库列表,以及浏览和软件包相关的所有文 档。访问 Synaptic 网站 (https://www.nongnu.org/synaptic/) 以获得 更多信息。 8.1.5. tasksel 当您希望完成特定的任务时,寻找符合您需要的软件包的组合可能会很困     难。Debian 开发者定义了不同的任务(task),它指的是与特定的任务有 关的 Debian 软件包的组合。可以使用 tasksel 或 aptitude 安装任务。 通常,Debian 安装程序会自动安装与标准系统和桌面环境有关的任务。安 装的桌面环境和 CD/DVD 有关,一般是 GNOME 桌面(gnome-desktop 任务     )。另外,根据您在安装过程中的选择,可能还会自动安装一些任务。比 如说,如果您选择了除英语以外的语言,则还会自动安装和该语言有关的 任务。 8.1.6. 其他软件包管理工具 8.1.6.1. dpkg-deb     该程序可以处理 Debian 档案(.deb)文件。常见的用法有: * 列出所有选项:dpkg-deb --help。 * 列出 Debian 档案文件中包含的文件:dpkg-deb --contents foo_VVV-RRR.deb。     * 解压 Debian 档案文件中的文件到用户指定的目录:dpkg-deb --extract foo_VVV-RRR.deb tmp 解压 foo_VVV-RRR.deb 中的所有文 件到 tmp/ 目录。这样可以在不将软件包安装到根文件系统的情况下 ,方便地在临时目录查看软件包的内容。 * 解压软件包的控制文件:dpkg-deb --control foo_VVV-RRR.deb tmp 。     注意仅使用 dpkg-deb --extract 解压的软件包并没有被正确安装,您应 当使用 dpkg --install 进行安装。     更多信息请见手册页 dpkg-deb(1)。 8.2. Debian 声称可以更新正在运行的程序,这是怎么做到的?     Debian GNU/Linux 系统的内核(文件系统)支持替换正在使用的文件。 我们也提供了一个名为 start-stop-daemon 的程序,可以在运行级别改变     时(例如从多用户模式切换到单用户模式,或者关机时)启动或停止守护 进程。该程序也会在安装含有守护进程的软件包时被安装脚本执行,以停 止正在运行的守护进程,并在需要时重启它们。 8.3. 怎么知道 Debian 系统中安装了哪些软件包?     要知道 Debian 系统中安装的所有软件包的状态,请执行     dpkg --list     这会对每个软件包打印一行概览,包括两个字母的状态符号(在表头中有 解释)、软件包名、已安装的版本,以及一行简短的描述。     欲了解包名与以“foo”开头的任意模式匹配的软件包的状态,请执行:     dpkg --list 'foo*'     要获得特定软件包的更详细报告,请执行:     dpkg --status 软件包名 8.4. 如何显示已安装的软件包包含的文件?     要列出已安装的软件包 foo 提供的所有文件,请执行     dpkg --listfiles foo     注意,不会显示软件包的安装脚本所创建的文件。 8.5. 如何查出一个特定的文件属于哪个软件包?     要获得名为 foo 的文件所属的软件包,可选择以下命令中的一个: * dpkg --search foo 这会在已安装的软件包中搜索 foo。(目前,该命令等价于在 /var/ lib/dpkg/info/ 目录中所有扩展名为 .list 的文件里进行搜索,并 调整输出,以打印软件包名和文件路径。) 另一个更快的方法是使用 dlocate 工具。 dlocate -S foo * zgrep foo Contents-ARCH.gz 这会找出所有完整路径名中含有子串 foo 的文件。文件 Contents-ARCH.gz(其中 ARCH 为所需的架构)位于 Debian 档案站     点(即 /debian/dists/bullseye 中)的主要软件包目录(main、 non-free、contrib)内。一个 Contents 文件仅包含它所处的子目录 树的软件包。所以,用户可能需要搜索不止一个 Contents 文件,才 能找到含有文件 foo 的软件包。 这个方法相比于 dpkg --search 的优点是可以找到未在您的系统上安 装的软件包的文件。 * apt-file search foo 如果您安装了 apt-file 软件包,和上一个类似,它可以找到完整路 径名中含有子串或正则表达式 foo 的文件。该命令相比于上一个的优 点是不需要手动下载 Contents-ARCH.gz 文件,因为当您(以 root 用户)执行 apt-file update 时,它会自动对 /etc/apt/ sources.list 中定义的所有软件源执行该操作。 8.6. 为什么我卸载“foo”的时候没有卸载“foo-data”?怎样确保旧的、不再使 用的库软件包被卸载? 有些软件包被分割成程序(“foo”)和数据(“foo-data”)(或者“foo”和     “foo-doc”)。Debian 中的许多游戏、多媒体应用和词典都是这种情况。 这样做的原因是有的用户可能只想访问原始数据,而不想安装程序,或者 是因为有的程序不需要数据就可以运行,所以“foo-data”是可选的。 对于库而言,也有类似的状况:通常,安装这些库是因为有个包含应用程 序的软件包依赖它。当应用程序软件包被卸载时,库软件包可能留在系统     中。或者:比如应用程序软件包不再依赖 libdb4.2,而开始依赖 libdb4.3 时,在升级该应用程序软件包时,libdb4.2 可能仍留在系统中 。 在这些情况下,“foo-data”不依赖“foo”,所以当您卸载“foo”软件包时, 大多数软件包管理工具不会卸载“foo-data”。库软件包也是同理。必须这     样处理以避免循环依赖。然而,如果您使用的软件包管理工具是 apt-get (参见第 8.1.2 节 “APT”)或 aptitude(参见第 8.1.3 节 “aptitude” ),它们会跟踪自动安装的软件包,并在没有其他软件包使用它们的情况 下,允许您卸载这些软件包。 ---------------------------------------------------------------------     ^[5] 注意在其他软件包管理系统中也有这一工具的移植,比如红帽软件包 管理器,又叫做 rpm。 第 9 章 使您的 Debian 系统保持最新状态 Debian 的目标之一是提供一致的升级路径和安全的升级过程。我们尽力让     用户可以平滑地升级到新版本。如果升级过程有一些重要的注意事项,软 件包会提示用户,并且常常会对可能出现的问题提供解决方案。 您也应该阅读发行说明,里面描述了特定的升级过程的细节。发行说明可     以在 Debian 网站的 https://www.debian.org/releases/stable/ releasenotes (https://www.debian.org/releases/stable/ releasenotes) 阅读,也可以在 Debian CD、DVD 和蓝光光碟中找到。 9.1. 如何使 Debian 系统保持最新? 最直接的方法是进入 Debian 档案站点,在各种目录中找到需要的文件, 下载它,最后用 dpkg 进行安装。注意 dpkg 会原地安装升级文件,即使     系统正在运行。有时候,一个软件包的新版本会依赖另外一个软件包的新 版本,这种情况下,安装就会失败,除非已经安装了所依赖的那个软件包 。 很多人觉得这种方式太耗时间了,因为 Debian 更新得实在太快——每周一     般有数十个或更多的软件包被上传。新版本发布前这个数字可能更大。为 了处理大量更新的软件包,许多人倾向于使用更加自动化的方法。有多个 不同的软件包可以实现这一目的: 9.1.1. aptitude     aptitude 是 Debian 系统推荐的软件包管理器,在第 8.1.3 节 “aptitude”中有描述。 在使用 aptitude 进行升级之前,您需要编辑 /etc/apt/sources.list 以     完成设置过程。如果您希望升级到 Debian 的最新稳定版本,您可以使用 类似如下的软件源:     http://ftp.cn.debian.org/debian stable main contrib 您可以将 ftp.cn.debian.org (中国的默认镜像站)替换成离您更近的、     更快的 Debian 镜像站。参见位于 https://www.debian.org/mirror/list (https://www.debian.org/mirror/list) 的镜像列表以获得更多信息。 或者您也可以使用 httpredir.debian.org 重定向服务,它的设计目标是     解决选择 Debian 镜像的难题。它使用用户的地理位置信息和其他信息, 以选择下载文件的最佳镜像。要使用它,请使用类似如下的软件源:     http://httpredir.debian.org/debian stable main contrib     更多信息请阅读 sources.list(5) 手册页。     要从命令行升级系统,请运行     aptitude update     然后运行     aptitude full-upgrade     回答可能出现的问题,然后您的系统就会被升级。 注意 aptitude 不是进行 Debian GNU/Linux 大版本升级的推荐工具。这     种情况请使用 apt-get。进行大版本升级,请先阅读发行说明 (https:// www.debian.org/releases/stable/releasenotes) 。该文档详细描述了从 上一个大版本升级的推荐步骤,以及升级前需要考虑的已知问题。     更多详细信息,请阅读 aptitude(8) 手册页,以及 /usr/share/aptitude /README 文件。 9.1.2. apt-get 和 apt-cdrom     aptitude 的一个替代品是 apt-get,它是基于 APT 的命令行工具(之前 在第 8.1.2 节 “APT”介绍过)。     apt-get 是基于 APT 的命令行软件包管理工具,提供了安装和升级软件包 的简单而安全的方式。     要使用 apt-get,请编辑 /etc/apt/sources.list 文件完成设置,就像第  9.1.1 节 “aptitude”中一样。     然后执行     apt-get update     然后运行     apt-get dist-upgrade     回答任何可能出现的问题,然后您的系统就会被升级。也请阅读 apt-get (8) 手册页,以及第 8.1.2 节 “APT”。     如果您希望使用 CD/DVD/BD 来安装软件包,您可以使用 apt-cdrom。更多 详情,请阅读发行说明中的“从光学介质中添加 APT 源”一节。 请注意,当您获取和安装软件包时,在 /var 目录中可能会保留这些软件     包。为了防止您的分区空间不足,记得使用 apt-get clean 和 apt-get autoclean 删除多余的文件,或者把它们移动到其他地方(提示:使用 apt-move)。 9.2. 必须进入单用户模式才能升级软件包吗? 不是。即使是在正在运行的系统中,软件包也可以原地升级。Debian 有一     个 start-stop-daemon 程序,在软件包升级时,如有必要,会调用它来停 止和重启正在运行的进程。 9.3. 我需要在磁盘上保留所有的 .deb 档案文件吗? 不需要。如果您已经下载了这些文件到您的磁盘上,那么在您安装完软件     包后,您就可以从系统中删除这些文件,例如,可以执行 aptitude clean 。 9.4. 我应该如何保存关于安装了哪些软件包的日志?我想知道什么时候进行了 安装和卸载,以及安装和卸载了哪些软件包!     dpkg 的 --log 选项使 dpkg 记录软件包的状态改变和动作。它既记录对 dpkg 的调用(例如     2005-12-30 18:10:33 install hello 1.3.18 2.1.1-4     ),也记录结果(例如     2005-12-30 18:10:35 status installed hello 2.1.1-4     )。如果您想记录所有的 dpkg 调用(包括来自前端,如 aptitude 的调 用),您可以将     log /var/log/dpkg.log 添加到您的 /etc/dpkg/dpkg.cfg 文件中。请确保配置了日志文件的周期     性滚动。如果您使用 logrotate,您可以创建 /etc/logrotate.d/dpkg 文 件,内容为 /var/log/dpkg {     missingok notifempty }     关于 dpkg 日志的更多信息可以在 dpkg(1) 手册页中找到。     aptitude 会将它打算进行的软件包安装、卸载和升级操作记录到 /var/ log/aptitude 中。注意这些操作的结果不会被记录到该文件!     记录您的操作的另一种方式是在 script(1) 程序中进行您的软件包管理会 话。 9.5. 可以自动升级系统吗?     可以。您可以使用 cron-apt;这一工具使用 cron 任务定期升级系统。它 默认只更新软件包列表并下载新的软件包,但不安装它们。     注意:不建议在 testing 或 unstable 系统上配置软件包的自动升级,因 为有可能出现意料之外的行为,或者在不通知您的情况下卸载软件包。 9.6. 我有多台机器;我怎样才能只下载一次更新?     如果您的网络上有多台 Debian 机器,您可以使用 apt-cacher 确保您所 有的 Debian 系统处于最新状态。 apt-cacher 能减少对 Debian 镜像站点的带宽需求,原理是从后端限制     Packages、Releases 和 Sources 文件的更新频率,且任何文件只下载一 次,不管实际向代理请求了几次。apt-cacher 会基于经过代理的请求自动 构建一个 Debian HTTP 镜像。     当然,如果您已经在使用标准的缓存代理,且您的所有系统都已经配置好 使用它,您也能得到一样的结果。 第 10 章 Debian 和内核 10.1. 我可以安装和编译未经过 Debian 微调的内核吗?     可以。 只有一个常见的坑:Debian C 运行库是用最新稳定版的内核头文件编译的 。如果您正好需要使用比稳定版更新的内核头文件来编译程序,那您要么     需要升级包含内核头文件的软件包(linux-libc-dev),要么使用已解压 的新版内核源码树中的头文件。也就是说,如果内核源代码位于 /usr/src /linux,那您需要在编译选项中加入 -I/usr/src/linux/include/。 10.2. Debian 提供了哪些工具来编译定制内核?     建议想要(或必须)编译定制内核的用户使用较新版本内核编译系统中的 “Debian 软件包”目标。在配置完内核后,只需要运行以下命令:     make deb-pkg     就会在内核源码树的上一级目录中创建一个新的内核软件包,可以用 dpkg -i 来安装它。 您需要单独从您喜欢的 Linux 档案站点下载最新版内核(或您选择的版本     )的源代码,除非有对应的 linux-source-版本软件包(其中版本表示内 核版本)。 10.3. Debian 提供了哪些特别的机制来处理内核模块?     /etc/modules 配置文件包含了在引导时需要手动加载的模块列表。然而, 很少需要编辑该文件。     其他模块配置文件位于 /etc/modprobe.d/ 目录。关于这些文件的格式的 更多信息可以在 modprobe.conf(5) 手册页找到。 10.4. 我是否可以安全地卸载旧的内核软件包,如果可以,应该怎么做?     可以。linux-image-NNN.prerm 脚本会检查您将要卸载的内核是否是正在 运行的内核。因此,您可以使用以下命令卸载不需要的内核映像软件包:     dpkg --purge linux-image-NNN     (当然,请将 NNN 替换为您的内核版本号和修订版本号) 10.5. 在哪里可以获得关于 Debian 的 Linux 软件包的更多信息?     更多信息,请参见 Debian Linux Kernel Handbook (https:// kernel-team.pages.debian.net/kernel-handbook/) 。 第 11 章 定制您的 Debian GNU/Linux 系统 11.1. 如何确保所有程序使用相同的纸张大小?     安装 libpaper1 软件包,它会询问您整个系统默认的纸张大小。这个设置 会被保存在 /etc/papersize。     您可以使用 PAPERSIZE 环境变量覆盖纸张大小设置。详情请见 papersize (5) 手册页。 11.2. 如何在不牺牲安全性的情况下提供对硬件外设的访问?     许多在 /dev 目录下的设备文件属于预定义的用户组。例如,/dev/sr0 属 于 cdrom 组。     如果您希望某个用户能访问其中某个设备,只需要将该用户加入该设备所 属的组,例如:     adduser 用户 组     使用这种方式可以不用更改设备文件的权限。     如果您是在用户的 shell 或者图形界面环境中执行该命令的,您需要注销 再登录才能成为该组的有效成员。要检查您属于哪些组,请执行 groups。 注意,自从引入 udev 之后,如果您更改了硬件外设的权限,这些权限可     能在系统启动时被更改;如果恰好是您关心的硬件外设出现了这种情况, 您需要修改 /etc/udev 中的规则。 11.3. 如何用 Debian 的方式在启动时加载一个控制台字体?     kbd 软件包支持这一操作,请编辑 /etc/kbd/config 文件。 11.4. 如何配置 X11 程序的默认设置? Debian 的 X 应用程序会将应用程序资源数据安装到 /etc/X11/     app-defaults/ 目录。如果您想要更改 X 应用程序的全局配置,请更改这 些文件。它们已被标记为配置文件,所以它们的内容在升级过程中会被保 留。 11.5. Debian 系统是如何引导的? 正如所有 Unix 系统一样,Debian 的引导以执行 init 程序为起点。和大     多数 Linux 发行版一样,Debian 系统默认使用 systemd 作为 init 的实 现。传统的 System-V 风格的 init 和其他方案也受支持。^[6] 为了控制服务启动的顺序,传统的 System-V 风格的 Unix 系统使用运行     级别(runlevel)。这一概念在 systemd 中被目标(target)所取代。要 显示系统引导时 systemd 的默认目标,请执行     systemctl get-default 在引导过程中,systemd 会启动默认的目标文件 /lib/systemd/system/ default.target 里列出的服务或其他目标。在 Debian 软件包安装过程中     ,会安装这些服务和目标的文件,并启用(enable)这些服务。如果您不 希望某个特定的服务在开机时被启动,您不必卸载对应的软件包,而是可 以运行     systemctl disable service.service     请使用在 /lib/systemd/system 中安装的服务文件的文件名(通常基于软 件包的包名)。 服务文件 /lib/systemd/system/rc-local.service 为在引导后执行 /etc     /rc.local 文件中的自定义脚本提供了一种简单的方式,这和运行 System-V 风格的 init 的 Debian 系统相似。注意:如果该脚本试图与控 制台交互,比如询问用户密码或清空屏幕,脚本的执行将会失败。     您可以用以下命令检查任意服务的状态     service package status     。要启动或停止服务,请执行     service package start     以及     service package stop 。service 命令可以在任何 Debian 系统支持的 init 系统中使用,而不     仅仅是 systemd。不过,如果您希望能在任何支持 systemd 的 Linux 系 统上执行同一个命令,要检查状态,您可以执行     systemctl status package.service     来获得相同的信息。     欲了解关于 Debian 中的 systemd 的更多信息,请阅读 https:// wiki.debian.org/systemd (https://wiki.debian.org/systemd) 。 11.6. 那么 Debian 使用传统的 System V init 时是什么情况? 通过安装 sysvinit-core 软件包,Debian 支持使用传统的 System V init 引导系统。System V init 的配置文件(也就是 /etc/inittab)指     定了启动时执行的第一个脚本应为 /etc/init.d/rcS。该脚本以 fork 产 生子进程的方式运行 /etc/rcS.d/ 里面的全部脚本,以进行初始化工作, 例如检查和挂载文件系统、加载模块、启动网络服务、设置时钟,以及其 他初始化工作。 完成引导过程后,init 会执行默认运行级别所指定的目录的启动脚本(默     认运行级别通过 /etc/inittab 的 id 条目给出)。和大多数兼容 System V 的 Unix 一样,Linux 有 7 个运行级别: * 0(关闭系统), * 1(单用户模式),     * 2 到 5(各种多用户模式),以及 * 6(重启系统)。     Debian 系统默认的 id=2,意味着进入多用户模式时,默认的运行级别是 “2”,所以会运行 /etc/rc2.d/ 中的脚本。 Debian 可利用 /etc/init.d/ 中每个脚本的 LSB 文件头,通过 insserv     使用基于依赖关系的启动顺序,也可以通过使用 startpar 进行并行启动 以加快启动速度。 /etc/rcN.d/ 中任何目录的脚本都只是链接到 /etc/init.d/ 中的脚本的 符号链接。不过,/etc/rcN.d/ 目录中每一个文件的名称都表明了 /etc/     init.d/ 中的脚本的执行方式。准确地说,在进入任何运行级别前,所有 以“K”开头的脚本都会被执行;这些脚本杀死(kill)服务。然后所有以 “S”开头的脚本会被执行;这些脚本启动(start)服务。“K”或“S”后面的 两位数表示脚本执行的顺序。数字小的脚本先执行。 这种方式之所以可行,是因为 /etc/init.d/ 中的脚本都接受一个参数,     它可以为“start”、“stop”、“reload”、“restart”或者“force-reload”, 然后就将执行参数所指定的任务。即使系统已经启动,也可以使用这些脚 本来控制各种进程。     例如,命令     /etc/init.d/sendmail reload     中的“reload”会给 sendmail 守护进程发送一个信号,让它重新读取配置 文件。     注意,不要使用 invoke-rc.d 来执行 /etc/init.d/ 中的脚本,而应当使 用 service。 11.7. 还有其他引导 Debian 系统的方式吗? 如果您喜欢 System V init,但不喜欢 /etc/rc?.d/* 链接,您可以安装     file-rc 软件包。该软件包会把这些链接转换成单一的配置文件 /etc/ runlevel.conf。     如果您既不喜欢 System V,也不喜欢 systemd,您可能会喜欢 openrc 或 者 runit 或者 daemontools。 11.8. 软件包管理系统是如何处理含有其他软件包的配置文件的软件包的? 举个例子,有些用户希望通过安装一组 Debian 软件包,再安装一个本地 生成的、含有配置文件的软件包的方式,来搭建一个新的服务器。这通常     不是个好主意,因为如果配置文件在另一个软件包里,dpkg 就不知道这些 配置文件的存在,所以在这组软件包中的某一个被升级时,可能会写入有 冲突的配置文件。 替代方案是,创建一个本地的软件包,用来编辑相关的软件包的配置文件     。这样 dpkg 和软件包管理系统的其他组件就会认为这些文件已经被本地 的“系统管理员”编辑,因此在相关软件包被升级时就不会尝试覆盖这些文 件。 11.9. 如何覆盖软件包安装的文件,以使用一个不同的版本?     假设一位系统管理员或本地用户希望使用程序“login-local”,而不是 Debian 的 login 软件包提供的“login”程序。     请不要:     * 用 login-local 覆盖 /bin/login。     软件包管理系统不会知道这一改变,所以当 login(或任何提供 /bin/ login 的软件包)被安装或升级时,就会直接覆盖您自己的 /bin/login。     作为替代, * 执行: dpkg-divert --divert /bin/login.debian /bin/login 以使今后安装 Debian 的 login 软件包时,对 /bin/login 文件的写     入都改为写入到文件 /bin/login.debian。 * 然后执行: cp login-local /bin/login 来将您本地编译的程序移动到正确的位置。     运行 dpkg-divert --list 以查看您的系统中当前生效的转移(diversion )。     详细信息可阅读 dpkg-divert(8) 手册页。 11.10. 如何把我在本地编译的软件包加入到软件包管理系统已知的软件包的列 表中?     执行命令:     dpkg-scanpackages 二进制目录 覆盖文件 [路径前缀] > my_Packages     其中: * “二进制目录”是 Debian 档案文件(通常扩展名为“.deb”)所在的目 录。 * “覆盖文件”是一个由发行版维护者维护的文件,对于“main”发行版而     言,它通常位于 Debian 档案站点的 indices/override.main.gz。对 于本地软件包,可以忽略这一项。 * “路径前缀”是一个可选的字符串,可以添加到生成的 my_Packages 文 件之前。     构建好文件 my_Packages 之后,使用以下命令将这一文件告诉软件包管理 系统:     dpkg --merge-avail my_Packages     如果您使用 APT,您也可以将本地仓库添加到您的 sources.list(5) 文件 中。 11.11. 有些用户喜欢 mawk,有些喜欢 gawk;有些喜欢 vim,有些喜欢 elvis ;有些喜欢 trn,有些喜欢 tin;Debian 如何支持这种多样性? 有些情况下,两个软件包提供同一个程序的不同版本,两个版本提供相同     的核心功能。用户可能出于习惯,或者因为其中一个软件包的用户界面比 另一个更讨人喜欢,而偏向于使用其中一个。同一个系统上的其他用户可 能会选择另一个版本。 Debian 使用一种“虚拟”软件包系统,以在有两个或更多的工具提供相同的     基础功能时,允许系统管理员选择(或者让用户选择)他们最喜欢的一个 ,同时又能在不指定一个特定的软件包的情况下满足软件包的依赖关系要 求。 例如,系统中可能有两个不同版本的新闻阅读器。新闻服务器软件包可能“ 推荐”在系统中安装至少一个新闻阅读器,但是选择 tin 还是 trn 则取决     于每一位用户。这一需求是通过让 tin 和 trn 软件包都提供虚包 news-reader 来实现的。调用哪一个程序是通过文件名是虚包名的软链接 /etc/alternatives/news-reader 指向所选择的文件,如 /usr/bin/trn, 来决定的。 只靠一个软链接是不足以支持替代品程序的所有使用场景的;正常情况下     ,手册页,以及其他支持文件也必须要选择好。Perl 脚本 update-alternatives 提供了一种简单的方式,来确保与特定的软件包相 关的所有文件都被选择为系统默认。     例如,要查看哪些可执行文件提供了“x-window-manager”,请执行:     update-alternatives --display x-window-manager     如果您想更改它,请执行:     update-alternatives --config x-window-manager     然后按屏幕上的提示操作(基本上就是按下您更喜欢的选项旁边的数字) 。 如果一个软件包因为某些原因不将自己注册为窗口管理器(如果这是个错     误,请向我们报告缺陷),或者您使用 /usr/local 目录中的窗口管理器 ,则屏幕上不会出现您喜欢的选项。您可以通过命令行选项更新链接,比 如:     update-alternatives --install /usr/bin/x-window-manager \ x-window-manager /usr/local/bin/wmaker-cvs 50 “install”选项的第一个参数是指向 /etc/alternatives/名称的符号链接     ,其中“名称”是第二个参数。第三个参数是 /etc/alternatives/名称应当 指向的程序,第四个参数是优先级(越大表示该替代品越有可能被自动选 择)。     要删除您所添加的替代品,只需要执行:     update-alternatives --remove x-window-manager /usr/local/bin/wmaker-cvs --------------------------------------------------------------------- ^[6] 2014 年,Debian 将默认的 init 系统从 System V init 改为了 systemd。2015 年 4 月发布的 Debian 8 “jessie”是首个将 systemd 作 为默认 init 的版本。这一变更涉及到 Debian 技术委员会的四个决定 (https://www.debian.org/devel/tech-ctte#status) :缺陷 #727708 (https://lists.debian.org/20140211193904.GX24404@rzlab.ucr.edu) 2014-02-11:“委员会决定 jessie 的 Linux 架构的默认 init 系统应当 为 systemd。”缺陷 #746715 (https://lists.debian.org/     20140801023630.GF12356@teltox.donarmstrong.com) 2014-08-01:“技术 委员会期望维护者继续支持多种现有的 init 系统”,并合并合理的贡献。 缺陷 #746578 (https://lists.debian.org/ 20141116001628.GO32192@teltox.donarmstrong.com) 2014-11-15:“委员 会决定 systemd-shim 应当为 libpam-systemd 替代依赖关系列表的第一 个,而不是 systemd-sysv。”这一决定使继续运行非 systemd 的 Debian 系统变得更加容易。缺陷 #762194 (https://lists.debian.org/ 21592.61064.527547.410074@chiark.greenend.org.uk) 2017-11-04:“关 于升级时自动切换 init 系统” 第 12 章 获得对 Debian GNU/Linux 的支持 12.1. Debian 系统中还能获得哪些有针对性的文档? * 最新版本的安装指南:参见 https://www.debian.org/releases/ stable/installmanual (https://www.debian.org/releases/stable/ installmanual) 。 * Debian GNU/Linux 参考手册以 shell 命令为例子,涵盖了系统管理 的许多方面。该手册对于从系统管理到编程的许多主题都提供了基本 的教程、提示,以及其他信息。 可以安装 debian-reference 软件包获得它,或者访问 https:// www.debian.org/doc/user-manuals#quick-reference (https:// www.debian.org/doc/user-manuals#quick-reference) 。 * Debian 政策文档说明了发行版的政策要求,也就是 Debian 档案的结 构和内容、操作系统的一些设计问题等。它也包含了每个软件包被收 录进发行版所必须满足的技术要求,并说明了 Debian 二进制包和源 码包的基本技术特点。 可以安装 debian-policy 软件包获得它,或者访问 https:// www.debian.org/doc/devel-manuals#policy (https:// www.debian.org/doc/devel-manuals#policy) 。 * Debian 文档计划编写的文档。它位于 https://www.debian.org/doc (https://www.debian.org/doc) ,包括了 Debian GNU/Linux 系统的 用户手册、管理员手册和安全手册。     * 已安装的 Debian 软件包的文档:大多数软件包都有文档,位于 /usr /share/doc/软件包。 * Linux 计划的文档:Debian 软件包 doc-linux 包含了 Linux 文档计 划 (http://www.tldp.org/) 的所有 HOWTO 和迷你 HOWTO 文档的最 新版本。 * Unix 风格的“man”手册页:大多数命令都有以原版 Unix “man”文件风 格写成的手册页。例如,要查看“ls”命令的手册页,请运行 man ls。 运行 man man 以阅读关于查找和查看手册页的更多信息。 Debian 的新用户需要注意,您需要安装下列软件包才能获得大多数通 用系统命令的“man”手册页: + man-db,它包含了 man 程序本身,以及处理手册页的其他程序。 + manpages,它包含了系统的手册页。(参见第 5.9 节 “Debian 对非英语语言的支持如何?”) * GNU 风格的“info”手册页:许多命令,尤其是 GNU 工具的用户文档, 都不是以“man”手册页提供,而是以“info”文件提供,可以使用 GNU 的 info 工具、在 GNU Emacs 中执行 M-x info,或者其他的 Info 手册页浏览器进行阅读。 它与原版的“man”页面相比,主要的优点是它是一个超链接系统。但它 并不需要 WWW;info 程序可以在纯文本控制台运行。它是由 Richard Stallman 在 WWW 发明之前设计的。 注意,通过使用“dwww”、“dhelp”或“doccentral”命令(可使用对应的软件     包进行安装),或者使用“yelp”,您可以用 WWW 浏览器访问您系统中的许 多文档。 12.2. 有没有可以讨论 Debian 的在线资源? 有。事实上,Debian 向用户提供支持的主要方式是通过电子邮件。我们将     描述更多细节,并提供其他一些有用的资源。更多资源在 Debian 支持页 面 (https://www.debian.org/support) 中列出。 12.2.1. 邮件列表     有很多关于 Debian 的邮件列表 (https://www.debian.org/MailingLists /) 。     在安装了 doc-debian 软件包的系统上,完整的邮件列表的列表可以在 / usr/share/doc/debian/mailing-lists.txt 中找到。 Debian 邮件列表按照 debian-列表主题的方式命名,例如 debian-announce、debian-user、debian-news。要订阅 debian-列表主题     ,请发送主题为“subscribe”的邮件到 debian-列表主题 -request@lists.debian.org。注意,用这种方式订阅和退订,要记得在电 子邮件地址中加上 -request。否则您的邮件会发送到邮件列表本身,这就 会很尴尬或者很烦人,取决于您怎么想。 您也可以使用 WWW 表单 (https://www.debian.org/MailingLists/     subscribe) 订阅邮件列表。也可以使用 WWW 表单 (https:// www.debian.org/MailingLists/unsubscribe) 进行退订。     如果您遇到任何困难,可联系列表管理员的电子邮件地址 < listmaster@lists.debian.org>。 邮件列表是公共论坛。所有发送到列表的电子邮件也会被复制到公共的邮 件存档,任何人(甚至未订阅的人)都可以浏览和搜索。请不要向邮件列     表发送任何机密的或未经授权的内容,包括邮件地址等。尤其需要注意的 是,我们已经知道垃圾邮件的发送者会向我们的邮件列表的帖子中包含的 电子邮件地址发送垃圾邮件。阅读邮件列表隐私政策 (https:// www.debian.org/MailingLists/#disclaimer) 以了解更多信息。     Debian 邮件列表的存档可以通过 WWW 访问,位于 https:// lists.debian.org/ (https://lists.debian.org/) 。 12.2.1.1. 邮件列表的行为准则是什么?     使用 Debian 邮件列表时,请遵守以下规则: * 不要发送垃圾邮件。参见 Debian 邮件列表广告政策 (https:// www.debian.org/MailingLists/#ads) 。 * 不要泄愤;这很不礼貌。Debian 的开发人员都是志愿者,奉献出他们 的时间、精力和金钱来使 Debian 计划得以延续。     * 不要说脏话;此外,有些人通过封包无线电来接收邮件列表,这种情 况下说脏话是违法的。 * 确保您使用合适的邮件列表。不要将订阅(或退订)请求发送到邮件 列表本身。^[7] * 关于报告缺陷的注意事项,请阅读第 12.5 节 “如何报告 Debian 中 的缺陷?”。 12.2.2. 网络论坛 Debian 用户论坛 (http://forums.debian.net/) 是一个网络论坛,您可     以在上面提出问题,并得到其他用户的解答。(它不是 Debian 计划的官 方组成部分。) 12.2.3. 维基     可以在经常更新的 Debian 维基 (https://wiki.debian.org/) 中找到常 见问题的解决方案、HOWTO 文档、指南、提示和其他文档。 12.2.4. 维护者     您可以通过电子邮件向单独的软件包的维护者提问。要联系软件包 xyz 的 维护者,请发送邮件到 xyz@packages.debian.org。 12.2.5. Usenet 新闻组 您应当将并非局限于 Debian 的问题发布到各个 Linux Usenet 组中的一 个,组名为 comp.os.linux.* 或者 linux.*。网络上有 Linux Usenet 新     闻组的列表以及其他一些相关资源,例如 Linux Online (https:// www.linux.org/docs/usenet.html) 和 LinuxJournal (http:// www.linuxjournal.com/helpdesk.php) 网站上的页面。 12.3. 有没有搜索有关 Debian GNU/Linux 的信息的便捷的方法?     有许多搜索引擎可以搜索关于 Debian 的文档: * Debian WWW 搜索网站 (https://search.debian.org/) 。 * Google Groups (https://groups.google.com/) : 新闻组的搜索引擎 。 例如,要了解人们在 Debian 下寻找 NVIDIA 显卡驱动时遇到了哪些 问题,可尝试搜索 NVIDIA Linux driver。这会列出所有包含这些字     符串的帖子,也就是人们讨论这类话题的帖子。如果您在关键字中再 加上一个 Debian,您还可以找到 Debian 特定的帖子。 * 任何常用的网络搜索引擎,比如 DuckDuckGo (https:// duckduckgo.com/) 或者 Google (https://www.google.com/) ,只要 您使用了正确的搜索关键词。 例如,搜索“evince”,您可以得到该软件包的详细描述,比软件包控 制文件中的简短描述要详细得多。 12.4. 有没有已知的缺陷的记录? 未解决的(和已关闭的)缺陷报告都是公开的;Debian 承诺会这么做,因     为我们在 Debian 社群契约 (https://www.debian.org/social_contract) 中表明“我们绝不隐瞒问题”。 Debian GNU/Linux 发行版有一个缺陷跟踪系统(bug tracking system,     BTS),用于保存用户和开发者报告的缺陷的详细信息。每个缺陷都有一个 编号,并被归档。一旦缺陷被解决,它就会被标记为已解决。     这类信息的副本可以在 https://www.debian.org/Bugs/ (https:// www.debian.org/Bugs/) 查询。     一个邮件服务器提供通过电子邮件访问缺陷跟踪系统的功能。要获得有关 指引,请发送内容为“help”的邮件到 request@bugs.debian.org。 12.5. 如何报告 Debian 中的缺陷?     如果您在 Debian 中发现了一个缺陷,请阅读关于报告 Debian 中的缺陷 的指引。该指引可通过如下方式获取: * 通过网络。该指引的拷贝位于 https://www.debian.org/Bugs/ Reporting (https://www.debian.org/Bugs/Reporting) 。     * 在任何安装了 doc-debian 软件包的系统中。指引位于文件 /usr/ share/doc/debian/bug-reporting.txt 中。 您可以使用软件包 reportbug,它会指导您进行整个缺陷报告流程,并将     信息发送到正确的邮件地址,还会在邮件中自动添加您的系统的详细信息 。它也会显示您将要报告缺陷的软件包中的已被报告的缺陷的列表,这样 如果您的缺陷已经被报告,您就可以向现有的缺陷报告添加更多信息。     您应该会收到您的缺陷报告的自动确认邮件。缺陷报告也会被自动赋予一 个缺陷编号、进入缺陷记录,并被转发到 debian-bugs-dist 邮件列表。 ---------------------------------------------------------------------     ^[7] 这种情况,请使用 debian-列表主题-REQUEST@lists.debian.org 邮 件地址。 第 13 章 向 Debian 计划作出贡献 贡献 (https://www.debian.org/donations) 时间(开发新的软件包、维     护现有的软件包,或提供用户支持)、资源(建立软件包和 WWW 档案的镜 像)或金钱(用于购买测试用机和档案库的硬件)都可以帮助本计划。也 请参见您如何协助 Debian? (https://www.debian.org/intro/help) 。 13.1. 如何成为 Debian 成员或 Debian 开发者? Debian 的开发对所有人开放,我们也需要具有合适的技术且/或有学习意     愿的新用户来维护被之前的维护者“遗弃”的现有的软件包、开发新的软件 包、编写文档、进行翻译工作、帮助维护 Debian 网站,以及提供用户支 持等。     成为 Debian 成员的相关描述可以在 Debian 网站的新成员专区 (https:/ /www.debian.org/devel/join/newmaint) 找到。 13.2. 如何向 Debian 计划捐赠资源? 因为本计划致力于让全世界的用户都能方便快捷地获取大量的软件,所以     我们需要镜像站点。能够镜像档案库的全部内容是一件锦上添花的事情, 但不是必需的。请访问 Debian 镜像大小 (https://www.debian.org/ mirror/size) 页面获取磁盘空间需求信息。     绝大部分镜像工作都是通过脚本自动完成的,不需要任何交互。不过,偶 尔会出现小问题或系统调整,这时候就需要人工干预了。 如果您具有高速互联网连接、能镜像发行版部分或全部内容的系统资源,     并愿意花时间(或找人)进行日常的系统维护,请联系 < debian-admin@lists.debian.org>。 13.3. 如何向 Debian 计划捐赠金钱? 赞助者的捐赠让 Debian 可以购买机器和其他硬件、组织会议和开发活动     ,以及做其他一些事情。更多信息请浏览 Debian 捐赠 (https:// www.debian.org/donations) 。该页面同时列出了几种不同的捐赠方式。 您可以以个人名义向对 Debian 计划的开发有关键作用的组织进行捐赠。     主要的组织是 Software in the Public Interest,成立于美国,但也有 其他组织。 13.3.1. Software in the Public Interest     Software in the Public Interest(SPI)是一个 IRS 501(c)(3) 非营利 组织,位于美国。该组织的目标是开发和分发自由软件。 它鼓励程序员使用 GNU General Public License 或其他允许软件的自由     再分发和使用的许可证,并鼓励硬件开发者公开文档,以允许其他人为他 们的产品编写设备驱动程序。     SPI 为许多自由和开源项目提供经济上的支持。从该组织创立以来, Debian 项目就是它的一个关联项目。     SPI 的网站是:https://www.spi-inc.org/ (https://www.spi-inc.org/) 。 13.3.2. 其他组织 在多个国家都有组织受托管理 Debian 的资产。捐赠页面 (https:// www.debian.org/donations) 列出了个人可以进行捐赠的受信任的组织。 在此回答写就时,总共有两个这种组织:Debian France Association     (https://france.debian.net/) (位于法国)和 debian.ch (https:// debian.ch/) (位于瑞士和列支敦士登公国)。其他的成员组织列表可以 在 Debian 维基的组织 (https://wiki.debian.org/Teams/Auditor/ Organizations) 页面找到。 第 14 章 在商业产品中重新分发 Debian GNU/Linux 14.1. 我可以制作或售卖 Debian 的 CD 吗? 没问题。您在分发我们已经发布的内容时不需要许可,所以一旦 beta 测     试结束,您就可以尽情掌控您的 CD 了。您不需要支付任何费用。当然, 所有 CD 厂商需要遵守 Debian 中包含的程序的许可证。比如,许多程序 是以 GPL 许可证发布的,这就需要您分发它们的源代码。 此外,我们会发布一个向 Debian 计划捐赠过金钱、软件或时间的 CD 厂     商的列表,并且会鼓励用户购买已进行过捐赠的厂商的产品,所以进行捐 赠是一个很好的宣传方式。 14.2. 可以将 Debian 和非自由软件封装到一起吗?     可以。虽然 Debian 的主要组件都是自由软件,我们也提供一个非自由目 录,用来存放不能自由地重新分发的程序。 CD 厂商可能可以分发我们在该目录中存放的程序,取决于许可证条款或者 厂商和软件包作者的私下约定。CD 厂商也可以将从其他来源获得的非自由     软件放在同一张 CD 上发布。这没有什么新奇的:现在很多厂商都将自由 软件和商业软件放在同一张 CD 上发布。当然,我们仍然鼓励软件作者将 他们写的程序以自由软件形式发布。 14.3. 我想面向一个“垂直市场”发布一个特殊的 Linux 发行版。我可以使用 Debian GNU/Linux 作为发行版的核心部分,并在上层添加我自己的应用程序吗 ? 可以。基于 Debian 的发行版本既有和 Debian 项目本身紧密合作的,也     有外部团体发布的。您可以使用 Debian Pure Blends (https:// www.debian.org/blends/) 框架来和 Debian 合作;DebianEdu/ Skolelinux (https://wiki.debian.org/DebianEdu/) 就是这样的项目。 市面上也有其他基于 Debian 的发行版和 Debian GNU/Linux 面向不同的     用户群体,但使用了我们的大部分组件,例如 grml、LMDE(Linux Mint Debian Edition)、Knoppix 和 Ubuntu。 Debian 也提供了一种机制,可以允许开发者和系统管理员安装特定文件的     本地版本,且这些文件不会在其他软件包被升级的时候被覆盖。更深入的 讨论请见第 11.9 节 “如何覆盖软件包安装的文件,以使用一个不同的版 本?”。 14.4. 我可以将我的商业软件封装成 Debian “软件包”,使它可以轻松地在任 何 Debian 系统上安装吗?     没问题。打包工具是自由软件;软件包本身不一定要是自由软件,不管是 不是,都可以正常安装。 第 15 章 下一个 Debian 发布版本可以期待的变化 Debian 计划在每次发布新版本时都尽量专注于几个主题。这些主题叫做“ 发布目标(Release Goal)”,在 https://wiki.debian.org/     ReleaseGoals/ (https://wiki.debian.org/ReleaseGoals/) 中有详细介 绍。请注意以下各节的内容可能不是最新的,请阅读维基以了解更多信息 ,以及这些目标是否是最新的。 15.1. 加固系统     Debian 计划的目标之一是确保所有已安装的系统在面对攻击时都是安全的 。有几种方式可以达成这一目标,包括: * 通过在编译时添加增强安全性的编译选项 (https://wiki.debian.org /ReleaseGoals/SecurityHardeningBuildFlags) 来提供对已知安全问 题的多种保护,进而提升程序安全性,     * 改进系统的默认配置,使其对攻击(本地或远程)有更强的防御能力 , * 启用新版本内核支持的安全特性。 这些改进一直都在进行。对第一点而言,我们已经使用了一组增强安全性 的编译选项,以尝试防止已知的攻击,例如栈溢出攻击、内存中的值的存 储位置可预测的问题,等等。目标是至少覆盖所有基本安装中的软件包,     以及所有在 2006 年以后因为安全公告而必须升级的软件包。截至本回答 写就时,从这项改进开始以来,已有大约 400 个软件包被修改。所有这些 问题都在缺陷跟踪系统 (https://bugs.debian.org/cgi-bin/ pkgreport.cgi?tag=goal-hardening;users= hardening-discuss@lists.alioth.debian.org) 中得到记录。 15.2. 对非英语语言的用户提供更多的支持     Debian 对非英语语言的用户已经有了很好的支持,参见第 5.9 节 “Debian 对非英语语言的支持如何?”。 我们希望有人能够提供对更多语言的支持,并翻译程序和文档。很多程序     和 Debian 特定的文档已经支持国际化,所以我们需要消息目录的翻译人 员。然而,还有一些程序还没有完整的国际化支持。 GNU 翻译计划 ftp://ftp.gnu.org/pub/gnu/ABOUT-NLS (ftp:// ftp.gnu.org/pub/gnu/ABOUT-NLS) 致力于 GNU 程序的国际化,而其他项     目,例如 GNOME 和 KDE 桌面环境,有自己的翻译队伍。Debian 的目标不 是替代或重复这些项目所做的工作,事实上,Debian 也从这些项目的翻译 人员的工作中获益。然而,还有很多其他程序不在这些项目的覆盖范围内 ,或者在 Debian 内部进行翻译工作。     之前的 Debian 发布版本关注的主题有: * 所有使用了 debconf 的软件包的国际化支持:使用了 Debian 配置管 理工具的软件包必须支持所有在软件包配置过程中显示的信息的翻译 。 * 软件包描述的国际化:升级软件包管理前端,以使用已翻译的软件包     描述。 * debian/changelog 和 debian/control 的 UTF-8 化。这样就可以支 持,例如,changelog 中亚洲国家的人名的排版。 * Debian 安装程序的国际化支持,包括对一些需要图形界面才能正确显 示的语言的完整支持。 15.3. 改进 Debian 安装程序     我们在 Debian 安装程序中做了大量的工作,带来了重大的改进。在此我 们只提其中两项工作。 从微软 Windows 中启动安装程序:现在已经可以直接从微软 Windows 中     启动安装程序,而不用修改 BIOS 设置。在插入 CD-ROM、DVD-ROM 或 U 盘时,会启动一个自动运行程序,一步一步指导您启动 Debian 安装程序 。 15.4. 更多的架构 在其他架构上使用完整的 Debian 系统。注意,虽然一些架构在给定的发     布版本中被放弃,但是它们可能还可以用最新的 sid 版本进行安装和升级 。 15.5. 更多的内核 除了 Debian GNU/Hurd 之外,Debian 还正在被移植到 BSD 内核,准确地     说是 FreeBSD (https://www.debian.org/ports/kfreebsd-gnu/) 。这一 移植可以在 AMD64(“kfreebsd-amd64”)和传统 Intel 平台( “kfreebsd-i386”)上运行。 第 16 章 关于本 FAQ 的一般性信息 16.1. 作者 本 FAQ 的第一版由 J.H.M. Dassen(Ray)和 Chuck Stickelman 撰写和     维护。重写的 Debian GNU/Linux FAQ 的作者是 Susan G. Kleinmann 和 Sven Rudolph。之后,本 FAQ 由 Santiago Vila 进行维护,然后是 Josip Rodin。目前的维护者是 Javier Fernandez-Sanguino。     部分信息来源于: * Debian-1.1 发布公告,作者是 Bruce Perens (https://perens.com /) , * Linux FAQ,作者是 Ian Jackson (https:// www.chiark.greenend.org.uk/~ijackson/) , * Debian 邮件列表存档 (https://lists.debian.org/) , * dpkg 程序员手册和 Debian 政策文档(参见第 12.1 节 “Debian 系     统中还能获得哪些有针对性的文档?”), * 众多开发者、志愿者和 beta 测试人员, * 各回答的作者的不靠谱的记忆。:-) * 以及选择一个 Debian 发布版本 FAQ (http:// KamarajuKusumanchi.github.io/choosing_debian_distribution/ choosing_debian_distribution.html) ,它的作者 Kamaraju Kusumanchi 慷慨地将它以 GPL 许可证发布,所以我们可以将它作为 一个新的章节(参见第 3 章选择一个 Debian 发布版本)。     本文档的作者向所有使这份文档得以面世的人们表示感谢。     不包含任何担保。所有商标都属于各商标的所有者。 16.2. 反馈 欢迎对本文档进行评论和补充。请发送电子邮件到 <     doc-debian@packages.debian.org>,或者向 debian-faq (https:// bugs.debian.org/debian-faq) 软件包提交一个 wishlist 等级的缺陷报 告。 16.3. 获取途径     本文档的最新版本可以在 Debian 网站的 https://www.debian.org/doc/ FAQ/ (https://www.debian.org/doc/FAQ/) 页面访问。 也可以在 https://www.debian.org/doc/user-manuals#faq (https://     www.debian.org/doc/user-manuals#faq) 下载纯文本、HTML 和 PDF 格式 的版本。此外,该页面上也有几种不同语言的译本。     本文档可以通过 debian-faq 软件包获取。翻译版本可以通过 debian-faq-zh-cn、debian-faq-de 和其他软件包获取。 用于创建本文档的 XML 源文件可以在 debian-faq 的源码包中获取,或者     从 git@salsa.debian.org:ddp-team/debian-faq.git 或 https:// salsa.debian.org/ddp-team/debian-faq (https://salsa.debian.org/ ddp-team/debian-faq) 中通过 GIT 获取。 16.4. 文档格式 本文档使用 DocBook XML DTD 写成。该系统让我们可以从同一个源文件创     建多种格式的文件,比如,本文档可以以 HTML、纯文本、TeX DVI、 PostScript、PDF 或 GNU info 格式查看。