第 5 章 Debian 系统中可用的软件

# 第 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）编辑器、日历。

本发行版包含超过 63879 个软件包，囊括了新闻服务器、新闻阅读器、税务软件、数据库和电子表格应用、图像处理程序、通讯软件、网络工具、邮件工具、Web 服务器，甚至是业余无线电程序。另有 1082 个软件套件作为 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 镜像站点获得，位于文件 `indices/Maintainers`。该文件包括了软件包的名称和对应的维护者的姓名和电子邮件。

Debian 软件包的 WWW 界面很方便地汇总了 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 需要打包的软件包列表，叫做需要帮助和预期的软件包列表。

欲了解关于添加缺少的软件包的详细信息，请阅读第 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 以了解更多信息。

## 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. I have a device that requires non-free firmware. What should I do?

Firmware refers to embedded software which controls electronic devices. Many devices require firmware to operate. Historically, firmware would be built into the device's ROM or Flash memory, but more and more often, a firmware image has to be loaded into the device RAM by a device driver during device initialisation.

Some devices require non-free firmware to work properly. And there could be firmware updates in the future.

In Debian release 11 (bullseye) and older, Debian did not include non-free firmware on official images and live installations. For Debian 12 onwards, all the packaged non-free firmware binaries that Debian can distribute have been moved to a new component in the Debian archive, called `non-free-firmware`. If you're upgrading from an older release of Debian and you need these firmware binaries, make sure that your sources.list uses this new component:

    http://deb.debian.org/debian trixie main non-free-firmware contrib non-free

For more information please refer to Firmware information in the Debian Wiki.

## 5.11. 我有一张无线网卡不支持 Linux。我该怎么办？

买一个支持的 :)

另外，也可以用 `ndiswrapper` 实现在 Linux 系统上使用 Windows 的驱动（如果您有的话）。参见 Debian 维基的 ndiswrapper 页面以了解更多信息。

第 4 章 兼容性问题 |  | 第 6 章 Debian 档案库