第 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。我该怎么办?

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 镜像站点获得,位于文件 indices/Maintainers。该文件包括了软件包的名称和对应的维护者的姓名和电子邮件。

Debian 软件包的 WWW 界面很方便地汇总了 Debian 仓库的大约三十个“区”的软件包。

5.4. 我应该如何安装能够构建软件包的开发环境?

如果您想要在 Debian 系统中构建软件包,您需要一个基本的开发环境,包括 C/C++ 编译器和其他一些必备的软件包。要安装该环境,您只需要安装 build-essential 软件包。这是个元软件包,或称作占位软件包,它依赖构建 Debian 软件包需要的标准开发工具。

不过,有些软件可能需要额外的软件才能被重新构建,这些依赖包括库的头文件或其他工具,例如 autoconfgettext。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. ezmlm/djbdns/qmail 在哪里?

Dan J. Bernstein 曾经将他编写的所有软件以一个限制性的许可证发布,不允许发布修改的二进制文件。然而,在 2007 年 11 月,Bernstein 表示 “……我已决定将我过去及未来编写的所有软件发布至公有领域……”。参见发布者的 FAQ 以了解他的发布条款。

截至本段写就时(2016 年 3 月),ezmlm-idx 仅在 experimental 仓库提供(mlmmj 也类似,并随 Debian jessie 提供);djbdns 仅在 sid(unstable)提供,参见 Bug #516394Bug #796118 以了解详细信息,一个类似的替代品是 dbndns 软件包;publicfile 软件仍不是自由软件,publicfile-installer 软件包在 Debian 的 contrib 区提供。

Dan J. Bernstein 的其他软件(qmaildaemontoolsucspi-tcp)随 Debian 提供。

5.11. Flash(SWF)播放器在哪里?

Debian 提供 gnashswfdec:两个自由的 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 页面以了解更多信息。