要有礼貌

在 Debian 这种规模的项目中，很难避免遇到与你意见不和，或者难以合作
的人。请接受这一事实，并保持礼貌。意见不一致并不是糟糕举止或者人身
攻击的借口，而且让人感觉受到威胁显然不是健康的社区氛围。

[33m    -- Debian [32m《行为准则》[m第一条[m
%
善意推定

Debian 贡献者们可能会通过与您不一样的方式来达成我们对于自由操作
系统的共同目标。请始终假设其他人都在为这一目标而付诸努力。
需要注意的是，我们之中的许多贡献者的母语并不是英语，同时也可能
来自不同的文化背景。

[33m    -- Debian [32m《行为准则》[m第二条[m
%
保持合作

Debian 是一个庞大而复杂的项目，这里永远会有需要学习的新知识。
当你需要帮助的时候，主动向他人求助是一个好的选择。类似地，
他人所提供的帮助应该放在改进 Debian 这一共同目标的上下文中理解。
当你做了有益于项目的事情时，也请不要吝啬向他人解释其原理，这样
他人才能够基于你的工作做出进一步的改进。

[33m    -- Debian [32m《行为准则》[m第三条[m
%
言简意赅

请时刻留心您所写的内容，它会被成百上千的人阅读。
书写简短的邮件意味着人们可以尽可能高效地理解一次对话。
如果必须写出详细的解释，那么请尝试增加一些总结。

请尽量为一次对话带来新的论点，这样每一封邮件对于一串跟帖来说都是独特的。
这是因为在一次跟帖的其他邮件中，仍然保留了已经提出的论点。

请尽量扣紧主题，尤其是在讨论宽泛话题的情况下。

[33m    -- Debian [32m《行为准则》[m第四条[m
%
保持开放

Debian 社区中采用的大部分通信方式都同时支持公开通信和私人通信。
根据[32m《Debian 社会契约》[m，除非是讨论一些敏感话题，
那么对于 Debian 相关的讨论，应该尽量通过公共渠道进行。

这一点也适用于 Debian 相关的求助。这不仅仅是因为在公共渠道
寻求帮助更容易得到回复，同时别人的回复中的疏漏和错误也更有可能
被大家察觉和纠正。

[33m    -- Debian [32m《行为准则》[m第五条[m
%
遇到问题

虽然参与者们都应该遵守这一份行为准则，但我们承认人们有时候会遭遇不顺，
或者对这份准则中的某一部分不清楚。如果遇到这种情况，您可以尝试回复他们
并向其指出这份行为准则。只要符合时宜，这样的交流无论通过公共或者私人渠道均可。
然而，不论是通过公共还是私人渠道，消息的内容应当紧扣行为准则中的相关部分。
特别地，侮辱和不尊重的言辞应当杜绝。时刻假设别人心怀善意；参与者更有可能
并未意识到自己的失当行为，而不是故意降低讨论质量。

严重冒犯他人或屡教不改者，会视情况被 Debian 的通信系统临时或者永久封禁。
相关的控诉应当（私下）发送给相应的 Debian 通信系统管理员。
这些管理员的联系方式可以在“Debian 组织结构”[1] 页面下找到。

[1] https://www.debian.org/intro/organization

[33m    -- Debian [32m《行为准则》[m第六条[m
%
[37;1m2. 什么是 Debian[;m

    Debian 项目是一个由个人组成的团体，该团体的成员均把创建一个自由操
    作系统作为共同事业。Debian 的发布具有下列特征：

[33;1m      *[;m 承诺软件自由：Debian 社群契约和 Debian 自由软件指导方针（DFSG
        ）

[33;1m      *[;m 基于因特网上无酬劳的志愿者的工作发布：https://www.debian.org

[33;1m      *[;m 大量预编译的高质量软件包

[33;1m      *[;m 专注于稳定性和安全性，同时易于获取安全更新

[33;1m      *[;m 在 unstable 和 testing 仓库中注重软件包最新版本的平滑升级

[33;1m      *[;m 支持大量硬件架构

    Debian 系统中的自由软件来自GNU, Linux, BSD, X, ISC, Apache,
    Ghostscript, Common Unix Printing System , Samba, GNOME, KDE,
    Mozilla, LibreOffice, Vim, TeX, LaTeX, DocBook, Perl, Python,
    Tcl, Java, Ruby, PHP, Berkeley DB, MariaDB, PostgreSQL, SQLite,
    Exim, Postfix, Mutt, FreeBSD, OpenBSD, Plan 9 以及许多更加独立的
    自由软件项目。 Debian 将上述各种各样的自由软件集成到一个系统里面
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3. 关于本文档[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.1. 指导原则[;m

    写作本文档时，遵循下列指导原则。

[33;1m      *[;m 仅提供概览，而忽略边界情况。（Big Picture 原则）

[33;1m      *[;m 保持文字简短紧凑。（KISS 原则）

[33;1m      *[;m 不重复造轮子。（使用链接指向已有参考）

[33;1m      *[;m 专注于使用非图形的工具和控制台。（使用 shell 例子）

[33;1m      *[;m 保持客观。（使用 popcon 等等。）

    [36;1m提示[m

    我试图阐明操作系统底层和体系结构的各方面内容。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.2. 预备知识[;m

    [31;1m警告[m

    阅读本文档，你需要通过自己的努力去查找本文档未提及的问题答案。本
    文档仅仅提供有效的起点。

    你必须自己从以下原始材料查找解决方案。

[33;1m      *[;m Debian 管理员手册

[33;1m      *[;m Debian 网站（https://www.debian.org）上的通用信息

[33;1m      *[;m [35;1m"/usr/share/doc/<package_name>"[;m 目录下的文档

[33;1m      *[;m Unix 风格的 manpage: "dpkg -L <package_name> |grep '/man/
        man.*/'"

[33;1m      *[;m GNU 风格的 info page: [35;1m"dpkg -L <package_name> |grep [35;1m'/info/'[;m"[;m

[33;1m      *[;m 错误报告：http://bugs.debian.org/<package_name>

[33;1m      *[;m Debian Wiki（https://wiki.debian.org/）用于变化和特定的话题

[33;1m      *[;m Linux 文档项目（TLDP，http://tldp.org/）的 HOWTO

[33;1m      *[;m 国际开放标准组织的 UNIX 系统主页（http://www.unix.org/）上的
        单一 UNIX 规范

[33;1m      *[;m 自由的百科全书：维基百科（https://www.wikipedia.org/）

    [33;1m注意[m

    软件包的详细文档，你需要安装软件包名用 [35;1m"-doc"[;m 作为后缀名的相应文
    档包来得到。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.3. 排版约定[;m

    本文通过如下使用 [34;1mbash(1)[m shell 命令例子的简要方式来提供信息。

[31;1m    # <以 root 账户运行的命令>[;m
[32;1m    $ <以普通用户账户运行的命令>[;m

    这些 shell 提示符区分了所使用的帐户。为了可读性，在本手册中 shell
    [36;1m提示[m符相关的环境变量被设置为[35;1m“PS1=[35;1m'\$'[;m”[;m和“PS2=[35;1m' '[;m。这与实际安装的
    系统所使用的 shell 提示符很有可能会不同。

    [33;1m注意[m

    参见在 [34;1mbash(1)[m 中对环境变量 [35;1m“$PS1”[;m 和 [35;1m“$PS2”[;m 的解释。

    要求系统管理员执行的操作，须用祈使句描述，如“在 shell 中输入命令
    字符串后，键入 Enter 键。”

    这些描述列或类似信息在表格有一个名词短语，后面会紧跟软件包短描述
    ，这些短语会省略掉前面的[35;1m"a"[;m和[35;1m"the"[;m。它们也可以包含一个不定式短语
    作名词短语，在联机帮助的短命令描述约定后面不带 [35;1m"to"[;m。有些人可能觉
    得这看起来有点可笑，这里故意保留这种风格是为了让文档看起来尽可能
    的简单。这些名词短语在短命令描述约定里并不会采用首字母大写的方式
    。

    [33;1m注意[m

    无论专有名词和命令名位于何处，保持其英文字母大小写不变。

    在文本段落中引用的命令片断由双引号括起来的打印机字体进行标记，就
    像[35;1m"aptitude safe-upgrade"[;m。

    在文本段落中引用的来自配置文件的文本数据由双引号括起来的打印机字
    体进行标记，就像[35;1m"deb-src"[;m。

    命令和置于其后的圆括号内的手册页章节数（可选），由打字机字体进行
    标记，[34;1m就像bash(1)[m。我们鼓励您这样通过输入以下命令来获得信息。

[32;1m    $ man 1 bash[;m

    manpage 会在打字机字体后面括号中显示 manpage 页章节号，如
    sources.[34;1mlist(5)[m。建议你通过键入以下命令来获取帮助信息。

[32;1m    $ man 5 sources.list[;m

    info page 页是由双引号之间的打字机字体来标注，如 info make。建议
    你通过键入以下的命令来获取帮助信息。

[32;1m    $ info make[;m

    文件名将由双引号括起来的打印机字体进行标记，就像 [35;1m"/etc/passwd"[;m。
    对于配置文件，你可以输入下列的命令来获取它的信息。

[32;1m    $ sensible-pager "/etc/passwd"[;m

    目录名将由双引号括起来的打印机字体进行标记，就像 [35;1m"/etc/apt"[;m。你可
    以输入下列的命令来浏览目录的内容。

[32;1m    $ mc "/etc/apt/"[;m

    软件包名称将由打印机字体进行标记，就像 vim。你可以输入下列的命令
    来获取它的信息。

[32;1m    $ dpkg -L vim[;m
[32;1m    $ apt-cache show vim[;m
[32;1m    $ aptitude show vim[;m

    一个文档可能通过文件名来指示它的位置，文件名将由双引号括起来的打
    印机字体进行标记，就像"/usr/share/doc/base-passwd/
    users-and-groups.txt.gz[35;1m"和"[;m /usr/share/doc/base-passwd/
    users-and-groups.html "，或通过它的URL，就像https://
    www.debian.org。你可以通过输入下列命令来阅读文档。

[32;1m    $ zcat "/usr/share/doc/base-passwd/users-and-groups.txt.gz" | sensible-pager[;m
[32;1m    $ sensible-browser "/usr/share/doc/base-passwd/users-and-groups.html"[;m
[32;1m    $ sensible-browser "https://www.debian.org"[;m

    环境变量将由双引号括起来的打印机字体进行标记，并带有 [35;1m"$"[;m 前缀，就
    像 [35;1m"$TERM"[;m。你可以输入下列命令来获取它的当前值。

[32;1m    $ echo "$TERM"[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.4. popcon 流行度[;m

    popcon 数据被用来客观地衡量每个包的流行度。它的下载时间为
    2018-07-01 15:49:36 UTC，包含了超过169839个二进制软件包和28个架构
    的全部197277份提交。

    [33;1m注意[m

    请注意 amd64 不稳定（unstable）版的软件仓库中只包含当前 59509 软
    件包。popcon 数据包含许多旧系统安装报告。

    以[35;1m“V:”[;m开头表示[35;1m“votes”[;m的 popcon 数值计算方式为“1000 * （当前运行在
    PC 上的包的 popcon 提交）/ （总的 popcon 提交）”。

    以[35;1m“I:”[;m开头表示[35;1m“安装数”[;m的 popcon 数值计算方式为“1000 * （当前安装
    在 PC 上的包的 popcon 提交）/ （总的 popcon 提交）”。

    [33;1m注意[m

    流行度评比 popcon 数据不应视为对包的重要性的绝对度量。有许多因素
    可以影响统计数据。例如，参与流行度评比的某些系统可能有像[35;1m“/bin”[;m的
    目录，挂载的时候带[35;1m“noatime”[;m选项以提升系统性能，这样的系统有效的禁
    用了[35;1m“投票（vote）”[;m功能。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.5. 软件包大小[;m

    软件包的大小数据同样表明了对每个包的客观衡量。它基于“apt-cache
    show”或[35;1m“aptitude show”[;m命令（目前在amd64 架构的不稳定版）报告的“安
    装大小”。报告的大小单位是 KiB（Kibibyte=表示 1024 Bytes 的单位）
    。

    [33;1m注意[m

    包大小是一个小数值的包可能显示了这个在[35;1m“不稳定”[;m版的包是一个虚拟包
    ，它包含关于依赖关系的重要内容，会安装其他的包。虚拟包使能平稳过
    度或分割一个包。

    [33;1m注意[m

    包大小后面跟着 [35;1m"(*)"[;m 表明这个软件包在不稳定版本中是缺失的同时使用
    了实验性版本中的软件包大小来替代。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.6. 给本文档报告 Bug[;m

    如果你发现本文档有任何问题，请使用 [34;1mreportbug(1)[m 向
    debian-reference 软件包报告 bug。对纯文件版本或源代码的改进建议，
    请使用 [35;1m"diff -u"[;m 包含在 bug 报告里面。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4. 一些对新使用者的提醒[;m

    这里给出对新用户的一些提醒信息：

[33;1m      *[;m 备份你的数据

[33;1m      *[;m 妥善保存你的密码和安全信息

[33;1m      *[;m KISS（保持简单而傻瓜式）

[33;1m          +[;m 不要在系统中过度设计（overengineering）

[33;1m      *[;m 阅读你的日志文件

[33;1m          +[;m 第一条错误信息才是最重要的

[33;1m      *[;m RTFM（阅读手册与指导）

[33;1m      *[;m 在问问题前，先在互联网上搜索

[33;1m      *[;m 当不是必须要使用 root 的时候，就不要使用 root

[33;1m      *[;m 不要胡乱折腾软件包管理系统

[33;1m      *[;m 不要输入任何你不理解的命令

[33;1m      *[;m （在完全地检查过安全问题之前）不要随意修改文件权限

[33;1m      *[;m 在测试过你所做的修改之前不要关闭 root shell

[33;1m      *[;m 总是准备好备用启动介质（USB 启动盘、启动光盘等）

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5. 一些对新使用者的引导[;m

    从 Debian 邮件列表来的一些有趣引文，说不定可以帮助新使用者启蒙。

[33m[33;1m      *[;m [35;1m“这是Unix。它给你足够的绳索来吊死你自己。”[;m--- Miquel van[m
        Smoorenburg <miquels at cistron.nl>

[33m[33;1m      *[;m [35;1m“Unix 是用户友好的……它仅仅选择谁是它的朋友。”[;m--- Tollef Fog[m
        Heen <tollef at add.no>

    维基百科文章[35;1m"Unix 哲学"[;m列出了一些有趣的指导。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 1 章 GNU/Linux 教程[;m

    我认为学习一个计算机系统，就像学习一门新的外语。虽然教程和文档是
    有帮助的，但你必须自己练习。为了帮助你平滑起步，我详细说明一些基
    本要点。

    Debian GNU/Linux中最强大的设计来自Unix操作系统，一个多用户多任务
    的操作系统。你必须学会利用这些特性以及Unix和GNU/Linux的相似性。

    别回避面向 Unix 的文档，不要只是依赖于 GNU/Linux 文档，这样做会剥
    夺你了解许多有用的信息。

    [33;1m注意[m

    如果你在任何类 Unix 系统中使用过一段时间的命令行工具，你可能已经
    掌握了这份文档中的内容。那请把它当做一个实战检验和回顾。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1. 控制台基础[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.1. shell 提示符[;m

    启动系统之后，如果你没有安装 X 窗口系统和显示管理器（例如gdm3），
    那么你就会看对字符登录界面。假设你的主机名为foo，那么登录提示符将
    如下所示。

    foo login:

    如果你安装了一个 GUI 环境，例如 GNOME 或 KDE，那么你能够用
    Ctrl-Alt-F1进入登录提示符，同时你可以通过Alt-F7回到GUI环境（更多
    详情请参阅下文第 1.1.6 节 [35;1m“虚拟控制台”[;m）。

    在登录提示符下，你输入你的用户名，例如penguin，然后按回车键，接下
    来输入你的密码并再次按回车键。

    [33;1m注意[m

    遵循Unix传统，Debian系统下的用户名和密码是大小写敏感的。用户名通
    常由小写字母组成。第一个用户账号通常在安装期间进行创建。额外的用
    户账号由root用户用 [34;1madduser(8)[m创建。

    系统以保存在 [35;1m"/etc/motd"[;m 中的欢迎信息（Message Of The Day）来开始
    ，同时显示一个命令提示符。

    Debian GNU/Linux jessie/sid foo tty1
    foo login: penguin
    Password:
    Last login: Mon Sep 23 19:36:44 JST 2013 on tty3
    Linux snoopy 3.11-1-amd64 #1 SMP Debian 3.11.6-2 (2013-11-01) x86_64

    The programs included with the Debian GNU/Linux system are free software;
    the exact distribution terms for each program are described in the
    individual files in /usr/share/doc/*/copyright.

    Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
    permitted by applicable law.
    foo:~$

    现在，你就在 shell 下。shell 解析你的命令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.2. X 系统下的 shell 提示符[;m

    如果你安装了带有显示管理器的 X Window System，例如通过在安装
    Debian 时选择 [35;1m“桌面环境”[;m 所安装GNOME 的 gdm3，那么你在启动系统后
    将使用图形登录界面。输入你的用户名和密码可以登录到非特权用户帐号
    。使用 Tab 键（跳格键）可以在用户名和密码之间移动，也可以使用鼠标
    左击。

    要在X窗口下获得shell提示符，你必须启动一个x终端模拟器程序，例如
    [34;1mgnome-terminal(1)[m、[34;1mrxvt(1)[m[34;1m或xterm(1)[m。在GNOME桌面环境下，你可以点
    击[35;1m“应用程序”[;m→[35;1m“附件”[;m→[35;1m“终端”[;m来打开终端。

    你还可以看下下面的第 1.1.6 节 [35;1m“虚拟控制台”[;m 章节。

    在其它一些桌面系统（如 fluxbox）下面，可能没有明显的开始菜单入口
    。如果是这种情况，试下右击桌面屏幕并希望能有弹出菜单。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.3. root 账户[;m

    root 账户也被称作超级用户或特权用户。用这个账户，你能够履行下面的
    系统管理任务。

[33;1m      *[;m 读、写和删除系统上的任何文件，不顾它们的文件权限

[33;1m      *[;m 设置系统上任何文件的所有者和权限

[33;1m      *[;m 设置系统上任何非特权用户的密码

[33;1m      *[;m 免用户密码登录任何帐户

    无限权力的 root 账户，要求你慎重和负责任的使用。

    [31;1m警告[m

    千万不要和其他人共享 root 密码.

    [33;1m注意[m

    一个文件（包括硬件设备，如CD-ROM等，这些对Debian系统来说都只是一
    个文件）的权限可能会导致非root用户无法使用或访问它。虽然在这种情
    况下，使用root帐户是一个快速的方法，但正确的解决方法应该是对文件
    权限和用户组的成员进行合适的设置（参见第 1.2.3 节 [35;1m“文件系统权限”[;m
    ）。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.4. root shell 提示符[;m

    这里有一些基本的方法可以让你在输入root密码后获得root的shell提示符
    。

[33;1m      *[;m 在字符界面的登录提示符，键入 root 作为用户名登录。

[33;1m      *[;m 在 GNOME 桌面环境下点击 [35;1m“应用程序”[;m → [35;1m“附件”[;m → “Root 终端"。

[33;1m      *[;m 在任意用户的shell提示符下输入[35;1m“su -l”[;m。

[33;1m          +[;m 这不会保存当前用户的环境设定。

[33;1m      *[;m 在任意用户的shell提示符下输入[35;1m“su”[;m。

[33;1m          +[;m 这会保存当前用户的一些环境设定。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.5. GUI 系统管理工具[;m

    如果你的桌面菜单没有适当的权限启动系统管理工具，你可以在 X 终端模
    拟器（[34;1m例如gnome-terminal(1)[m、[34;1mrxvt(1)[m[34;1m或xterm(1)[m）中 root 的 shell
    [36;1m提示[m符下启动它。参见第 1.1.4 节 [35;1m“root shell [36;1m提示[m符”[;m和第 7.8.5 节
    [35;1m“以 root 运行 X 客户端”[;m。

    [31;1m警告[m

    永远不要在显示管理器（[34;1m例如gdm3(1)[m）的提示符下输入root来使用 root
    账户启动 X 显示/会话管理器。

    [31;1m警告[m

    永远不要在显示关键信息的 X Window下运行不受信任的远程 GUI 程序，
    因为它可能会监听你的 X 屏幕。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.6. 虚拟控制台[;m

    在默认的 Debian 系统中，有6个可切换的类VT100字符控制台，可以直接
    在 Linux 主机上启动 shell。除非你处于 GUI 环境下，否则你可以同时
    按下左 Alt 键和F1—F6之一的键在虚拟控制台间切换。每一个字符控制台
    都允许独立登陆账户并提供多用户环境。这个多用户环境是伟大的 Unix
    的特性，很容易上瘾。

    如果你处于 X Window 系统中，你可以通过Ctrl-Alt-F1键前往字符控制台
    1，也就是同时按下左 Ctrl 键、左 Alt 键和F1 键。你可以按下Alt-F7回
    到 X Window System，它一般运行在虚拟控制台7。

    你也可以使用命令行切换到另一个虚拟控制台，例如切换到控制台1。

[31;1m    # chvt 1[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.7. 怎样退出命令行提示符[;m

    在命令行输入Ctrl-D，即同时按下左侧-Ctrl-键和d-键，即可关闭 shell
    活动。如果你正处于字符控制台，你将会返回到登录提示行。尽管这些控
    制字符 “control D" 使用了大写字母，你并不需要按住 Shift-键。
    Ctrl-D 也可以简写为 ^D。或者，你也可以键入 ”exit" 退出命令行。

    如果你位于x [34;1m终端模拟器(1)[m中，你可以使用这个关闭x 终端模拟器窗口。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.8. 怎样关闭系统[;m

    就像任何其他的现代操作系统一样，Debian 会通过内存中的缓存数据进行
    文件操作以提高性能，因此在电源被安全地关闭前需要适当的关机过程，
    通过将内存中的数据强制写入硬盘来维持文件的完整性。如果软件的电源
    控制可用，那么关机过程中会自动关闭系统电源。（否则，你可能需要在
    关机过程之后按电源键几秒钟。）

    在普通多用户模式模式下，可以使用命令行关闭系统。

[31;1m    # shutdown -h now[;m

    在单用户模式下，可以使用命令行关闭系统。

[31;1m    # poweroff -i -f[;m

    另外，如果在[35;1m“/etc/inittab”[;m中含有“ca:12345:ctrlaltdel:/sbin/
    shutdown -t1 -a -h now”，那么你可以按下Ctrl-Alt-Delete（同时按下
    左 Ctrl 键、左 Alt 键和Delete）来关机。[34;1m参见inittab(5)[m获取更多细节
    。

    参见第 6.9.6 节 [35;1m“怎样通过 SSH 关闭远程系统”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.9. 恢复一个正常的控制台[;m

    当做了一些滑稽的事（例如[35;1m“cat<二进制文件>”[;m）后，屏幕会发狂，你可以
    在命令行输入[35;1m“reset”[;m。你可能无法在屏幕上看到你输入的命令。你也可以
    输入[35;1m“clear”[;m来清屏。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.10. 建议新手的额外软件包[;m

    尽管连无需任何桌面环境的 Debian 系统最小安装都提供了基本的 Unix
    功能，但对新手而言，使用 [34;1mapt-get(8)[m 安装一些基于字符终端的命令行
    和 curses 软件包（例如 mc 和 vim）依旧是一个不错的主意。

[31;1m    # apt-get update[;m
     ...
[31;1m    # apt-get install mc vim sudo[;m
     ...

    如果你已经安装了这些软件包，那么不会有新的软件包被安装。

    表 1.1. 有趣的文本模式程序包列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包 │ 流行度 │大小 │                 说明                  │
    ├────────┼────────┼─────┼───────────────────────────────────────┤
    │mc      │V:65,   │1434 │文本模式的全屏文件管理器               │
    │        │I:239   │     │                                       │
    ├────────┼────────┼─────┼───────────────────────────────────────┤
    │sudo    │V:473,  │3578 │给普通用户授予部分 root 权限的程序     │
    │        │I:730   │     │                                       │
    ├────────┼────────┼─────┼───────────────────────────────────────┤
    │vim     │V:118,  │2668 │Unix 文本编辑器 Vi 的改进版，一个程序员│
    │        │I:400   │     │的文本编辑器（标准版）                 │
    ├────────┼────────┼─────┼───────────────────────────────────────┤
    │vim-tiny│V:62,   │1265 │Unix 文本编辑器 Vi 的改进版，一个程序员│
    │        │I:967   │     │的文本编辑器（精简版）                 │
    ├────────┼────────┼─────┼───────────────────────────────────────┤
    │emacs25 │V:13,   │19264│GNU 项目的 Emacs，基于 Lisp 的扩展文本 │
    │        │I:21    │     │编辑器                                 │
    ├────────┼────────┼─────┼───────────────────────────────────────┤
    │w3m     │V:114,  │2303 │文本模式的万维网浏览器                 │
    │        │I:528   │     │                                       │
    ├────────┼────────┼─────┼───────────────────────────────────────┤
    │gpm     │V:12,   │497  │文本控制台 Unix 式样的粘贴拷贝（守护） │
    │        │I:20    │     │                                       │
    └───────────────────────────────────────────────────────────────┘


    阅读一些信息文档，也是一个好的主意。

    表 1.2. 软件包信息文档列表

    ┌───────────────────────────────────────────────────────────────┐
    │       软件包       │流行 │大小│             说明              │
    │                    │ 度  │    │                               │
    ├────────────────────┼─────┼────┼───────────────────────────────┤
    │doc-debian          │I:855│166 │Debian 项目文档，（Debian 常见 │
    │                    │     │    │问题）和其它文档               │
    ├────────────────────┼─────┼────┼───────────────────────────────┤
    │debian-policy       │I:75 │5339│Debian 策略手册和相关文档      │
    ├────────────────────┼─────┼────┼───────────────────────────────┤
    │developers-reference│I:6  │1304│Debian 开发者指导方针和信息    │
    ├────────────────────┼─────┼────┼───────────────────────────────┤
    │maint-guide         │I:4  │986 │Debian 新维护者手册            │
    ├────────────────────┼─────┼────┼───────────────────────────────┤
    │debian-history      │I:1  │5034│Debian 项目历史                │
    ├────────────────────┼─────┼────┼───────────────────────────────┤
    │debian-faq          │I:846│1277│Debian 常见问题                │
    └───────────────────────────────────────────────────────────────┘


    你可以用下面的命令安装这些包。

[31;1m    # apt-get install package_name[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.11. 额外用户账号[;m

    如果你不想用你自己的主用户账户来进行下面的练习操作，你可以使用下
    面的方式创建一个练习用户账户，比如说，创建一个用户名为 fish 的账
    号。

[31;1m    # adduser fish[;m

    回答所有问题。

    这将创建一个名为 fish 的新账号。在你练习完成后，你可以使用下面的
    命令删除这个用户账号和它的用户主目录。

[33m[31;1m    # deluser --remove-home fish[;m[m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.12. sudo 配置[;m

    对于典型的单用户工作站，例如运行在笔记本电脑上的桌面Debian系统，
    [34;1m通常简单地配置sudo(8)[m来使为非特权用户（例如用户penguin）只需输入
    用户密码而非root密码就能获得管理员权限。

[31;1m    # echo "penguin  ALL=(ALL) ALL" >> /etc/sudoers[;m

    另外，可以使用下列命令使非特权用户（例如用户penguin）无需密码就获
    得管理员权限。

[31;1m    # echo "penguin  ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers[;m

    这些技巧只对你管理的单用户工作站中那个唯一的用户有用。

    [31;1m警告[m

    在多用户工作站中不要建立这样的普通用户账户，因为它会导致非常严重
    的系统安全问题。

    [33;1m小心[m

    在上述例子中，用户penguin的密码及账号要有和root账号密码同样多的保
    护。

    [33;1m小心[m

    在这种情况下，管理员权限被赋予那些有权对工作站进行系统管理任务的
    人。永远不要让你的公司行政管理部门或你的老板进行管理（例如给予他
    们权限），除非他们获得了授权并有这样的能力。

    [33;1m注意[m

    为了对受限的设备和文件提供访问权限，你应该考虑使用组来提供受限访
    问，[34;1m而不是通过sudo(8)[m来使用 root 权限。

    [33;1m注意[m

    随着越来越细致周密的配置，[34;1msudo(8)[m可以授予一个共享系统上的其它用户
    有限的管理权限而不共享root密码。这可以帮助对有多个管理员的主机进
    行责任追究，你可以了解到是谁做什么。另一方面，你可能不想任何人有
    这样的权限。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.1.13. 动手时间[;m

    现在你已经准备好在 Debian 系统上开工了，只要你使用非特权用户账号
    就不会有风险。

    这是因为 Debian 系统（即使是默认安装）会设置适当的文件权限来防止
    非特权用户对系统造成破坏。当然，可能仍然有一些漏洞可以利用，但关
    心这些问题的人不应该阅读这一节，而应该去阅读 Debian 安全手册。

    我们使用下面的方式，把 Debian 系统当作一个类 Unix 系统来学习。

[33;1m      *[;m 第 1.2 节 [35;1m“类 Unix 文件系统”[;m (基本概念)

[33;1m      *[;m 第 1.3 节 [35;1m“Midnight Commander (MC)”[;m (生存方式)

[33;1m      *[;m 第 1.4 节 [35;1m“类 Unix 工作环境基础”[;m (基本方式)

[33;1m      *[;m 第 1.5 节 [35;1m“简单 shell 命令”[;m (shell 机制)

[33;1m      *[;m 第 1.6 节 [35;1m“类 Unix 的文本处理”[;m (文本处理方式)

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2. 类 Unix 文件系统[;m

    在GNU/Linux和其他类Unix操作系统中，文件被组织到目录中。所有的文件
    和目录排放在以[35;1m“/”[;m为根的巨大的树里。叫它树是因为如果你画出文件系统
    ，它看起来就像一棵树，但是它是颠倒过来的。

    这些文件和目录可以分散在多个设备中。[34;1mmount(8)[m用于把某个设备上找到
    的文件系统附着到巨大的文件树上。相反的，[34;1mumount(8)[m把它再次分离。在
    最近的 Linux 内核里，[34;1mmount(8)[m带某些参数时可以把文件树的一部分绑定
    到另外的地方，或者可以把文件系统挂载为共享的、私有的、从设备、或
    不可绑定的。对每个文件系统支持的挂载选项可以在/usr/share/doc/
    linux-doc-*/Documentation/filesystems/找到。

    Unix系统上叫做目录，某些其他系统上叫做文件夹。请同样留意，在任何
    Unix系统上，没有的驱动器的概念，例如[35;1m“A:”[;m。这只有一个文件系统，并
    且所有东西都包含在内。这相对于Windows来说是一个巨大的优点。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.1. Unix 文件基础[;m

    下面是一些 Unix 文件基础。

[33;1m      *[;m 文件名是区分大小写的。也就是说， [35;1m"MYFILE"[;m 和 [35;1m"MyFile"[;m 是不同
        的文件。

[33;1m      *[;m 根目录意味着文件系统的根，简单的称为[35;1m“/”[;m，不要把它跟root用户的
        家目录[35;1m“/root”[;m混淆了。

[33;1m      *[;m 每个目录都有一个名字，它可以包含任意字母或除了/”以外的符号。
        根目录是个特例。它的名字是[35;1m“/”[;m（称作[35;1m“斜线”[;m或[35;1m“根目录”[;m），并且它
        不能被重命名。

[33;1m      *[;m 每个文件或目录都被指定一个全限定文件名，绝对文件名，或路径，
        按顺序给出必须经过的目录从而到达相应目录。这三个术语是同义的
        。

[33;1m      *[;m 所有的全限定文件名以[35;1m“/”[;m目录开始，并且在每个目录或文件名之间有
        一个[35;1m“/”[;m。第一个[35;1m“/”[;m是最顶层目录，其他的[35;1m“/”[;m用于分隔跟着的子目录
        。直到到达最后的入口，即实际文件的名称。这些话可能会令人困惑
        。用下面这个全限定文件名作为例子：“/usr/share/keytables/
        us.map.gz”。不过，人们也把它的基名[35;1m“us.map.gz”[;m单独作为文件名。

[33;1m      *[;m 根目录有很多分支，例如[35;1m“/etc/”[;m和[35;1m“/usr/”[;m。这些子目录依次分出更
        多的子目录，例如[35;1m“/etc/init.d/”[;m和[35;1m“/usr/local/”[;m。这整体叫做“目
        录树”。你可以把一个绝对文件名想象成从[35;1m“/”[;m这棵树的基到某个分支
        （一个文件）的结尾的一条路径。你也听到人们谈论目录树，就好像
        它是一个包含所有直系后代的[35;1m“家庭”[;m树的一个图，这个图叫做根目录
        （[35;1m“/”[;m）：因此子目录有父目录，并且一条路径显示了一个文件完整的
        祖先。也有相对路径从其他地方开始，而不是从根目录。你应该还记
        得目录[35;1m“../”[;m指向父目录。这个术语也适用于其他类似目录的结构，如
        分层数据结构。

[33;1m      *[;m 对于一个物理设备, 是没有一个特定的目录路径名来对应的组成部分.
        这不同于RT-11, CP/M,OpenVMS,MS-DOS,AmigaOS, 以及微软的Windows
        ，这些系统存在一个路径包含了一个设备名字，比如[35;1m"C:\"[;m。(尽管如
        此, 路径条目确实存在引用了物理设备作为正常的文件系统的一部分.
        参考第 1.2.2 节 [35;1m“文件系统深入解析”[;m。)

    [33;1m注意[m

    虽然你可以在文件名中使用任意的字幕或者符号, 但是在实际情况下这样
    做是一个坏主意. 最好避免使用一些在命令行里面含有特殊意义的字符,
    比如空格, 制表符, 换行符, 和其它的特殊字符: { } ( ) [ ] ' ` " \ /
    >< | ; ! #&^ * % @ $. 如果你想有一个区分度良好的命名, 比较好的选
    择是利用时期, 连字符和下划线. 你也可以每个单词的首字母大写, 这叫
    大驼峰命名法, 比如这样 [35;1m"LikeThis"[;m. 经验丰富的Linux用户会趋向于在
    文件名中不使用空格.

    [33;1m注意[m

    这个 [35;1m"root"[;m 可能既表示 [35;1m"超级用户root"[;m 又表示 [35;1m" 根目录"[;m(/root) .
    应该根据上下文确定它的用法.

    [33;1m注意[m

    单词path不仅表示包含全限定文件名, 也可能表示命令搜索的路径. 通常
    路径真实的意思是需要通过上下文来明确.

    关于文件层次的最佳详细实践在文件系统层次标准("/usr/share/doc/
    debian-policy/fhs/fhs-2.3.txt.gz" 和 hier (7)). 你应该记住以下的
    一些标准作为开始学习的步骤.

    表 1.3. 重要目录的用途列表

    ┌──────────────────────────────────┐
    │  目录   │        目录用途        │
    ├─────────┼────────────────────────┤
    │/        │根目录                  │
    ├─────────┼────────────────────────┤
    │/etc/    │系统范围的配置文件      │
    ├─────────┼────────────────────────┤
    │/var/log/│系统日志文件            │
    ├─────────┼────────────────────────┤
    │/home/   │所有非特权用户的用户目录│
    └──────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.2. 文件系统深入解析[;m

    按照UNIX系统的传统，Debian GNU / Linux 的文件系统是在物理数据存储
    设备诸如磁盘或其他存储设备上，与硬件设备的交互，如控制台和远程串
    口终端都是以统一的方式呈现在 [35;1m“/ dev /”[;m 下面。

    每个文件、目录、命名管道（一种两个程序间共享数据的方法）或 Debian
    GNU/Linux 系统上的物理设备都有一个叫做 inode的数据结构，描述了其
    相关属性，例如拥有它的用户（所有者），它属于的组，最后一次访问时
    间，等等。把所有东西都表示在文件系统中的想法是来源于 Unix，现代的
    Linux 内核则将这个思路进行了扩展。现在，甚至有关计算机上正在运行
    的进程的信息都可以在文件系统中找到。

    这个对物理实体和内部进程的统一和抽象是非常强大的，因为这允许我们
    用同样的命令对许多完全不同的设备进行同样的操作。甚至可以通过向链
    接到运行进程的特殊文件写入数据来改变内核的运行方式。

    [36;1m提示[m

    如果你需要识别文件树和物理实体之间的对应关系，不带参数运行mount
    (8)。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.3. 文件系统权限[;m

    类Unix系统的文件系统权限被定义给三类受影响的用户。

[33;1m      *[;m 拥有这个文件的用户（u）

[33;1m      *[;m 这个文件所属组的其他用户（g）

[33;1m      *[;m 所有其余的用户（o），同样称为[35;1m“世界”[;m和[35;1m“所有人”[;m

    对文件来说，每个对应权限允许下列动作。

[33;1m      *[;m 可读（r）权限允许所有者检查文件的内容。

[33;1m      *[;m 可写（w）权限允许所有者修改文件内容。

[33;1m      *[;m 可执行（x）权限允许所有者把文件当做一个命令运行。

    对于目录来说，每个对应权限允许下列动作。

[33;1m      *[;m 可读（r）权限允许所有者列出目录内的内容。

[33;1m      *[;m 可写（w）权限允许所有者添加或删除目录里面的文件。

[33;1m      *[;m 可执行（x）权限允许所有者访问目录里的文件。

    在这里，一个目录的可执行权限意味着不仅允许读目录里的文件，还允许
    显示他们的属性，例如大小和修改时间。

    [34;1mls(1)[m用于显示文件和目录的权限信息（更多）。当运行时带有[35;1m“-l”[;m选项，
    它将按给定顺序显示下列信息。

[33;1m      *[;m 文件类型（第一个字母）

[33;1m      *[;m 文件的访问权限（9个字符，三个字符组成一组按照用户、组、其他的
        顺序表示）

[33;1m      *[;m 链接到文件的硬链接数

[33;1m      *[;m 文件所有者的用户名

[33;1m      *[;m 这个文件所属的组名

[33;1m      *[;m 以字符（字节）为单位的文件大小

[33;1m      *[;m 文件的日期和时间（mtime）

[33;1m      *[;m 文件的名字

    表 1.4. [35;1m“ls -l”[;m输出的第一个字符列表

    ┌─────────────────┐
    │字符│    说明    │
    ├────┼────────────┤
    │-   │普通文件    │
    ├────┼────────────┤
    │d   │目录        │
    ├────┼────────────┤
    │l   │符号链接    │
    ├────┼────────────┤
    │c   │字符设备节点│
    ├────┼────────────┤
    │b   │块设备节点  │
    ├────┼────────────┤
    │p   │命名管道    │
    ├────┼────────────┤
    │s   │套接字      │
    └─────────────────┘


    [34;1mchown(1)[m用于 root 账户修改文件的所有者。[34;1mchgrp(1)[m用于文件的所有者
    或 root 账户修改文件所属的组。[34;1mchmod(1)[m用于文件的所有者或root账户
    修改文件和文件夹的访问权限。操作一个foo文件的基本语法如下。

[31;1m    # chown <newowner> foo[;m
[31;1m    # chgrp <newgroup> foo[;m
[31;1m    # chmod  [ugoa][+-=][rwxXst][,...] foo[;m

    例如，你可以按照下面使一个目录树被用户foo所有，并共享给组bar。

[31;1m    # cd /some/location/[;m
[31;1m    # chown -R foo:bar .[;m
[31;1m    # chmod -R ug+rwX,o=rX .[;m

    有三个更加特殊的权限位。

[33;1m      *[;m Set-User-ID(SUID)位（s或S替换用户的x）

[33;1m      *[;m Set-Group-ID(SGID)位（s或S替换组的x）

[33;1m      *[;m 粘滞位（t或T替代其他用户的x）

    如果[35;1m“ls -l”[;m对这些位的输出是大写字母，则表示这些输出下面的执行位未
    设置。

    给一个可执行文件设置 Set-User-ID 位将允许一个用户以他自己的ID运行
    这个可执行文件（例如 root 用户）。类似的，给一个可执行文件设置了
    Set-Group-ID 位将允许一个用户以文件所属组的 ID 运行该文件。（例如
    root 组）。由于这些设置可能导致安全风险，设置它们为可用的时候需要
    格外留意。

    在一个目录上设置[35;1m“Set-Group-ID”[;m将打开类 BSD 的文件创建计划，所有在
    目录里面创建的文件将属于目录所属的组。

    给一个目录设置[35;1m“粘滞位”[;m将保护该目录内的文件不被其所有者之外的一个
    用户删除。为了保护一个在像[35;1m“/tmp”[;m这样所有人可写或同组可写的目录下
    文件内容的安全，不仅要去除可写权限，还要给其所在目录设置粘滞位。
    否则，该文件可以被任意对其所在目录有写权限的用户删除并创建一个同
    名的新文件。

    这里有一点有趣的文件权限例子。

[32;1m    $ ls -l /etc/passwd /etc/shadow /dev/ppp /usr/sbin/exim4[;m
[33m    crw------T 1 root root   108, 0 Oct 16 20:57 /dev/ppp[m
[33m    -rw-r--r-- 1 root root     2761 Aug 30 10:38 /etc/passwd[m
[33m    -rw-r----- 1 root shadow   1695 Aug 30 10:38 /etc/shadow[m
    -rwsr-xr-x 1 root root   973824 Sep 23 20:04 /usr/sbin/exim4
[32;1m    $ ls -ld /tmp /var/tmp /usr/local /var/mail /usr/src[;m
    drwxrwxrwt 14 root root  20480 Oct 16 21:25 /tmp
    drwxrwsr-x 10 root staff  4096 Sep 29 22:50 /usr/local
    drwxr-xr-x 10 root root   4096 Oct 11 00:28 /usr/src
    drwxrwsr-x  2 root mail   4096 Oct 15 21:40 /var/mail
    drwxrwxrwt  3 root root   4096 Oct 16 21:20 /var/tmp

    [34;1mchmod(1)[m有另一种数值模式来描述文件权限。这种数字模式使用3到4位八
    进制（底为8）数。

    表 1.5. [34;1mchmod(1)[m 命令文件权限的数字模式

    ┌───────────────────────────────────────────────────────────────┐
    │    数字     │                      说明                       │
    ├─────────────┼─────────────────────────────────────────────────┤
    │第一个可选数 │Set-User-ID (=4), Set-Group-ID (=2) 和粘滞位 (=1)│
    │字           │之和                                             │
    ├─────────────┼─────────────────────────────────────────────────┤
    │第二个数字   │用户的可读 (=4), 可写 (=2)和可执行 (=1) 权限之和 │
    ├─────────────┼─────────────────────────────────────────────────┤
    │第三个数字   │组权限同上                                       │
    ├─────────────┼─────────────────────────────────────────────────┤
    │第四个数字位 │其他用户权限同上                                 │
    └───────────────────────────────────────────────────────────────┘


    这听起来很复杂实际上相当简单。如果你把[35;1m“ls -l”[;m命令输出的前几列（
    2-10），看成以二进制（底为2）表示文件的权限（[35;1m“-”[;m看成0，[35;1m“rwx”[;m看成1
    ），你应该可以理解用数字模式值的最后3位数字对文件权限的八进制表示
    。

    尝试下列例子

[32;1m    $ touch foo bar[;m
[32;1m    $ chmod u=rw,go=r foo[;m
[32;1m    $ chmod 644 bar[;m
[32;1m    $ ls -l foo bar[;m
[33m    -rw-r--r-- 1 penguin penguin 0 Oct 16 21:39 bar[m
[33m    -rw-r--r-- 1 penguin penguin 0 Oct 16 21:35 foo[m

    [36;1m提示[m

    如果你需要在 shell 脚本中访问[35;1m“ls -l”[;m显示的信息，你需要使用相关命
    令，[34;1m如test(1)[m，[34;1mstat(1)[m[34;1m和readlink(1)[m。shell 内置命令，如[35;1m“[”[;m或
    [35;1m“test”[;m，可能也会用到。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.4. 控制新建文件的权限：umask[;m

    什么权限将应用到新建文件受 shell 内置命令 umask 的限制。参见dash
    (1)，[34;1mbash(1)[m，[34;1m和内建命令(7)[m。

     (文件权限) = (请求的文件权限) & ~(umask 值)

    表 1.6. umask值举例

    ┌────────────────────────────────────────────────────┐
    │umask值│创建的文件权限│创建的目录权限│     用法     │
    ├───────┼──────────────┼──────────────┼──────────────┤
[33m    │0022   │-rw-r--r--    │-rwxr-xr-x    │仅所属用户可写│[m
    ├───────┼──────────────┼──────────────┼──────────────┤
[33m    │0002   │-rw-rw-r--    │-rwxrwxr-x    │仅所属组可写  │[m
    └────────────────────────────────────────────────────┘


    Debian 默认使用用户私人组（UPG）。每当一个新用户添加到系统的时候
    都会创建一个UPG。UPG 的名字和创建它的用户相同，这个用户是这个UPG
    的唯一成员。自从每个用户都有自己的私人组之后，把umask设置成0002变
    得更安全了。（在某些 Unix 变体中，把所有普通用户设置到一个叫users
    的组是非常常见的做法，在这种情况下，出于安全考虑把umask设为0022是
    一个好主意）

    [36;1m提示[m

    通过把 [35;1m“umask 002”[;m 写入 ~/.bashrc 文件打开UPG。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.5. 一组用户的权限（组）[;m

    为了使组权限应用到一个特定用户，这个用户需要通过使用 [35;1m“sudo vigr”[;m
    编辑 /etc/group 以及使用 [35;1m“sudo vigr -s”[;m 编辑 /etc/gshadow 成为该
    组的成员。你需要注销之后重新登录（或运行 [35;1m“exec newgrp”[;m）以启用新
    的组配置。

    [33;1m注意[m

    或者，你可以通过添加一行 [35;1m“auth optional pam_group.so”[;m到 “/etc/
    pam.d/common-auth” 以及配置 [35;1m“/etc/security/group.conf”[;m ，使得在身
    份验证过程动态添加用户到组。（参见第 4 章认证。）

    在 Debian 系统中，硬件设备是另一种文件。如果你从一个用户账户访问
    某些设备出现问题，例如CD-ROM和USB记忆棒，你需要使这个用户成为相关
    组的成员。

    一些著名的由系统提供的组允许其成员不需要 root 权限访问某些特定的
    文件和设备。

    表 1.7. 关于文件访问的由系统提供的著名组列表

    ┌─────────────────────────────────────────────────────────┐
    │  组   │             可访问文件和设备的描述              │
    ├───────┼─────────────────────────────────────────────────┤
    │dialout│完全及直接的访问串口端口（[35;1m“/dev/ttyS[0-3]”[;m）     │
    ├───────┼─────────────────────────────────────────────────┤
    │dip    │有限的访问串口，创建到信任点的拨号 IP 连接       │
    ├───────┼─────────────────────────────────────────────────┤
    │cdrom  │CD-ROM, DVD+/-RW 驱动器                          │
    ├───────┼─────────────────────────────────────────────────┤
    │audio  │音频设备                                         │
    ├───────┼─────────────────────────────────────────────────┤
    │video  │视频设备                                         │
    ├───────┼─────────────────────────────────────────────────┤
    │scanner│扫描仪                                           │
    ├───────┼─────────────────────────────────────────────────┤
    │adm    │系统监控日志                                     │
    ├───────┼─────────────────────────────────────────────────┤
    │staff  │一些用于初级管理工作的目录：[35;1m“/usr/local”[;m，[35;1m“/home”[;m│
    └─────────────────────────────────────────────────────────┘


    [36;1m提示[m

    你需要属于 dialout 组才能重配置调制解调器、拨号到任意地方，等等。
    但如果root 用户在 [35;1m“/etc/ppp/peers/”[;m 为受信任点创建了预定义配置文
    件的话，你只需要属于dip 组，就可以创建拨号 IP来连接到那些受信任的
    点上，需使用的命令行工具包括 [34;1mpppd(8)[m、[34;1mpon(1)[m[34;1m以及poff(1)[m。

    某些著名的由系统提供的组允许它们的成员不带 root 权限运行特定的命
    令。

    表 1.8. 著名的由系统提供用于特定命令运行的组列表

    ┌──────────────────────────────────────────────────────┐
    │  组   │                  可访问命令                  │
    ├───────┼──────────────────────────────────────────────┤
    │sudo   │不带它们的密码运行 sudo                       │
    ├───────┼──────────────────────────────────────────────┤
    │lpadmin│执行命令以从打印机数据库添加、修改、移除打印机│
    └──────────────────────────────────────────────────────┘


    由系统提供的用户和组的完整列表，参见由 base-passwd包提供的“/usr/
    share/doc/base-passwd/users-and-groups.html”中，当前版本的“用户和
    组”。

    用户和组系统的管理命令，[34;1m参见passwd(5)[m，[34;1mgroup(5)[m，[34;1mshadow(5)[m，
    [34;1mnewgrp(1)[m，[34;1mvipw(8)[m，[34;1mvigr(8)[m，[34;1m以及pam_group(8)[m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.6. 时间戳[;m

    GNU/Linux 文件有三种类型的时间戳。

    表 1.9. 时间戳类型列表

    ┌───────────────────────────────────┐
    │类型 │ 含义（历史上 Unix 的定义）  │
    ├─────┼─────────────────────────────┤
    │mtime│文件修改时间(ls -1)          │
    ├─────┼─────────────────────────────┤
    │ctime│文件状态修改时间 (ls -lc)    │
    ├─────┼─────────────────────────────┤
    │atime│文件最后被访问的时间 (ls -lu)│
    └───────────────────────────────────┘


    [33;1m注意[m

    ctime 不是文件创建时间。

    [33;1m注意[m

    atime在 GNU/Linux 系统上的真实值可能和历史上 Unix 的定义有所不同
    。

[33;1m      *[;m 覆盖一个文件，将会改变该文件所有的 mtime, ctime, 和 atime 属
        性。

[33;1m      *[;m 改变文件的所有者或者权限，将改变文件的 ctime 和 atime 属性。

[33;1m      *[;m 在历史上的 Unix 系统中，读取一个文件将改变文件的 atime 属性。

[33;1m      *[;m 读一个文件，将改变文件的 atime属性；在 GNU/Linux 系统上，这仅
        发生在其文件系统使用[35;1m“strictatime”[;m参数挂载的情况下。

[33;1m      *[;m 如果 GNU/Linux 系统的文件系统使用 [35;1m"relatime"[;m 选项挂载，第一次
        读文件，或者随后读文件，将改变该文件的 atime 属性. (从 Linux
        2.6.30 开始的默认行为)

[33;1m      *[;m 如果 GNU/Linux 系统的文件系统使用 [35;1m"noatime"[;m 挂载，则读一个文
        件，不会改变这个文件的 atime 属性。

    [33;1m注意[m

    为了在正常的使用场景中能够提升文件系统的读取效率，新增了
    [35;1m"noatime"[;m 和 [35;1m"relatime"[;m 这两个加载选项。如使用了 [35;1m"strictatime"[;m 选
    项，即使简单的文件读操作都伴随着更新 atime 属性这个耗时的写操作。
    但是 atime 属性除了 [34;1mmbox(5)[m 文件以外却很少用到。详情请看 [34;1mmount(8)[m
    。

    使用 [34;1mtouch(1)[m 命令修改已存在文件的时间戳。

    对于时间戳，ls 命令输出字段在非英语区域（[35;1m“fr_FR.UTF-8”[;m）与旧的区
    域（[35;1m“C”[;m）不同。

[32;1m    $ LANG=fr_FR.UTF-8  ls -l foo[;m
[33m    -rw-rw-r-- 1 penguin penguin 0 oct. 16 21:35 foo[m
[32;1m    $ LANG=C  ls -l foo[;m
[33m    -rw-rw-r-- 1 penguin penguin 0 Oct 16 21:35 foo[m

    [36;1m提示[m

    参考第 9.2.5 节 [35;1m“定制时间和日期的显示”[;m 自定义 [35;1m“ls -l”[;m 输出。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.7. 链接[;m

    有两种方法把一个文件 [35;1m“foo”[;m 链接到一个不同的文件名 [35;1m“bar”[;m。

[33;1m      *[;m 硬链接

[33;1m          +[;m 对现有文件重复名称

[33;1m          +[;m [35;1m“ln foo bar”[;m

[33;1m      *[;m 符号链接或 symlink

[33;1m          +[;m 通过名字指向另一个文件的特殊文件

[33;1m          +[;m [35;1m“ln -s foo bar”[;m

    请参阅下面的示例，rm 命令结果中链接数的变化和细微的差别。

[32;1m    $ umask 002[;m
[32;1m    $ echo "Original Content" > 1 foo[;m
[32;1m    $ ls -li foo[;m
[33m    1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 foo[m
[32;1m    $ ln foo bar     # 硬链接[;m
[32;1m    $ ln -s foo baz  # 符号链接[;m
[32;1m    $ ls -li foo bar baz[;m
[33m    1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 bar[m
    1450180 lrwxrwxrwx 1 penguin penguin  3 Oct 16 21:47 baz -> 2 foo
[33m    1449840 -rw-rw-r-- 2 penguin penguin 17 Oct 16 21:42 foo[m
[32;1m    $ rm foo[;m
[32;1m    $ echo "New Content" > 3 foo[;m
[32;1m    $ ls -li foo bar baz[;m
[33m    1449840 -rw-rw-r-- 1 penguin penguin 17 Oct 16 21:42 bar[m
    1450180 lrwxrwxrwx 1 penguin penguin  3 Oct 16 21:47 baz -> 4 foo
[33m    1450183 -rw-rw-r-- 1 penguin penguin 12 Oct 16 21:48 foo[m
[32;1m    $ cat bar[;m
    Original Content
[32;1m    $ cat baz[;m
    New Content

    硬链接可以在同一个文件系统内创建，并共用同一个inode号，[34;1m由ls(1)[m带
    [35;1m“-i”[;m选项显示的。

    符号链接总是名义上具有[35;1m“rwxrwxrwx”[;m的文件访问权限，如上面例子所示，
    实际的有效访问权限由它所指向的文件确定。

    [33;1m小心[m

    除非你有非常好的理由，否则不要创建一个复杂的符号链接或硬链接通常
    是个好主意。符号链接的逻辑组合可能导致文件系统噩梦般的无限循环。

    [33;1m注意[m

    通常使用符号链接比使用硬链接更合适，除非你有一个好理由使用硬链接
    。

    [35;1m“.”[;m目录链接到它所在的目录，因此任何新建目录的链接数从2开始。[35;1m“..”[;m
    目录链接到父目录，因此目录的链接数随着新的子目录的创建而增加。

    如果你刚从Windows迁移到Linux，你很快将清楚 Unix 的文件名链接相较
    于Windows最相近的[35;1m“快捷方式”[;m是多么精心设计的。由于它是在文件系统中
    实现的，应用无法看到链接文件跟原始文件之间的区别。在硬链接这种情
    况，这真的是毫无差别。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.8. 命名管道（先进先出）[;m

    命名管道是一个像管道一样的文件。你把内容放进了文件，它从另一端出
    来。因此，它被称为FIFO，即先进先出：你从管道这端先放进去的东西会
    从另一端先出来。

    如果对一个命名管道进行写入操作，写入的过程不会被终止，直到写入的
    信息从管道中被读取出来。读取过程将会持续到没有信息可以读取为止。
    管道的大小始终是零，它不存储数据，它只是连接两个过程，像shell提供
    的 [35;1m" 1| 2"[;m 语法功能一样。然而，一旦管道有了名称，这两个进程就可以
    不必在同一个命令行，甚至由同一个用户运行。管道是 UNIX 的一个非常
    有影响力的创新。

    尝试下列例子

[32;1m    $ cd; mkfifo mypipe[;m
[32;1m    $ echo "hello" >mypipe & # 放到后台运行[;m
    [1] 8022
[32;1m    $ ls -l mypipe[;m
[33m    prw-rw-r-- 1 penguin penguin 0 Oct 16 21:49 mypipe[m
[32;1m    $ cat mypipe[;m
    hello
    [1]+  Done                    echo [35;1m"hello"[;m >mypipe
[32;1m    $ ls mypipe[;m
    mypipe
[32;1m    $ rm mypipe[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.9. 套接字[;m

    套接字被广泛应用于所有的互联网通信，数据库和操作系统本身。它类似
    于命名管道（FIFO）并且允许进程之间甚至不同计算机之间进行信息交换
    。对于套接字，这些进程不需要在同一时间运行，也不需要是同一个父进
    程的子进程。它是进程间通信（IPC）的一个节点。信息的交换可能会通过
    网络发生在不同主机之间。最常见的两种是互联网套接字和 UNIX域套接字
    。

    [36;1m提示[m

    通过 [35;1m"netstat -an"[;m 命令可以很方便的查看系统已经打开了那些套接字。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.10. 设备文件[;m

    设备文件包括系统的物理设备和虚拟设备，如硬盘、显卡、显示屏、键盘
    。虚拟设备的一个例子是控制台，用[35;1m“/dev/console”[;m来描述。

    设备文件有两种类型。

[33;1m      *[;m 字符设备

[33;1m          +[;m 每次访问一个字符

[33;1m          +[;m 一个字符等于一个字节

[33;1m          +[;m 如键盘、串口…

[33;1m      *[;m 块设备

[33;1m          +[;m 通过更大的单元–块，进行访问

[33;1m          +[;m 一个块>一个字节

[33;1m          +[;m 如硬盘等…

    你可以读写块设备文件，尽管该文件可能包含二进制数据，读取后显示出
    无法理解的乱码。向文件写入数据，有时可以帮助定位硬件连接故障。比
    如，你可以将文本文件导入打印机设备[35;1m“/dev/lp0”[;m，或者将调制解调命令
    发送到合适的串口[35;1m“/dev/ttyS0”[;m。但是，除非这些操作都小心完成，否则
    可能会导致一场大灾难。所以要特别小心。

    [33;1m注意[m

    常规访问打印机，[34;1m使用lp(1)[m。

    [34;1m设备的节点数可以通过执行ls(1)[m得到，如下所示。

[32;1m    $ ls -l /dev/sda /dev/sr0 /dev/ttyS0 /dev/zero[;m
[33m    brw-rw---T  1 root disk     8,  0 Oct 16 20:57 /dev/sda[m
[33m    brw-rw---T+ 1 root cdrom   11,  0 Oct 16 21:53 /dev/sr0[m
[33m    crw-rw---T  1 root dialout  4, 64 Oct 16 20:57 /dev/ttyS0[m
    crw-rw-rw-  1 root root     1,  5 Oct 16 20:57 /dev/zero

[33;1m      *[;m [35;1m"/dev/sda"[;m的主设备号是8，次设备号是0。它可以被disk群组的用户
        读写。

[33;1m      *[;m [35;1m"/dev/sr0"[;m的主设备号是11，次设备号是0。它可以被cdrom群组的用
        户读写。

[33;1m      *[;m [35;1m"/dev/ttyS0"[;m的主设备号是4，次设备号是64。它可以被dailout群组
        的用户读写。

[33;1m      *[;m [35;1m"/dev/zero"[;m的主设备号是1，次设备号是5。它可以被任意用户读写。

    在现代Linux系统中，处在[35;1m"/dev"[;m之下的文件系统会自动被udev()机制填充
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.11. 特殊设备文件[;m

    还有一些特殊的设备文件。

    表 1.10. 特殊设备文件列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 设备文件  │操作│                   响应描述                   │
    ├───────────┼────┼──────────────────────────────────────────────┤
    │/dev/null  │读取│返回“文件结尾字符（EOF）“                     │
    ├───────────┼────┼──────────────────────────────────────────────┤
    │/dev/null  │写入│无返回（一个无底的数据转存深渊）              │
    ├───────────┼────┼──────────────────────────────────────────────┤
    │/dev/zero  │读取│返回[35;1m"\0空字符"[;m（与ASCII中的数字0不同）        │
    ├───────────┼────┼──────────────────────────────────────────────┤
    │/dev/random│读取│从真随机数产生器返回一个随机字符，供应真熵（缓│
    │           │    │慢）                                          │
    ├───────────┼────┼──────────────────────────────────────────────┤
    │/dev/      │读取│从能够安全加密的伪随机数产生器返回一个随机字符│
    │urandom    │    │                                              │
    ├───────────┼────┼──────────────────────────────────────────────┤
    │/dev/full  │写入│返回磁盘已满（ENOSPC）错误                    │
    └───────────────────────────────────────────────────────────────┘


    这些特别设备文件经常和shell数据重定向联合使用（参考第 1.5.8 节 “
    典型的顺序命令和 shell 重定向”）。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.12. procfs 和 sysfs[;m

    procfs和sysfs两个伪文件系统，分别加载于[35;1m"/proc"[;m和[35;1m"/sys"[;m之上，将内
    核中的数据结构暴露给用户空间。或者说，这些条目是虚拟的，他们打开
    了深入了解操作系统运行的方便之门。

    目录[35;1m"/proc"[;m为每个正在运行的进程提供了一个子目录，目录的名字就是进
    程标识符（PID）。需要读取进程信息的系统工具，如ps()，可以从这个目
    录结构获得信息。

    [35;1m"/proc/sys"[;m之下的目录，包含了可以更改某些内核运行参数的接口。（你
    也可以使用专门的sysctl()命令修改，或者使用其预加载/配置文件"/etc/
    sysctl.conf"。）

    当人们看到这个特别大的文件[35;1m"/proc/kcore"[;m时，常常会惊慌失措。这个文
    件于你的的电脑内存大小相差不多。它被用来调试内核。它是一个虚拟文
    件，指向系统内存，所以不必担心它的大小。

    [35;1m"/sys"[;m以下的目录包含了内核输出的数据结构，它们的属性，以及它们之
    间的链接。它同时也包含了改变某些内核运行时参数的接口。

    参考[35;1m"proc.txt(.gz)"[;m，[35;1m"sysfs.txt(.gz)"[;m，以及其他相关的Linux内核文
    档（[35;1m"/usr/share/doc/linux-doc-*/Documentation/filesystems/*"[;m），
    这些文件由linux-doc-*软件包提供。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.2.13. tmpfs[;m

    tmpfs是一个临时文件系统，它的文件都保存在虚拟内存中。必要时，位于
    内存页缓存的tmpfs数据可能被交换到硬盘中的交换分区。

    系统启动早期阶段，[35;1m"/run"[;m目录挂载为tmpfs。这样即使[35;1m"/"[;m挂载为只读，
    它也是可以被写入的。它为过渡态文件提供了新的存储空间，同时也替代
    了Filesystem Hierarchy Standar2.3版中说明的目录位置：

[33;1m      *[;m [35;1m"/var/run"[;m → [35;1m"/run"[;m

[33;1m      *[;m [35;1m"/var/lock"[;m → [35;1m"/run/lock"[;m

[33;1m      *[;m [35;1m"/dev/shm"[;m → [35;1m"/run/shm"[;m

    参考[35;1m"tmpfs.txt(.gz)"[;m, 文件位于Linux内核文档（"/usr/share/doc/
    linux-doc-*/Documentation/filesystems/*"）目录之下，由软件包
    linux-doc-*提供。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.3. Midnight Commander (MC)[;m

    Midnight Commander (MC) 是一个Linux终端或其它终端环境下的 GNU 版
    [35;1m"瑞士军刀"[;m 。它为新手们提供了一个菜单式样的终端使用体验，这更易于
    学习运用标准的 Unix 命令。

    你可能需要按照下面的命令来安装标题为 [35;1m" mc "[;m 的Midnight Commander
    包.

[32;1m    $ sudo apt-get install mc[;m

    使用 [34;1mmc(1)[m 命令那个来浏览 Debian 系统。这是最好的学习方式。请使用
    光标键和回车键来翻看一些感兴趣的内容。

[33;1m      *[;m [35;1m"/etc"[;m 及其子目录

[33;1m      *[;m [35;1m" /var/log "[;m 及其子目录

[33;1m      *[;m [35;1m" /usr/share/doc "[;m 及其子目录

[33;1m      *[;m [35;1m" /sbin "[;m 和 [35;1m" /bin "[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.3.1. 自定义 MC[;m

    为了在退出 MC 的时候更改目录并 cd 到其它目录，我建议修改 "~
    /.bashrc" 包含一个由 mc 包提供的脚本。

    . /usr/lib/mc/mc.sh

    [34;1m查看mc(1)[m (在 [35;1m"-P"[;m 选项里) 的原因。 (如果你不能理解我这里说所讲的
    ，你可以稍后回头再看)

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.3.2. 启动 MC[;m

    MC 可以这样启动起来。

[32;1m    $ mc[;m

    MC 通过菜单覆盖了所有的文件操作，因此而让用户更省心省力。只需要按
    F1 就可以跳转到帮助界面。你只需要按光标键和功能键就可以使用 MC。

    [33;1m注意[m

    某些终端比如 [34;1mgnome-terminal(1)[m，功能键的按键触发消息可能会被终端
    程序截取。在 gnome-terminal 里可以通过 [35;1m"Edit"[;m → "Keyboard
    Shortcuts" 选项设置来禁止这类消息。

    如果你遇到字符编码问题，显示出来都是乱码，通过添加[35;1m"-a"[;m到 MC 命令
    行或许有助于避免此类问题。

    如果这样不能解决 MC 中的显示问题，可以参考第 9.4.6 节 [35;1m“终端配置”[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.3.3. MC 文件管理[;m

    默认的两个目录面板里包含了文件列表。另一个有用的模式是设置右边窗
    口为 [35;1m"信息"[;m 来读取文件访问权限信息。接下来是一些必要的快捷键。守
    [34;1m护进程gpm(8)[m运行的时候，你也可以在字符命令行里用鼠标来操作。 (在
    MC 里进行复制和粘贴操作的时候一定要按住 shift 键。)

    表 1.11. MC 快捷键绑定

    ┌─────────────────────────────────────────────────────────┐
    │     快捷键     │               键绑定功能               │
    ├────────────────┼────────────────────────────────────────┤
    │F1              │帮助菜单                                │
    ├────────────────┼────────────────────────────────────────┤
    │F3              │内部文件查看器                          │
    ├────────────────┼────────────────────────────────────────┤
    │F4              │内部编辑器                              │
    ├────────────────┼────────────────────────────────────────┤
    │F9              │激活下拉菜单                            │
    ├────────────────┼────────────────────────────────────────┤
    │F10             │退出 Midnight Commander                 │
    ├────────────────┼────────────────────────────────────────┤
    │Tab             │在两个窗口间移动                        │
    ├────────────────┼────────────────────────────────────────┤
    │Insert 或 Ctrl-T│用于多文件操作的标记文件，如副本        │
    ├────────────────┼────────────────────────────────────────┤
[33m    │Del             │删除文件 (注意---设置 MC 为安全删除模式)│[m
    ├────────────────┼────────────────────────────────────────┤
    │光标键          │自我解释                                │
    └─────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.3.4. MC 命令行技巧[;m

[33;1m      *[;m cd 命令在选中的屏幕中改变目录。

[33;1m      *[;m Ctrl-Enter or Alt-Enter 拷贝文件名到命令行。使用 [34;1mcp(1)[m 和 mv
        (1) 两个命令来进行处理。

[33;1m      *[;m Alt-Tab 显示文件名自动补全提示。

[33;1m      *[;m 通过添加 MC 命令参数可以指定开始目录；例如，[35;1m"mc /etc /root"[;m。

[33;1m      *[;m Esc + n-key → Fn (i.e., Esc + 1 → F1, etc.; Esc + 0 → F10)

[33;1m      *[;m 先按 Esc 键和同时按 Alt 是一样；例如, 输入 Esc + c 和同时
        Alt-C是一样的。Esc 被称为 meta 键，有时候也称之为 [35;1m"M-"[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.3.5. MC 内部编辑器[;m

    这个内置编辑器有一个有意思的粘贴方案。摁 F3 开始选择起始点，再摁
    F3 选择终点并高亮选择区。此刻你可以移动你的光标，使用 F6 将选区移
    动到当前光标下，F5 则将选区复制到当前光标下。 F2 保存文件。 F10
    退出。多数光标键以直观的方式工作。

    MC 编辑器可以直接以下面的命令方式启动。

[32;1m    $ mc -e filename_to_edit[;m

[32;1m    $ mcedit filename_to_edit[;m

    这不是一个多窗口编辑器，但是能通过复用终端来达到同样的效果。在两
    个窗口间复制，需要用到 Alt-F < n > 来切换虚拟终端并使用
    [35;1m"File→Insert file"[;m 或者 [35;1m"File→Copy to file"[;m 来移动文本。

    内部编辑器可以被外部编辑器替代。

    同样，许多程序使用环境变量$EDITOR或$VISUAL来决定编辑器的使用。如
    [34;1m果你准备使用vim(1)[m[34;1m或者nano(1)[m来开始，你或许需要将下面的代码加入"~
    /.bashrc"来对mcedit进行设置。

    export EDITOR=mcedit
    export VISUAL=mcedit

    如果可能的话我推荐用 [35;1m"vim"[;m。

    [34;1m如果你使用vim(1)[m并不顺手，[34;1m你可以在大部分系统中继续使用mcedit(1)[m来
    进行工作。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.3.6. MC 内部查看器[;m

    MC是一个非常智能的查看器。这是一个在文档中搜索文本的好工具。我经
    常使用它在/usr/share/doc目录中查找文件。这是浏览大量Linux信息的最
    快方式。这个查看器可以通过下列命令中的任何一个来直接启动。

[32;1m    $ mc -v path/to/filename_to_view[;m

[32;1m    $ mcview path/to/filename_to_view[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.3.7. 自动启动 MC[;m

    在文件中输入回车，用适当的程序来处理文件的内容 (查看第 9.3.11 节
    [35;1m“自定义被启动的程序”[;m)。这是 MC 一个非常方便的用法。

    表 1.12. MC 中对回车键的响应

    ┌───────────────────────────────────────────────────────┐
    │         文件类型         │       对回车键的响应       │
    ├──────────────────────────┼────────────────────────────┤
    │可执行文件                │执行命令                    │
    ├──────────────────────────┼────────────────────────────┤
    │帮助文档                  │管道内容查看器软件          │
    ├──────────────────────────┼────────────────────────────┤
    │html 文件                 │管道内容网页浏览器          │
    ├──────────────────────────┼────────────────────────────┤
    │[35;1m"*.tar.gz"[;m 和 [35;1m"*.deb"[;m 文件│浏览其内容就像查看子目录一样│
    └───────────────────────────────────────────────────────┘


    为让这些查看器和虚拟文件特征生效，可查看的文件不能够被设置为可执
    行。使用 [34;1mchmod(1)[m 或通过 MC 文件菜单改变他们的状态。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.3.8. MC 中的 FTP 虚拟文件系统[;m

    MC 能够使用 FTP 跨因特网访问文件。在菜单按 F9, 然后输入 [35;1m"p"[;m 来激
    活 FTP 虚拟文件系统。按 [35;1m"username:passwd@hostname.domainname"[;m 的
    形式输入 URL,就会像本地目录一样来检索远程目录。

    试着打开 [35;1m"[deb.debian.org/debian]"[;m 来浏览 Debian 的文件组织结构。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4. 类 Unix 工作环境基础[;m

    虽然 MC 差不多可以让你做任何事情，但学会从 shell 提示下使用命令行
    工具也是非常重要的，可以让你变得熟悉类 Unix 工作环境。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.1. 登录 shell[;m

    你可以通过 [34;1mchsh(1)[m 选择你的登录 shell。

    表 1.13. shell 程序列表

    ┌───────────────────────────────────────────────────────────────┐
    │软件│流行度 │大小│POSIX │                 说明                 │
    │ 包 │       │    │shell │                                      │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │bash│V:835, │5776│Yes   │Bash: GNU Bourne Again SHell (事实上的│
    │    │I:999  │    │      │标准)                                 │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │tcsh│V:9,   │1311│No    │TENEX C Shell: 一个 Berkeley csh 的增 │
    │    │I:37   │    │      │强版本                                │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │dash│V:932, │218 │Yes   │Debian Almquist Shell, 擅长 shell 脚本│
    │    │I:985  │    │      │                                      │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │zsh │V:35,  │2208│Yes   │Z shell:有许多增强的标准 shell        │
    │    │I:71   │    │      │                                      │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │mksh│V:3,   │1339│Yes   │Korn shell 的一个版本                 │
    │    │I:13   │    │      │                                      │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │csh │V:2,   │339 │No    │OpenBSD C Shell, Berkeley csh 的一个版│
    │    │I:11   │    │      │本                                    │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │sash│V:0,   │1037│Yes   │有内置命令的 Stand-alone shell (并不意│
    │    │I:5    │    │      │味着标准的 [35;1m"/bin/sh"[;m)                 │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │ksh │V:3,   │3276│Yes   │Korn shell的真正的 AT&T 版本          │
    │    │I:20   │    │      │                                      │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │rc  │V:0,   │154 │No    │AT&T Plan 9 rc shell 的一个实现       │
    │    │I:3    │    │      │                                      │
    ├────┼───────┼────┼──────┼──────────────────────────────────────┤
    │posh│V:0,   │186 │Yes   │Policy-compliant Ordinary SHell 策略兼│
    │    │I:0    │    │      │容的普通 shell(pdksh 派生)            │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    虽然类 POSIX 共享基本语法，但他们在 shell 变量和全局扩展等基本事
    情上，行为可以不同。细节请查阅他们的文档。

    在本教程中，交互式的 shell 总是指 bash.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.2. 定制bash[;m

    你可以通过[35;1m“~/.bashrc”[;[34;1mm来定制bash(1)[m的行为。

    尝试下列例子。

[31;1m    # enable bash-completion[;m
    if ! shopt -oq posix; then
      if [ -f /usr/share/bash-completion/bash_completion ]; then
        . /usr/share/bash-completion/bash_completion
      elif [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
      fi
    fi

[31;1m    # CD upon exiting MC[;m
    . /usr/lib/mc/mc.sh

[31;1m    # set CDPATH to a good one[;m
    CDPATH=.:/usr/share/doc:~:~/Desktop:~
    export CDPATH

    PATH=[35;1m"${PATH+$PATH:}/usr/sbin:/sbin"[;m
[31;1m    # set PATH so it includes user's private bin if it exists[;m
    if [ -d ~/bin ] ; then
      PATH=[35;1m"~/bin${PATH+:$PATH}"[;m
    fi
    export PATH

    EDITOR=vim
    export EDITOR

    [36;1m提示[m

    你可以在第 9 章系统技巧中的第 9.2.7 节 [35;1m“有颜色输出的命令”[;m找到更多
    关于bash的定制技巧。

    [36;1m提示[m

    bash-completion 软件包能够让 bash 进行命令补全.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.3. 特殊按键[;m

    在类Unix环境，有一些具有特殊含义的按键。请注意，普通的Linux字符控
    制台，只有左手边的Ctrl和Alt键可以正常工作。其中有几个值得记住的按
    键。

    表 1.14. bash的按键绑定列表

    ┌───────────────────────────────────────────────────────────────┐
    │         快捷键          │                描述                 │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-U                   │删除光标前到行首的字符               │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-H                   │删除光标前的一个字符                 │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-D                   │终止输入（如果你在使用shell，则退出  │
    │                         │shell）                              │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-C                   │终止一个正在运行的程序               │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-Z                   │通过将程序移动到后台来暂停程序       │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-S                   │停止屏幕输出                         │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-Q                   │激活屏幕输出                         │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-Alt-Del             │重启/关闭系统，[34;1m参见inittab(5)[m        │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Left-Alt-key（或         │Emacs和相似UI的元键（meta-key）      │
    │Windows-key）            │                                     │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Up-arrow                 │开始在bash中的命令历史搜索           │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-R                   │开始在bash中的增量命令历史搜索       │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Tab                      │在 bash 命令行中补全文件名           │
    ├─────────────────────────┼─────────────────────────────────────┤
    │Ctrl-V Tab               │在 bash 命令行中输出 Tab 而不是进行补│
    │                         │全                                   │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    [34;1mCtrl-S的终端功能可能被stty(1)[m禁用。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.4. Unix类型的鼠标操作[;m

    Unix类型的鼠标操作基于3键的鼠标系统。

    表 1.15. Unix样式的鼠标操作列表

    ┌───────────────────────────────────────┐
    │     操作     │          响应          │
    ├──────────────┼────────────────────────┤
    │左击并拖动鼠标│选择并复制到剪贴板      │
    ├──────────────┼────────────────────────┤
    │单击左键      │选择开头                │
    ├──────────────┼────────────────────────┤
    │单击右键      │选择末尾并拷贝到剪贴板  │
    ├──────────────┼────────────────────────┤
    │单击中键      │粘贴剪切板的内容到光标处│
    └───────────────────────────────────────┘


    在现代滚轮鼠标上的中央滚轮，被认为是中间键，并可以被当做中间键使
    用。在 2 键鼠标系统的情况下，同时按左键和右键就相当于按中间键。为
    了在 Linux 字符控制台使用鼠标，你需要把 gpm( 8) 作为后台守护进程
    （daemon）运行。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.5. 分页程序[;m

    [34;1mless(1)[m 命令是一个增强版的分页程序（文件内容查看器）。它按照指定
    的命令参数或标准输出来读取文件。在用 less 命令查看的时候如果需要
    帮助可以按 [35;1m“h”[;m。它的功能比 [34;1mmore(1)[m 命令更丰富，通过在脚本的开头执
    行 [35;1m"eval $(lesspipe)"[;m 或 [35;1m"eval $(lessfile)"[;m 它的功能还能变得更加
    强大。详细请参考 [35;1m"/usr/share/doc/less/LESSOPEN"[;m。 [35;1m"-R"[;m 选项可以实
    现原始的字符输出还可以启用 ANSI 颜色转义序列。详细请参考 [34;1mless(1)[m
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.6. 文本编辑器[;m

    在使用类 Unix 系统过程中，各种类似于Vim 或 Emacs的工具，你应该精
    通其中的一个。

    我认为习惯于使用 Vim 命令是一个明智的选择，因为Linux/Unix系统里一
    般都附带了 Vi 编辑器。 (实际上最初的vi 以及后来的 nvi 这类工具程
    序很常见。因为在 Vim 里提供了F1帮助键，在同类工具中它的功能更强大
    ，所以我选择 Vim 而不是其它新出的一些工具。)

    假设你不是用 Emacs 就是用XEmacs 作为你的编辑器，其实还有更好的选
    择，尤其是在编程的时候。 Emacs 还有很多其他的特点，包括新手导读，
    目录编辑器，邮件客户端等等。当编写脚本或程序的时候，它能自动识别
    当前工作模式所对应的格式，让使用更加便利。一些人甚至坚持认为Linux
    系统里最需要配备的就是 Emacs。花十分钟来学习 Emacs 可以为后面的工
    作剩下更多时间。在此强烈推荐学习使用 Emacs 时候直接使用 GNU Emacs
    参考手册。

    在实践应用中所有这些程序都会有一个教程，输入 [35;1m"vim"[;m 和F1键就可以启
    动Vim。建议你最好阅读一下前面的35行。移动光标到 [35;1m"|tutor|"[;m 并按
    Ctrl-] 就可以看到在线培训教程。

    [33;1m注意[m

    好的编辑器，像 Vim 和 Emacs，可以处理 UTF-8 及其它不常用编码格式
    的文本。有个建议就是在 X 环境下使用UTF-8编码，并安装要求的程序和
    字体。编辑器里可以选择独立于 X 环境的编码格式。关于多字节文本可以
    查阅参考文档。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.7. 设置默认文本编辑器[;m

    Debian有许多不同的编辑器。我们建议安装上面提到的vim软件包。

    Debian通过命令[35;1m“/usr/bin/editor”[;m提供了对系统默认编辑器的统一访问，
    因此其它程序（[34;1m例如reportbug(1)[m）可以调用它。你可以通过下列命令改
    变它。

[33m[32;1m    $ sudo update-alternatives --config editor[;m[m

    对于新手，我建议使用[35;1m“/usr/bin/vim.basic”[;m代替[35;1m“/usr/bin/vim.tiny”[;m，
    因为它支持格式高亮。

    [36;1m提示[m

    许多程序使用环境变量[35;1m“$EDITOR”[;m或[35;1m“$VISUAL”[;m来决定使用那个编辑器（参
    见第 1.3.5 节 [35;1m“MC 内部编辑器”[;m和第 9.3.11 节 [35;1m“自定义被启动的程序”[;m
    ）。出于Debian系统的一致性考虑，它们被设置到[35;1m“/usr/bin/editor”[;m。（
    在历史上，[35;1m“$EDITOR”[;m是[35;1m“ed”[;m，[35;1m“$VISUAL”[;m是[35;1m“vi”[;m。）

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.8. 定制vim[;m

    你可以通过[35;1m“~/.vimrc”[;[34;1mm来定制vim(1)[m的行为。

    尝试下列例子

[33m    " -------------------------------[m
    " Local configuration
    "
    set nocompatible
    set nopaste
    set pastetoggle=<f2>
    syn on
    if $USER == [35;1m"root"[;m
     set nomodeline
     set noswapfile
    else
     set modeline
     set swapfile
    endif
    " filler to avoid the line above being recognized as a modeline
    " filler
    " filler

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.9. 记录 shell 活动[;m

    shell命令的输出有可能滚动出了屏幕，并可能导致你无法再查看到它。将
    shell活动记录到文件中再来回顾它是个不错的主意。当你执行任何系统管
    理任务时，这种记录是必不可少的。

    记录 shell [34;1m活动的基本方法是在script(1)[m下运行 shell。

    尝试下列例子

[32;1m    $ script[;m
    Script started, file is typescript

    在script下使用任何shell命令。

    按Ctrl-D来退出script。

[32;1m    $ vim typescript[;m

    参见第 9.2.3 节 [35;1m“清晰的记录 shell 活动”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.4.10. 基本的Unix命令[;m

    让我们来学习基本的Unix命令。在这里，我指的是一般意义上的[35;1m“UNIX”[;m。
    任何UNIX克隆系统通常都会提供等价的命令。Debian系统也不例外。如果
    有一些命令不像你想的那样起作用，请不要担心。如果shell中使用了别名
    ，其对应的命令输出会不同。这些例子并不意味着要以这个顺序来执行。

    尝试使用非特权用户账号来使用下列的命令。

    表 1.16. 基本的Unix命令列表

    ┌───────────────────────────────────────────────────────────────┐
    │     命令      │                     说明                      │
    ├───────────────┼───────────────────────────────────────────────┤
    │pwd            │显示当前/工作目录的名称                        │
    ├───────────────┼───────────────────────────────────────────────┤
    │whoami         │显示当前的用户名                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │id             │显示当前用户的身份（名称、uid、gid和相关组）   │
    ├───────────────┼───────────────────────────────────────────────┤
    │file <foo>     │显示[35;1m“<foo>”[;m文件的文件类型                      │
    ├───────────────┼───────────────────────────────────────────────┤
    │type -p        │显示[35;1m“<commandname>”[;m命令的文件所处位置          │
    │<commandname>  │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │which          │同上                                           │
    │<commandname>  │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │type           │显示[35;1m“<commandname>”[;m命令的相关信息              │
    │<commandname>  │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │apropos        │查找与[35;1m“<key-word>”[;m有关的命令                   │
    │<key-word>     │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │man -k         │同上                                           │
    │<key-word>     │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │whatis         │用一行解释 [35;1m“<commandname>”[;m 命令                │
    │<commandname>  │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │man -a         │显示[35;1m“<commandname>”[;m命令的解释（Unix风格）      │
    │<commandname>  │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │info           │显示[35;1m“<commandname>”[;m命令相当长的解释（GNU风格） │
    │<commandname>  │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │ls             │显示目录内容（不包含以 . 点号开头的文件和目录）│
    ├───────────────┼───────────────────────────────────────────────┤
    │ls -a          │显示目录内容（包含所有文件和目录）             │
    ├───────────────┼───────────────────────────────────────────────┤
    │ls -A          │显示目录内容（包含几乎所有文件和目录，除了[35;1m“..”[;m │
    │               │和[35;1m“.”[;m）                                        │
    ├───────────────┼───────────────────────────────────────────────┤
    │ls -la         │显示所有的目录内容，并包含详细的信息           │
    ├───────────────┼───────────────────────────────────────────────┤
    │ls -lai        │显示所有的目录内容，并包含inode和详细的信息    │
    ├───────────────┼───────────────────────────────────────────────┤
    │ls -d          │显示当前目录下的所有目录                       │
    ├───────────────┼───────────────────────────────────────────────┤
    │tree           │使用树状图显示目录内容                         │
    ├───────────────┼───────────────────────────────────────────────┤
    │lsof <foo>     │列出处于打开状态的文件 [35;1m"<foo>"[;m                 │
    ├───────────────┼───────────────────────────────────────────────┤
    │lsof -p <pid>  │列出被某进程打开的文件: [35;1m"<pid>"[;m                │
    ├───────────────┼───────────────────────────────────────────────┤
    │mkdir <foo>    │在当前目录中建立新目录[35;1m“<foo>”[;m                  │
    ├───────────────┼───────────────────────────────────────────────┤
    │rmdir <foo>    │删除当前目录中的[35;1m“<foo>”[;m目录                    │
    ├───────────────┼───────────────────────────────────────────────┤
    │cd <foo>       │切换到当前目录下或变量[35;1m“$CDPATH”[;m中的[35;1m“<foo>”[;m目录 │
    ├───────────────┼───────────────────────────────────────────────┤
    │cd /           │切换到根目录                                   │
    ├───────────────┼───────────────────────────────────────────────┤
    │cd             │切换到当前用户的家目录                         │
    ├───────────────┼───────────────────────────────────────────────┤
    │cd /<foo>      │切换到绝对路径为[35;1m“/<foo>”[;m的目录                 │
    ├───────────────┼───────────────────────────────────────────────┤
    │cd ..          │切换到上一级目录                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │cd ~<foo>      │切换到用户[35;1m“<foo>”[;m的家目录                      │
    ├───────────────┼───────────────────────────────────────────────┤
    │cd -           │切换到之前的目录                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │</etc/motd     │使用默认的分页程序来显示[35;1m“/etc/motd”[;m的内容      │
    │pager          │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │touch          │建立一个空文件[35;1m“<junkfile>”[;m                     │
    │<junkfile>     │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │cp <foo> <bar> │将一个现有文件[35;1m“<foo>”[;m复制到一个新文件[35;1m“<bar>”[;m   │
    ├───────────────┼───────────────────────────────────────────────┤
    │rm <junkfile>  │删除文件[35;1m“<junkfile>”[;m                           │
    ├───────────────┼───────────────────────────────────────────────┤
    │mv <foo> <bar> │将一个现有文件[35;1m“<foo>”[;m重命名成[35;1m“<bar>”[;m（[35;1m“<bar>”[;m必│
    │               │须不存在）                                     │
    ├───────────────┼───────────────────────────────────────────────┤
    │mv <foo> <bar> │将一个现有文件[35;1m“<foo>”[;m移动到新的位置“<bar>/<foo>│
    │               │”（必须存在[35;1m“<bar>”[;m目录）                       │
    ├───────────────┼───────────────────────────────────────────────┤
    │mv <foo> <bar>/│移动一个现有文件[35;1m“<foo>”[;m到新位置并重命名为“<bar>│
    │<baz>          │/<baz>”（必须存在[35;1m“bar”[;m目录，且不存在“bar>/<baz>│
    │               │文件”）                                        │
    ├───────────────┼───────────────────────────────────────────────┤
    │chmod 600 <foo>│使其他人无法读写现有文件[35;1m“<foo>”[;m（并且所有人都无│
    │               │法执行该文件）                                 │
    ├───────────────┼───────────────────────────────────────────────┤
    │chmod 644 <foo>│使其他人对现有文件[35;1m“<foo>”[;m可读但不可写（并且所有│
    │               │人都无法执行该文件）                           │
    ├───────────────┼───────────────────────────────────────────────┤
    │chmod 755 <foo>│使其他人对[35;1m“<foo>”[;m可读而不可写（并且所有人都能执│
    │               │行该文件）                                     │
    ├───────────────┼───────────────────────────────────────────────┤
    │find . -name   │使用 shell [35;1m“<pattern>”[;m 查找匹配的文件名（速度较│
    │<pattern>      │慢）                                           │
    ├───────────────┼───────────────────────────────────────────────┤
    │locate -d .    │使用 shell [35;1m“<pattern>”[;m 查找匹配的文件名（速度较│
    │<pattern>      │快，使用定期生成的数据库）                     │
    ├───────────────┼───────────────────────────────────────────────┤
    │grep -e "      │在当前目录下以[35;1m“.html”[;m结尾的所有文件中，查找匹配│
    │<pattern>"     │[35;1m“<pattern>”[;m的文件并显示                        │
    │*.html         │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │top            │全屏显示进程信息，输入[35;1m“q”[;m退出                  │
    ├───────────────┼───────────────────────────────────────────────┤
    │ps aux │ pager │显示所有正在运行的进程的信息（BSD风格）        │
    ├───────────────┼───────────────────────────────────────────────┤
    │ps -ef │ pager │显示所有正在运行的进程的信息（Unix system-V风格│
    │               │）                                             │
    ├───────────────┼───────────────────────────────────────────────┤
    │ps aux │ grep  │显示所有正在运行[35;1m“exim”[;m和[35;1m“exim4”[;m的进程          │
    │-e [35;1m"[e]xim4*"[;m  │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │ps axf │ pager │显示所有正在运行的进程的信息（ASCII风格）      │
    ├───────────────┼───────────────────────────────────────────────┤
    │kill <1234>    │杀死ID为[35;1m“<1234>”[;m的进程                         │
    ├───────────────┼───────────────────────────────────────────────┤
    │gzip <foo>     │使用 Lempel-Ziv 编码（LZ77）将[35;1m“<foo>”[;m压缩为“   │
    │               │<foo>.gz”                                      │
    ├───────────────┼───────────────────────────────────────────────┤
    │gunzip <foo>.gz│将[35;1m“<foo>.gz”[;m解压为[35;1m“<foo>”[;m                      │
    ├───────────────┼───────────────────────────────────────────────┤
    │               │使用 Burrows-Wheeter 块排序压缩算法和 Huffman  │
    │bzip2 <foo>    │编码将[35;1m“<foo>”[;m压缩为[35;1m“<foo>.bz2”[;m（压缩效果比gzip │
    │               │更好）                                         │
    ├───────────────┼───────────────────────────────────────────────┤
    │bunzip2        │将[35;1m“<foo>.bz2”[;m解压为[35;1m“<foo>”[;m                     │
    │<foo>.bz2      │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │xz <foo>       │使用 Lempel-Ziv-Markov 链算法将[35;1m“<foo>”[;m压缩为“  │
    │               │<foo>.xz”（压缩效果比bzip2更好）               │
    ├───────────────┼───────────────────────────────────────────────┤
    │unxz <foo>.xz  │将[35;1m“<foo>.xz”[;m解压为[35;1m“<foo>”[;m                      │
    ├───────────────┼───────────────────────────────────────────────┤
    │tar -xvf       │从[35;1m“<foo>.tar”[;m档案中提取文件                    │
    │<foo>.tar      │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │tar -xvzf      │从被gzip压缩过的[35;1m“<foo>.tar.gz”[;m档案中提取文件   │
    │<foo>.tar.gz   │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │tar -xvjf      │从[35;1m“<foo>.tar.bz2”[;m档案中提取文件                │
    │<foo>.tar.bz2  │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │tar -xvJf      │从[35;1m“<foo>.tar.xz”[;m档案中提取文件                 │
    │<foo>.tar.xz   │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │tar -cvf       │                                               │
    │<foo>.tar <bar>│将目录[35;1m“<bar>/”[;m中的内容打包到[35;1m“<foo>.tar”[;m档案中  │
    │/              │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │tar -cvzf      │将目录 [35;1m“<bar>/”[;m 中的内容打包并压缩成 “         │
    │<foo>.tar.gz   │<foo>.tar.gz” 文件                             │
    │<bar>/         │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │tar -cvjf      │将目录[35;1m“<bar>/”[;m中的内容打包到[35;1m“<foo>.tar.bz2”[;m档案│
    │<foo>.tar.bz2  │中                                             │
    │<bar>/         │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │tar -cvJf      │将目录”<bar>/[35;1m“中的内容打包到”[;m<foo>.tar.xz“档案 │
    │<foo>.tar.xz   │中                                             │
    │<bar>/         │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │zcat README.gz │使用默认的分页程序来显示 [35;1m“README.gz”[;m 压缩包中的│
    || pager        |内容                                           |
    ├───────────────┼───────────────────────────────────────────────┤
    │zcat README.gz │将[35;1m“README.gz”[;m解压后的内容输出到文件[35;1m“foo”[;m中     │
    │> foo          │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │zcat README.gz │将[35;1m“README.gz”[;m解压后的内容添加到文件[35;1m“foo”[;m的末尾 │
    │>> foo         │（如果文件不存在，则会先建立该文件）           │
    └───────────────────────────────────────────────────────────────┘


    [33;1m注意[m

    Unix有一个惯例，以[35;1m“.”[;m开头的文件将被隐藏。它们一般为包含了配置信息
    和用户首选项的文件。

    [33;1m注意[m

    对于cd命令，[34;1m参见builtins(7)[m。

    [33;1m注意[m

    基本的 Debian 系统的默认分页程序是 [34;1mmore(1)[m，它无法往回滚动。通过
    命令 “apt-get install less" 安装 less 软件包后，[34;1mless(1)[m 会成为默
    认的分页程序，它可以通过方向键往回滚动。

    [33;1m注意[m

    [35;1m"["[;m 和[35;1m"]"[;m 在正则表达式 [35;1m"ps aux | grep -e "[;m[e]xim4*[35;1m""[;m 命令中，可以
    避免grep在结果中排除它自己，正则表达式中的 [35;1m"4*"[;m 意思是空或字符[35;1m"4"[;m
    ，这样可以让 grep 既找到 [35;1m"exim"[;m 也找到 [35;1m"exim4"[;m。虽然 [35;1m"*"[;m 可以用于
    命令名称匹配和正则表达式中，但是它们的含义是不一样的。欲详细了解
    正则表达式可以参考 [34;1mgrep(1)[m。

    作为训练，请使用上述的命令来遍历目录并探究系统。如果你有任何有关
    控制台命令的问题，请务必阅读手册。

    尝试下列例子

[32;1m    $ man man[;m
[32;1m    $ man bash[;m
[32;1m    $ man builtins[;m
[32;1m    $ man grep[;m
[32;1m    $ man ls[;m

    手册的风格可能让人有点难以习惯，因为它们都相当简洁，尤其是比较老
    旧、非常传统的那些手册。但是，一旦你习惯了它，你来欣赏它们的简洁
    。

    请注意，许多类Unix命令（包含来自 GNU 和 BSD 的）都可以显示简短的
    帮助信息，你可以使用下列的其中一种方式来查看它（有时不带任何参数
    也可以）。

[33m[32;1m    $ <commandname> --help[;m[m
[32;1m    $ <commandname> -h[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5. 简单 shell 命令[;m

    现在，你对如何使用 Debian 系统已经有一些感觉了。让我们更深入了解
    Debian 系统的命令执行机制。在这里，我将为新手做一般的讲解。精确的
    [34;1m解释参见bash(1)[m。

    一般的命令由有序的组件构成。

     1. 设置变量值（可选）

     2. 命令名

     3. 参数（可选）

     4. 重定向（可选：> , >> , < , << 等等）

     5. 控制操作（可选：&& ， || ， <换行符> , ; , & , ( , )）

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5.1. 命令执行和环境变量[;m

    一些环境变量的值会改变部分Unix命令的行为。

    环境变量的默认值由PAM系统初始化，其中一些会被某些应用程序重新设定
    。

[33;1m      *[;m 显示管理器（例如gdm3）会重新设定环境变量。

[33;1m      *[;m Shell脚本启动的时候会重置 [35;1m"~/.bash_profile"[;m 和 [35;1m"~/.bashrc"[;m 中
        的环境变量。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5.2. “$LANG”变量[;m

    [35;1m“$LANG”[;m 变量的完整的语言环境值由3部分组成：[35;1m“xx_YY.ZZZZ”[;m。

    表 1.17. 语言环境值的 3 个部分

    ┌────────────────────────────────────────────┐
    │语言环境值│              说明               │
    ├──────────┼─────────────────────────────────┤
    │xx        │ISO 639 语言代码（小写）例如[35;1m“en”[;m │
    ├──────────┼─────────────────────────────────┤
    │YY        │ISO 3166 国家代码（大写）例如[35;1m“US”[;m│
    ├──────────┼─────────────────────────────────┤
    │ZZZZ      │编码，总是设置为[35;1m“UTF-8”[;m          │
    └────────────────────────────────────────────┘


    对于语言代码和国家代码，参加[35;1m“info gettext”[;m中的相关描述。

    对于现代 Debian 系统中的编码，你应该总是设定为UTF-8，除非你有足够
    的理由和背景知识并且特别想使用过时的编码。

    对于语言环境配置的细节，参见第 8.4 节 [35;1m“语言环境”[;m。

    [33;1m注意[m

    [35;1m“LANG=en_US”[;m 既不是 [35;1m“LANG=C”[;m 也不是 [35;1m“LANG=en_US.UTF-8”[;m。它是
    [35;1m“LANG=en_US.ISO-8859-1”[;m（参见第 8.4.1 节 [35;1m“编码的基础知识”[;m）。

    表 1.18. 语言环境推荐列表

    ┌───────────────────────────────────┐
    │语言环境推荐│     语言（地区）     │
    ├────────────┼──────────────────────┤
    │en_US.UTF-8 │英语（美国）          │
    ├────────────┼──────────────────────┤
    │en_GB.UTF-8 │英语（大不列颠）      │
    ├────────────┼──────────────────────┤
    │fr_FR.UTF-8 │法语（法国）          │
    ├────────────┼──────────────────────┤
    │de_DE.UTF-8 │德语（德国）          │
    ├────────────┼──────────────────────┤
    │it_IT.UTF-8 │意大利语（意大利）    │
    ├────────────┼──────────────────────┤
    │es_ES.UTF-8 │西班牙语（西班牙）    │
    ├────────────┼──────────────────────┤
    │ca_ES.UTF-8 │加泰隆语（西班牙）    │
    ├────────────┼──────────────────────┤
    │sv_SE.UTF-8 │瑞典语（瑞典）        │
    ├────────────┼──────────────────────┤
    │pt_BR.UTF-8 │葡萄牙语（巴西）      │
    ├────────────┼──────────────────────┤
    │ru_RU.UTF-8 │俄语（俄国）          │
    ├────────────┼──────────────────────┤
    │zh_CN.UTF-8 │汉语（中华人民共和国）│
    ├────────────┼──────────────────────┤
    │zh_TW.UTF-8 │汉语（中国台湾）      │
    ├────────────┼──────────────────────┤
    │ja_JP.UTF-8 │日语（日本）          │
    ├────────────┼──────────────────────┤
    │ko_KR.UTF-8 │韩语（韩国）          │
    ├────────────┼──────────────────────┤
    │vi_VN.UTF-8 │越南语（越南）        │
    └───────────────────────────────────┘


    使用 shell 命令行按顺序执行下列典型的命令。

[32;1m    $ date[;m
    Sun Jun  3 10:27:39 CST 2007
[32;1m    $ LANG=fr_FR.UTF-8 date[;m
    dimanche 3 juin 2007, 10:27:33 (UTC+0800)

    这里，[34;1mdate(1)[m程序执行时使用了与环境变量[35;1m“$LANG”[;m不同的值。

[33;1m      *[;m 第一个命令，[35;1m“$LANG”[;m 设置为系统的默认语言环境值 [35;1m“en_US.UTF-8”[;m
        。

[33;1m      *[;m 第二个命令，[35;1m“$LANG”[;m设置为法语的 UTF-8 语言环境值[35;1m“fr_FR.UTF-8”[;m
        。

    大多数的命令在执行时并没有预先定义环境变量。对于上面的例子，你也
    可以选择如下的方式。

[32;1m    $ LANG=fr_FR.UTF-8[;m
[32;1m    $ date[;m
    dimanche 3 juin 2007, 10:27:33 (UTC+0900)

    正如你所看到的，命令的输出受环境变量的影响，上面产生的是法语输出
    。如果你想这个环境变量能在子进程中被继承的话(例如执行 shell 脚本
    时)，你需要使用下面的命令导出（export）它。

[32;1m    $ export LANG[;m

    [33;1m注意[m

    在使用常规的控制台终端的时候，环境变量 [35;1m"$LANG"[;m 通常会被桌面环境变
    量通过 exported 方式重置。如果要测试 export 带来的影响，这个可能
    不是一个很好的例子。

    [36;1m提示[m

    提交一个BUG报告的时候，如果使用的是非英语的环境，在 "LANG=
    en_US.UTF-8" 环境下对命令进行运行和检查会更好一些。

    可以通过命令 [34;1mlocale(5)[m [34;1m和locale(7)[m 来查看 [35;1m"$LANG"[;m 及相关的环境变
    量。

    [33;1m注意[m

    建议最好用变量 [35;1m"$LANG"[;m 来配置系统环境变量，只有在逼不得已的情况下
    才用 $LC_*" 开头的变量。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5.3. "$PATH" 变量[;m

    当你在 Shell 里输入命令的时候，Shell 会在 [35;1m"$PATH"[;m 变量所包含的目
    录列表里进行搜索，[35;1m"$PATH"[;m 变量的值也叫作 Shell 的搜索路径。

    在默认的 Debian 安装过程中，所使用的用户账号的 [35;1m"$PATH"[;m 环境变量可
    能不包括 [35;1m"/sbin"[;m 和[35;1m"/usr/sbin"[;m目录。例如，ifconfig 命令就需要指定
    完整的路径 [35;1m"/sbin/ifconfig"[;m。(类似地， ip 命令是在 [35;1m"/bin"[;m 目录下)

    可以在 Bash 脚本文件 [35;1m"~/.bash_profile"[;m 或 [35;1m"~/.bashrc"[;m 中改变
    [35;1m"$PATH"[;m 环境变量的值。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5.4. "$HOME" 变量[;m

    很多命令在用户目录中都存放了用户指定的配置，然后通过配置的内容来
    改变它的执行方式，用户目录通常用 [35;1m"$HOME"[;m 变量来指定。

    表 1.19. [35;1m"$HOME"[;m 变量值列表

    ┌──────────────────────────────────────────────────────────────┐
    │ [35;1m"$HOME"[;m 变量的值  │               程序运行环境               │
    ├───────────────────┼──────────────────────────────────────────┤
    │/                  │初始进程执行的程序（守护进程）            │
    ├───────────────────┼──────────────────────────────────────────┤
    │/root              │root 用户权限 Shell 执行的程序            │
    ├───────────────────┼──────────────────────────────────────────┤
    │/home/<normal_user>│普通用户权限Shell执行的程序               │
    ├───────────────────┼──────────────────────────────────────────┤
    │/home/<normal_user>│普通用户 GUI 桌面菜单执行的程序           │
    ├───────────────────┼──────────────────────────────────────────┤
    │/home/<normal_user>│用root用户权限来执行程序 [35;1m"sudo program"[;m   │
    ├───────────────────┼──────────────────────────────────────────┤
    │/root              │用 root 用户权限执行程序 [35;1m"sudo -H program"[;m│
    └──────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    Shell 扩展 [35;1m"~/"[;m 为转入当前用户的主目录，也就是[35;1m"$HOME/"[;m。Shell 扩
    展 [35;1m"~foo/"[;m 为foo 的目录，也就是 [35;1m"/home/foo/"[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5.5. 命令行选项[;m

[33m    一些命令附带参数。这些参数以 [35;1m"-"[;m 或 [35;1m"--"[;m 开头，通常称之为选项，用[m
    来控制命令的执行方式。

[32;1m    $ date[;m
    Mon Oct 27 23:02:09 CET 2003
[32;1m    $ date -R[;m
    Mon, 27 Oct 2003 23:02:40 +0100

    这里的命令参数 [35;1m"-R"[;m 改变 [34;1mdate(1)[m 命令输出为 RFC2822 标准的日期字
    符格式。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5.6. Shell 通配符[;m

    经常有这种情况你期望命令成串自动执行而不需要挨个输入，将文件名扩
    展为 glob，(有时候被称为通配符)，以此来满足这方面的需求。

    表 1.20. Shell glob 模式

    ┌───────────────────────────────────────────────────────────────┐
    │shell glob │                   匹配规则描述                    │
    │   模式    │                                                   │
    ├───────────┼───────────────────────────────────────────────────┤
    │*          │不以 [35;1m"."[;m 开头的文件名(段)                          │
    ├───────────┼───────────────────────────────────────────────────┤
    │.*         │以 [35;1m"."[;m 开头的文件名(段)                            │
    ├───────────┼───────────────────────────────────────────────────┤
    │?          │精确字符                                           │
    ├───────────┼───────────────────────────────────────────────────┤
    │[…]        │包含在括号中的任意字符都可以作为精确字符           │
    ├───────────┼───────────────────────────────────────────────────┤
    │[a-z]      │[35;1m"a"[;m 到 [35;1m"z"[;m 之间的任意一个字符都可以作为精确字符    │
    ├───────────┼───────────────────────────────────────────────────┤
    │[^…]       │除了包含在括号中的任意字符 ( [35;1m" 1^ 2"[;m除外 )，其它字 │
    │           │符都可以作为精确字符                               │
    └───────────────────────────────────────────────────────────────┘


    尝试下列例子

[32;1m    $ mkdir junk; cd junk; touch 1.txt 2.txt 3.c 4.h .5.txt ..6.txt[;m
[32;1m    $ echo *.txt[;m
    1.txt 2.txt
[32;1m    $ echo *[;m
    1.txt 2.txt 3.c 4.h
[32;1m    $ echo *.[hc][;m
    3.c 4.h
[32;1m    $ echo .*[;m
    . .. .5.txt ..6.txt
[32;1m    $ echo .*[^.]*[;m
    .5.txt ..6.txt
[32;1m    $ echo [^1-3]*[;m
    4.h
[32;1m    $ cd ..; rm -rf junk[;m

    参见 [34;1mglob(7)[m。

    [33;1m注意[m

    与 shell 通用的文件名匹配方式不同，使用 [35;1m" -name "[;m 选项的 find (1)
    ，其 shell 模式[35;1m" * "[;m ，匹配以[35;1m" . "[;m开始的文件名.（新 POSIX 的特性)

    [33;1m注意[m

    BASH 可以使用内置的 shopt 选项如 [35;1m" dotglob "[;m，[35;1m" noglob "[;m,"
    nocaseglob [35;1m","[;m nullglob [35;1m","[;m extglob "定制全局行为,使用 bash ( 1 )
    查看详细说明。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5.7. 命令的返回值[;m

    每个命令都会返回它的退出状态（变量：[35;1m“$?”[;m）作为返回值。

    表 1.21. 命令的退出代码

    ┌──────────────────────────────────────┐
    │命令的退出状态│ 数字返回值 │逻辑返回值│
    ├──────────────┼────────────┼──────────┤
    │success       │zero, 0     │TRUE      │
    ├──────────────┼────────────┼──────────┤
    │error         │non-zero, -1│FALSE     │
    └──────────────────────────────────────┘


    尝试下列例子。

[32;1m    $ [ 1 = 1 ] ; echo $?[;m
    0
[32;1m    $ [ 1 = 2 ] ; echo $?[;m
    1

    [33;1m注意[m

    请注意，success 是逻辑 TRUE ，0（zero）则是它的值。这有些不直观，
    需要在这里提一下。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5.8. 典型的顺序命令和 shell 重定向[;m

    让我们试着记住下面 Shell 命令里部分命令行所使用的命令习语。

    表 1.22. Shell 命令常见用法

    ┌───────────────────────────────────────────────────────────────┐
    │命令常见用法│                       说明                       │
    ├────────────┼──────────────────────────────────────────────────┤
    │command &   │在子 shell 的后台中执行 command                   │
    ├────────────┼──────────────────────────────────────────────────┤
    │command1 │  │通过管道将 command1 的标准输出作为 command2 的标准│
    │command2    │输入（并行执行）                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │command1 2>&│通过管道将 command1 的标准输出和标准错误作为      │
    │1 │ command2│command2 的标准输入（并行执行）                   │
    ├────────────┼──────────────────────────────────────────────────┤
    │command1 ;  │按顺序执行 command1 和 command2                   │
    │command2    │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │command1 && │执行 command1；如果成功，按顺序执行 command2（如果│
    │command2    │command1 和 command2 都执行成功了，返回 success ）│
    ├────────────┼──────────────────────────────────────────────────┤
    │command1 ││ │执行 command1；如果不成功，按顺序执行 command2（如│
    │command2    │果 command1 或 command2 执行成功，返回 success ） │
    ├────────────┼──────────────────────────────────────────────────┤
    │command >   │将 command 的标准输出重定向到文件 foo（覆盖）     │
    │foo         │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │command 2>  │将 command 的标准错误重定向到文件 foo（覆盖）     │
    │foo         │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │command >>  │将 command 的标准输出重定向到文件 foo（附加）     │
    │foo         │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │command 2>> │将 command 的标准错误重定向到文件 foo（附加）     │
    │foo         │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │command >   │将 command 的标准输出和标准错误重定向到文件 foo   │
    │foo 2>&1    │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │command <   │将 command 的标准输入重定向到文件 foo             │
    │foo         │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │command <<  │将 command 的标准输入重定向到下面的命令行，直到遇 │
    │delimiter   │到[35;1m“delimiter”[;m（here document）                    │
    ├────────────┼──────────────────────────────────────────────────┤
    │command <<- │将 command 的标准输入重定向到下面的命令行，直到遇 │
    │delimiter   │到[35;1m“delimiter”[;m（here document，命令行中开头的制表符│
    │            │会被忽略）                                        │
    └───────────────────────────────────────────────────────────────┘


    Debian 系统是一个多任务的操作系统。后台任务让用户能够在一个 shell
    中执行多个程序。后台进程的管理涉及 shell 的内建命令：jobs、fg、bg
    和 kill。请阅读 [34;1mbash(1)[m 中的章节：[35;1m“SIGNALS”[;m、[35;1m“JOB CONTROL”[;m 和 “
    [34;1mbuiltins(1)[m”。

    尝试下列例子

[32;1m    $ </etc/motd pager[;m

[32;1m    $ pager </etc/motd[;m

[32;1m    $ pager /etc/motd[;m

[32;1m    $ cat /etc/motd | pager[;m

    尽管4个 shell 重定向的例子都会显示相同的结果，但最后一个例子毫无
    意义地运行了额外的 cat 命令浪费了资源。

    shell 允许你使用 exec 通过任意一个文件描述符来打开文件。

[32;1m    $ echo Hello >foo[;m
[32;1m    $ exec 3<foo 4>bar  # 打开文件[;m
[32;1m    $ cat <&3 >&4       # 标准输入重定向到 ３, 标准输出重定向到 4[;m
[32;1m    $ exec 3<&- 4>&-    # 关闭文件[;m
[32;1m    $ cat bar[;m
    Hello

    预定义的文件描述符0-2。

    表 1.23. 预定义的文件描述符

    ┌──────────────────────────┐
    │ 设备 │  说明  │文件描述符│
    ├──────┼────────┼──────────┤
    │stdin │标准输入│0         │
    ├──────┼────────┼──────────┤
    │stdout│标准输出│1         │
    ├──────┼────────┼──────────┤
    │stderr│标准错误│2         │
    └──────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.5.9. 命令别名[;m

    你可以为经常使用的命令设置一个别名。

    尝试下列例子

[32;1m    $ alias la='ls -la'[;m

    现在，[35;1m“la”[;m是[35;1m“ls -al”[;m的简写形式，并同样会以长列表形式列出所有的文
    件。

    你可以使用 alias 来列出所有的别名（参见 [34;1mbash(1)[m 中的“SHELL
    BUILTIN COMMANDS”）。

[32;1m    $ alias[;m
    ...
    alias la=[35;1m'ls -la'[;m

    你可以使用 type 来确认命令的准确路径或类型（参见 [34;1mbash(1)[m 中的
    [35;1m“SHELL BUILTIN COMMANDS”[;m）。

    尝试下列例子

[32;1m    $ type ls[;m
    ls is hashed (/bin/ls)
[32;1m    $ type la[;m
    la is aliased to ls -la
[32;1m    $ type echo[;m
    echo is a shell builtin
[32;1m    $ type file[;m
    file is /usr/bin/file

    ls 在最近被使用过，而 [35;1m“file”[;m 没有，因此 [35;1m“ls”[;m 标记为 [35;1m“hashed”[;m（被
    录入哈希表），即 shell 有一个内部的记录用来快速访问 [35;1m“ls”[;m 所处的位
    置。

    [36;1m提示[m

    参见第 9.2.7 节 [35;1m“有颜色输出的命令”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.6. 类 Unix 的文本处理[;m

    在类 Unix 的工作环境中，文本处理是通过使用管道组成的标准文本处理
    工具链完成的。这是另一个重要的 Unix 创新。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.6.1. Unix 文本工具[;m

    这里有一些在类 Unix 系统中经常使用到的标准文本处理工具。

[33;1m      *[;m 没有使用正则表达式：

[33;1m          +[;m [34;1mcat(1)[m 连接文件并输出全部的内容。

[33;1m          +[;m [34;1mtac(1)[m 连接文件并反向输出。

[33;1m          +[;m [34;1mcut(1)[m 选择行的一部分并输出。

[33;1m          +[;m [34;1mhead(1)[m 输出文件的开头。

[33;1m          +[;m [34;1mtail(1)[m 输出文件的末尾。

[33;1m          +[;m [34;1msort(1)[m 对文本文件的行进行排序。

[33;1m          +[;m [34;1muniq(1)[m 从已排序的文件中移除相同的行。

[33;1m          +[;m [34;1mtr(1)[m 转换或删除字符。

[33;1m          +[;m [34;1mdiff(1)[m 对文件的行进行对比。

[33;1m      *[;m 使用基础的正则表达式（ BRE ）：

[33;1m          +[;m [34;1mgrep(1)[m 匹配满足 pattern 的文本。

[33;1m          +[;m [34;1med(1)[m 是一个原始行编辑器。

[33;1m          +[;m [34;1msed(1)[m 是一个流编辑器。

[33;1m          +[;m [34;1mvim(1)[m 是一个屏幕编辑器。

[33;1m          +[;m [34;1memacs(1)[m 是一个屏幕编辑器。（有些扩展的 BRE ）

[33;1m      *[;m 使用扩展的正则表达式（ ERE ）：

[33;1m          +[;m [34;1megrep(1)[m 匹配满足多个 pattern 的文本。

[33;1m          +[;m [34;1mawk(1)[m 进行简单的文本处理。

[33;1m          +[;m tcl(3tcl) 可以进行任何你想得到的文本处理：参见 re_syntax
            (3) 。经常与 tk(3tk) 一起使用。

[33;1m          +[;m [34;1mperl(1)[m 可以进行任何你想得到的文本处理。参见 [34;1mperlre(1)[m 。

[33;1m          +[;m pcregrep 软件包中的 [34;1mpcregrep(1)[m 可以匹配满足 Perl 兼容正
            则表达式（PCRE）模式的文本。

[33;1m          +[;m 带有 re 模块的 [34;1mpython(1)[m 可以进行任何你想得到的文本处理。
            参见[35;1m“/usr/share/doc/python/html/index.html”[;m。

    如果你不确定这些命令究竟做了什么，请使用[35;1m“man command”[;m 来自己把它
    搞清楚吧。

    [33;1m注意[m

    排序的顺序和表达式的范围取决于语言环境。如果你想要获得一个命令的
    传统行为，可以在命令之前使用 [35;1m“LANG=C”[;m 让 C 语言环境代替 UTF-8（参
    见第 1.5.2 节 [35;1m““$LANG”[;m变量” 和第 8.4 节 [35;1m“语言环境”[;m）。

    [33;1m注意[m

    Perl 正则表达式（ [34;1mperlre(1)[m ）、Perl 兼容正则表达式（PCRE）和
    Python 的re 模块提供的正则表达式与一般的 ERE 相比多了许多通用的扩
    展。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.6.2. 正则表达式[;m

    正则表达式被使用在许多文本处理工具中。它们类似 shell 的通配符，但
    更加复杂和强大。

    正则表达式描述要匹配的模式，它是由文本字符和元字符构成的。

    元字符仅仅是带有特殊含义的字符。它们有两种主要的形式，BRE 和 ERE
    ，使用哪种取决于上述的文本工具。

    表 1.24. BRE 和 ERE 中的元字符

    ┌───────────────────────────────────────────────────────────────┐
    │      BRE      │   ERE   │          正则表达式的描述           │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │\ . [ ] ^ $ *  │\ . [ ] ^│通用的元字符                         │
    │               │$ *      │                                     │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │\+ \? \( \) \{ │         │BRE 独有的[35;1m“\”[;m转义元字符              │
    │\} \│          │         │                                     │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │               │+ ? ( ) {│ERE 独有的不需要[35;1m“\”[;m转义的元字符      │
    │               │} │      │                                     │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │c              │c        │匹配非元字符 [35;1m“c”[;m                     │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │\c             │\c       │匹配一个字面意义上的字符 [35;1m“c”[;m，即使   │
    │               │         │[35;1m“c”[;m 本身是元字符                     │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │.              │.        │匹配任意字符，包括换行符             │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │^              │^        │字符串的开始位置                     │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │$              │$        │字符串的结束位置                     │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │\<             │\<       │单词的开始位置                       │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │\>             │\>       │单词的结束位置                       │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │[abc…]         │[abc…]   │匹配在 [35;1m“abc...”[;m 中的任意字符         │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │[^abc…]        │[^abc…]  │匹配除了 [35;1m“abc...”[;m 中的任意字符       │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │r*             │r*       │匹配零个或多个 [35;1m“r”[;m                   │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │r\+            │r+       │匹配一个或多个 [35;1m“r”[;m                   │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │r\?            │r?       │匹配零个或一个 [35;1m“r”[;m                   │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │r1\│r2         │r1│r2    │匹配一个 [35;1m“r1”[;m 或 [35;1m“r2”[;m                │
    ├───────────────┼─────────┼─────────────────────────────────────┤
    │\(r1\│r2\)     │(r1│r2)  │匹配一个 [35;1m“r1”[;m 或 “r2“ ，并作为括号内 │
    │               │         │的正则表达式                         │
    └───────────────────────────────────────────────────────────────┘


    emacs 中的正则表达式基本上是 BRE 但含有 ERE 中的元字符 [35;1m“+”[;m 和 [35;1m“?”[;m
    。因此，在 emacs 中没必要使用 [35;1m“\”[;m 来转义它们。

    [34;1mgrep(1)[m 可以使用正则表达式来进行文本搜索。

    尝试下列例子

[32;1m    $ egrep 'GNU.*LICENSE|Yoyodyne' /usr/share/common-licenses/GPL[;m
    GNU GENERAL PUBLIC LICENSE
    GNU GENERAL PUBLIC LICENSE
    Yoyodyne, Inc., hereby disclaims all copyright interest in the program

    [36;1m提示[m

    参见第 9.2.7 节 [35;1m“有颜色输出的命令”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.6.3. 替换表达式[;m

    对于替换表达式，一些字符有特殊的含义。

    表 1.25. 替换表达式

    ┌───────────────────────────────────────────────────────────┐
    │替换表达式│              替换表达式替换的文本              │
    ├──────────┼────────────────────────────────────────────────┤
    │&         │正则表达式所匹配的内容（在 emacs 中使用 \& ）   │
    ├──────────┼────────────────────────────────────────────────┤
    │\n        │前 n 个括号的正则表达式匹配的内容（ [35;1m“n”[;m 是数字）│
    └───────────────────────────────────────────────────────────┘


    对 Perl 替换字符串来说，应使用[35;1m“$&”[;m而非[35;1m“&”[;m，应使用[35;1m“$n”[;m而非[35;1m“\n”[;m。

    尝试下列例子

[32;1m    $ echo zzz1abc2efg3hij4 | \[;m
    sed -e [35;1m's/\(1[a-z]*\)[0-9]*\(.*\)$/=&=/'[;m
    zzz=1abc2efg3hij4=
[32;1m    $ echo zzz1abc2efg3hij4 | \[;m
    sed -e [35;1m's/\(1[a-z]*\)[0-9]*\(.*\)$/\2===\1/'[;m
    zzzefg3hij4===1abc
[32;1m    $ echo zzz1abc2efg3hij4 | \[;m
    perl -pe [35;1m's/(1[a-z]*)[0-9]*(.*)$/$2===$1/'[;m
    zzzefg3hij4===1abc
[32;1m    $ echo zzz1abc2efg3hij4 | \[;m
    perl -pe [35;1m's/(1[a-z]*)[0-9]*(.*)$/=$&=/'[;m
    zzz=1abc2efg3hij4=

    请特别注意这些括号正则表达式的格式，以及这些被匹配的文本在不同的
    工具中是如何被替换的。

    这些正则表达式在一些编辑器中也可以用来移动光标和替换文本。

    在 shell 命令行行末的反斜杠 [35;1m“\”[;m 会跳脱一个换行符（作为空白符），
    并将光标移动到下一行的行首。

    请阅读所有相关手册来学习这些命令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.6.4. 正则表达式的全局替换[;m

    [34;1med(1)[m 命令可以在 [35;1m“file”[;m 中将所有的 [35;1m“FROM_REGEX”[;m 替换成 [35;1m“TO_TEXT”[;m
    。

[32;1m    $ ed file <<EOF[;m
    ,s/FROM_REGEX/TO_TEXT/g
    w
    q
    EOF

    [34;1msed(1)[m 命令可以在 [35;1m“file”[;m 中将所有的 [35;1m“FROM_REGEX”[;m 替换成 [35;1m“TO_TEXT”[;m
    。

[32;1m    $ sed -i -e 's/FROM_REGEX/TO_TEXT/g' file[;m

    [34;1mvim(1)[m 命令可以通过使用 [34;1mex(1)[m 命令在 [35;1m“file”[;m 中将所有的
    [35;1m“FROM_REGEX”[;m 替换成 [35;1m“TO_TEXT”[;m 。

[32;1m    $ vim '+%s/FROM_REGEX/TO_TEXT/gc' '+w' '+q' file[;m

    [36;1m提示[m

    上面的 [35;1m“c”[;m 标志可以确保在每次替换时都进行交互式的确认。

    多个文件（ [35;1m“file1”[;m，[35;1m“file2”[;m 和 [35;1m“file3”[;m ）可以使用 [34;1mvim(1)[m 或 perl
    (1) 通过正则表达式进行类似的处理。

[32;1m    $ vim '+argdo %s/FROM_REGEX/TO_TEXT/ge|update' '+q' file1 file2 file3[;m

    [36;1m提示[m

    上面的 [35;1m“e”[;m 标志是为了防止 [35;1m“No match”[;m 错误中断替换。

[32;1m    $ perl -i -p -e 's/FROM_REGEX/TO_TEXT/g;' file1 file2 file3[;m

    在 [34;1mperl(1)[m例子中 , [35;1m"-i"[;m 是在每一个目标文件的原处编辑，[35;1m"-p"[;m 是表示
    循环所有给定的文件。

    [36;1m提示[m

    使用参数 [35;1m“-i.bak”[;m 代替 [35;1m“-i”[;m ，可以在文件名后添加 [35;1m“.bak”[;m 再保存。
    对于复杂的替换，这使得从错误中恢复变得容易。

    [33;1m注意[m

    [34;1med(1)[m 和 [34;1mvim(1)[m 使用 BRE ； [34;1mperl(1)[m 使用 ERE 。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.6.5. 从文本文件的表格中提取数据[;m

    下面有一个文本文件 [35;1m“DPL”[;m ，里面含有 2004 年以前 Debian 项目的领导
    者名字和起始日期，并以空格分隔。

    Ian     Murdock   August  1993
    Bruce   Perens    April   1996
    Ian     Jackson   January 1998
    Wichert Akkerman  January 1999
    Ben     Collins   April   2001
    Bdale   Garbee    April   2002
    Martin  Michlmayr March   2003

    [36;1m提示[m

    参见 [35;1m“Debian 简史”[;m 获取最新的 Debian 领导阶层历史。

    Awk 经常被用来从这种类型的文件中提取数据。

    尝试下列例子

[32;1m    $ awk '{ print $3 }' <DPL                   # month started[;m
    August
    April
    January
    January
    April
    April
    March
[32;1m    $ awk '($1=="Ian") { print }' <DPL          # DPL called Ian[;m
    Ian     Murdock   August  1993
    Ian     Jackson   January 1998
[32;1m    $ awk '($2=="Perens") { print $3,$4 }' <DPL # When Perens started[;m
    April 1996

    Shell （例如 Bash ）也可以用来分析这种文件。

    尝试下列例子

[32;1m    $ while read first last month year; do[;m
        echo $month
      done <DPL
    ... 第一个 AWK 例子的一些输出

    内建命令 read 使用 [35;1m“$IFS”[;m （内部域分隔符）中的字符来将行分隔成多
    个单词。

    如果你将 [35;1m“$IFS”[;m 改变为 [35;1m“:”[;m ，你可以很好地使用 shell 来分析 “/etc/
    passwd”。

[32;1m    $ oldIFS="$IFS"   # save old value[;m
[32;1m    $ IFS=':'[;m
[32;1m    $ while read user password uid gid rest_of_line; do[;m
        if [ [35;1m"$user"[;m = [35;1m"bozo"[;m ]; then
          echo [35;1m"$user's ID is $uid"[;m
        fi
      done < /etc/passwd
    bozo's ID is 1000
[32;1m    $ IFS="$oldIFS"   # restore old value[;m

    （如果要用 Awk 做到相同的事，使用 [35;1m“FS=[35;1m':'[;m”[;m 来设置域分隔符。）

    IFS 也被 shell 用来分割参数扩展、命令替换和算术扩展的结果。这不会
    出现在双引号或单引号中。 IFS 的默认值为 <空格>、<tab> 和<换行符>
    。

    请谨慎使用 shell 的 IFS 技巧。当 shell 将脚本的一部分解释为对它的
    输入时，会发生一些奇怪的事。

[32;1m    $ IFS=":,"                        # use ":" and "," as IFS[;m
[32;1m    $ echo IFS=$IFS,   IFS="$IFS"     # echo is a Bash builtin[;m
    IFS=  , IFS=:,
[32;1m    $ date -R                         # just a command output[;m
    Sat, 23 Aug 2003 08:30:15 +0200
[33m[32;1m    $ echo $(date -R)                 # sub shell --> input to main shell[;m[m
    Sat  23 Aug 2003 08 30 36 +0200
[32;1m    $ unset IFS                       # reset IFS to the default[;m
[32;1m    $ echo $(date -R)[;m
    Sat, 23 Aug 2003 08:30:50 +0200

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m1.6.6. 用于管道命令的小片段脚本[;m

    下面的脚本作为管道的一部分，可以做一些细致的事情。

    表 1.26. 管道命令的小片段脚本列表

    ┌───────────────────────────────────────────────────────────────┐
    │脚本片段（在一行内输│                 命令效果                 │
    │        入）        │                                          │
    ├────────────────────┼──────────────────────────────────────────┤
    │find /usr -print    │找出[35;1m"/usr"[;m下的所有文件                    │
    ├────────────────────┼──────────────────────────────────────────┤
    │seq 1 100           │显示 1 到 100                             │
    ├────────────────────┼──────────────────────────────────────────┤
    || xargs ─n 1        |把从管道过来的每一项作为参数，重复执行命令|
    │<command>           │                                          │
    ├────────────────────┼──────────────────────────────────────────┤
    || xargs ─n 1 echo   |把从管道过来的，用空格隔开的项，分隔成多行|
    ├────────────────────┼──────────────────────────────────────────┤
    || xargs echo        |把从管道过来的所有行合并为一行            |
    ├────────────────────┼──────────────────────────────────────────┤
    || grep ─e           |从管道过来，包含有 <regex_pattern>的行，提|
    │<regex_pattern>     │取出来                                    │
    ├────────────────────┼──────────────────────────────────────────┤
    || grep ─v ─e        |把从管道过来，不包含有 <regex_pattern>的行|
    │<regex_pattern>     │，提取出来                                │
    ├────────────────────┼──────────────────────────────────────────┤
    || cut ─d: ─f3 ─     |把从管道过来，用 [35;1m":"[;m分隔的第三列提取出来  |
    │                    │(passwd 文件等。)                         │
    ├────────────────────┼──────────────────────────────────────────┤
    || awk [35;1m'{ print $3 }'[;m|把用空格隔开的第三列提取出来              |
    ├────────────────────┼──────────────────────────────────────────┤
    || awk ─F[35;1m'\t'[;m '{     |把用 tab 键隔开的第三列提取出来           |
    │print $3 }'         │                                          │
    ├────────────────────┼──────────────────────────────────────────┤
    || col ─bx           |删除退格键，扩展 tab 键为空格键           |
    ├────────────────────┼──────────────────────────────────────────┤
    || expand ─          |扩展 tab 键到空格键                       |
    ├────────────────────┼──────────────────────────────────────────┤
    || sort| uniq        |排序并删除重复行                          |
    ├────────────────────┼──────────────────────────────────────────┤
    || tr [35;1m'A─Z'[;m [35;1m'a─z'[;m    |将大小字母转换为小写字母                  |
    ├────────────────────┼──────────────────────────────────────────┤
    || tr ─d [35;1m'\n'[;m        |将多行连接为一行                          |
    ├────────────────────┼──────────────────────────────────────────┤
    || tr ─d [35;1m'\r'[;m        |删除换行回车符                            |
    ├────────────────────┼──────────────────────────────────────────┤
    || sed [35;1m's/^/# /'[;m     |在每行行首增加一个[35;1m"#"[;m符                   |
    ├────────────────────┼──────────────────────────────────────────┤
    || sed [35;1m's/\.ext//g'[;m  |删除 [35;1m".ext"[;m                               |
    ├────────────────────┼──────────────────────────────────────────┤
    || sed ─n ─e 2p      |显示第二行                                |
    ├────────────────────┼──────────────────────────────────────────┤
    || head ─n 2 ─       |显示最前面两行                            |
    ├────────────────────┼──────────────────────────────────────────┤
    || tail ─n 2 ─       |显示最后两行                              |
    └───────────────────────────────────────────────────────────────┘


    使用 [34;1mfind(1)[m 和 [34;1mxargs(1)[m，单行 shell 脚本能够在多个文件上循环使用
    ，可以执行相当复杂的任务。参见第 10.1.5 节 [35;1m“查找文件的语法”[;m 和第
     9.3.9 节 [35;1m“使用文件循环来重复一个命令”[;m.

    当使用 shell 交互模式变得太麻烦的时候，请考虑写一个 shell 脚本(参
    见第 12.1 节 [35;1m“Shell 脚本”[;m).

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 2 章 Debian 软件包管理[;m

    [33;1m注意[m

    这一章假定最新的稳定版的代号为：stretch 。

    Debian 是一个志愿者组织，它建立一致的自由软件的预编译二进制包并从
    档案库中分发它们。

    许多远程镜像站提供了 HTTP 和 FTP 的方式来访问 Debian 档案库。也可
    以使用 CD-ROM/DVD 。

    Debian 软件包管理系统，当使用适当时，可以让用户从档案库安装统一设
    置的二进制软件包到系统中。现在，有 59509 个可用于 amd64 架构的软
    件包。

    Debian 软件包管理系统有丰富的历史，有许多可供选择的前端用户程序和
    后端访问方式。现在，我们推荐下列的这些。

[33;1m      *[;m [34;1mapt(8)[m 用于所有的交互式命令行操作，包含软件包的安装、移除和升
        级。自 Debian Jessie（Debian 8）起可用。

[33;1m      *[;m [34;1mapt-get(8)[m 用于从脚本中调用 Debian 软件包管理系统。它在 apt
        不可用时也可作为一个备选选项（常见于较旧的 Debian 系统）。

[33;1m      *[;m [34;1maptitude(8)[m 使用一个交互式的文本界面来管理已安装的软件包和搜
        索可用的软件包。

    表 2.1. Debian 软件包管理工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │      软件包       │流行度│大小│             说明              │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │                   │      │    │高级软件包工具(APT), dpkg 的前 │
    │                   │V:884,│    │端，提供了 [35;1m“http”[;m 、[35;1m“ftp”[;m 和   │
    │apt                │I:999 │3799│[35;1m“file”[;m 的档案库访问方式（包含  │
    │                   │      │    │apt、apt-get 和 apt-cache 命令 │
    │                   │      │    │）                             │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │aptitude           │V:117,│4217│[34;1maptitude(8)[m ，基于终端的交互式 │
    │                   │I:656 │    │软件包管理工具                 │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │tasksel            │V:36, │376 │Debian 系统上对安装进行选择的工│
    │                   │I:973 │    │具（APT 的前端）               │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │unattended-upgrades│V:258,│263 │用于 APT 的增强软件包，会自动安│
    │                   │I:404 │    │装安全更新                     │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │                   │V:4,  │    │基于终端的软件包管理工具（之前 │
    │dselect            │I:50  │2507│的标准，APT 的前端和其它老的访 │
    │                   │      │    │问方式）                       │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │dpkg               │V:946,│6744│用于 Debian 的软件包管理系统   │
    │                   │I:999 │    │                               │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │synaptic           │V:62, │7794│图形化的软件包管理工具（GNOME  │
    │                   │I:439 │    │的 APT 前端）                  │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │                   │      │    │APT 实用程序：                 │
    │apt-utils          │V:407,│1114│[34;1mapt-extracttemplates(1)[m 、     │
    │                   │I:998 │    │[34;1mapt-ftparchive(1)[m 和           │
    │                   │      │    │[34;1mapt-sortpkgs(1)[m                │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │apt-listchanges    │V:380,│385 │软件包历史更改提醒工具         │
    │                   │I:841 │    │                               │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │apt-listbugs       │V:8,  │449 │在每次 APT 安装前列出严重的 bug│
    │                   │I:12  │    │                               │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │apt-file           │V:12, │82  │APT 软件包搜索工具 —— 命令行界 │
    │                   │I:80  │    │面                             │
    ├───────────────────┼──────┼────┼───────────────────────────────┤
    │apt-rdepends       │V:0,  │40  │递归列出软件包依赖             │
    │                   │I:6   │    │                               │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.1. Debian 软件包管理的前提[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.1.1. 软件包配置[;m

    下面是 Debian 系统软件包配置的一些要点。

[33;1m      *[;m Debian 尊重系统管理员的手动配置。换句话说，软件包配置系统不会
        为了方便而去更改那些配置。

[33;1m      *[;m 每个软件包都带有自己的配置脚本，它使用标准用户接口 [34;1mdebconf(7)[m
        来帮助软件包初始化安装过程。

[33;1m      *[;m Debian 开发者通过软件包配置脚本，尽力使你能有一个完美的升级体
        验。

[33;1m      *[;m 系统管理员可以使用软件包工具的全部功能。但在默认的安装中会禁
        用那些具有安全风险的。

[33;1m      *[;m 如果你手动激活了一些具有安全隐患的服务，你有责任遏制风险。

[33;1m      *[;m 高深的配置可以由系统管理员手动启用。这可能会对用于系统配置的
        通用流行帮助程序造成干扰。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.1.2. 基本的注意事项[;m

    [31;1m警告[m

    不要从任何的混合套件中安装软件包。它可能会打破软件包的一致性，这
    需要你要深厚的系统管理知识，例如 ABI 编译器、库版本和解释器特性等
    等。

    Debian 系统管理员中的新手应该保持在只进行安全更新的 stable 版本。
    我的意思是，最好避免下列的一些行为作为一项预防措施，直到你十分了
    解 Debian 系统。下面有一些提醒。

[33;1m      *[;m 在 [35;1m“/etc/apt/sources.list”[;m 中不要包含 testing 或 unstable 。

[33;1m      *[;m 在 [35;1m“/etc/apt/sources.list”[;m 里不要在标准的 Debian 中混合使用其
        它非 Debian 的档案库，例如 Ubuntu 。

[33;1m      *[;m 不要建立 [35;1m“/etc/apt/preferences”[;m 。

[33;1m      *[;m 不了解会造成的全部影响，就不要通过配置文件改变软件包管理工具
        的默认行为。

[33;1m      *[;m 不要使用 [35;1m“dpkg -i <random_package>”[;m 安装任何软件包。

[33m[33;1m      *[;m 绝不使用 [35;1m“dpkg --force-all -i <random_package>”[;m 安装任何软件[m
        包。

[33;1m      *[;m 不要删除或修改 [35;1m“/var/lib/dpkg/”[;m 中的文件。

[33;1m      *[;m 不要让从源码直接安装的程序覆盖系统文件。

[33;1m          +[;m 如果需要的话，将它们安装到 [35;1m“/usr/local”[;m 或 [35;1m“/opt”[;m 中。

    上述对 Debian 软件包管理系统做的行为所导致的不兼容影响可能会使你
    的系统无法使用。

    负责有关键任务的服务器的严谨的 Debian 系统系统管理员，应该使用额
    外的预防措施。

[33;1m      *[;m 没有在安全的条件下使用你特定的配置进行彻底地测试，就不要从
        Debian 安装任何软件包（包含安全更新）。

[33;1m          +[;m 你作为系统管理员要对你的系统负责到底。

[33;1m          +[;m Debian 系统长久的稳定史并无法保证什么。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.1.3. 持续升级的生活[;m

    尽管我在上面进行了警告，我知道许多阅读这份文档的人还是想要使用
    Debian 的 testing 或 unstable 套件来作为他们自行管理的桌面环境的
    主系统。这是因为这些套件运行得很好，更新频繁，并提供了最新的特性
    。

    [33;1m小心[m

    对于你的生产服务器，建议使用带有安全更行的 stable 套件。对于你只
    进行有限管理的桌面 PC 也是同样如此，例如你母亲的 PC 。

    你只需要在 [35;1m“/etc/apt/sources.list”[;m 中简单地将发行版字符串设置为套
    件名：[35;1m“testing”[;m 或 [35;1m“unstable”[;m；或者代号：[35;1m“buster”[;m 或 [35;1m“sid”[;m 。这会
    使你享受持续升级的生活。

    使用 testing 或 unstable 是很有乐趣的，但会带来一些风险。尽管
    Debian 系统的 unstable 套件在大多数时候看起来都非常稳定，但在
    Debian 系统的 testing 和 unstable 套件中存在一些软件包问题，并且
    它们中的一部分是不容易解决的。这对你来说可能会很痛苦。有时候，你
    可能会有一个损坏的软件包或缺少某些功能几个星期。

    这里有一些方法，可以使你简单快速地从 Debian 软件包的 bug 中恢复。

[33;1m      *[;m 通过将 Debian 系统的 stable 套件安装到另一个分区，可以使系统
        能够进行双启动

[33;1m      *[;m 制作安装 CD 便于用于救援启动

[33;1m      *[;m 考虑安装 apt-listbugs ，这可以在升级之前检查 Debian Bug 跟踪
        系统（BTS）的信息

[33;1m      *[;m 对软件包系统的基础设施有足够的了解来解决问题

[33;1m      *[;m 建立一个 chroot 或类似的环境来提前运行最新的系统（参见第
         9.10 节 [35;1m“虚拟化系统”[;m）

    （如果你无法做到这些预防措施中的任何一个，那你可能还没做好使用
    testing 和unstable 套件的准备。）

    菩萨使用下面的内容拯救一个人，使他从挣扎于持续升级地狱的因果报应
    中脱困，并让他达到 Debian 的极乐世界。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.1.4. Debian 档案库基础[;m

    让我们从系统用户的角度来看看 Debian 档案库。

    [36;1m提示[m

    Debian 档案库官方政策的定义参见 Debian 政策文档，第2章 —— Debian
    档案库。

    对于典型的 HTTP 访问，档案库在 [35;1m“/etc/apt/sources.list”[;m 文件中像下
    面那样指定，例如，现在 stable = stretch 系统。

    deb http://deb.debian.org/debian/ stretch main contrib non-free
    deb-src http://deb.debian.org/debian/ stretch main contrib non-free

    deb http://security.debian.org/ stretch/updates main contrib
    deb-src http://security.debian.org/ stretch/updates main contrib

    这里，我倾向于使用代号 [35;1m“stretch”[;m 来代替套件名 [35;1m“stable”[;m ，以避免下
    一个 stable 版本发布时出现意外。

    [35;1m“/etc/apt/sources.list”[;m 的含义在 sources.[34;1mlist(5)[m 中进行了描述，下
    面是一些要点。

[33;1m      *[;m [35;1m“deb”[;m 的那行定义了二进制软件包。

[33;1m      *[;m [35;1m“deb-src”[;m 的那行定义了源代码软件包。

[33;1m      *[;m 第一个参数是 Debian 档案库的根 URL 。

[33;1m      *[;m 第二个参数是发行版名称：可以使用套件名或代号。

[33;1m      *[;m 第三个和之后的参数是 Debian 档案库的有效档案库范围名称。

    如果只是用 aptitude（它不访问源代码相关的元数据），[35;1m“deb-src”[;m那行
    可以安全地删掉（或者在文件开头添加 [35;1m“#”[;m 来将它注释掉）。这可以加速
    档案库元数据的更新。URL 可以是[35;1m“http://”[;m 、[35;1m“ftp://”[;m 、 [35;1m“file://”[;m
    ……

    [36;1m提示[m

    如果在上述的例子中，使用了 [35;1m“sid”[;m 代替 [35;1m“stretch”[;m ，那么 “/etc/apt/
    sources.list” 中的 [35;1m“deb: http://security.debian.org/ …”[;m 这行就不
    需要了。因为没有用于 [35;1m“sid”[;m （unstable）的安全更新的档案库。

    下面是配置文件所使用的 Debian 档案库站点的 URL 和套件名或代号的列
    表。

    表 2.2. Debian 档案库站点列表

    ┌───────────────────────────────────────────────────────────────┐
    │    档案库 URL     │    套件名（代号）     │       目的        │
    ├───────────────────┼───────────────────────┼───────────────────┤
    │http://            │                       │stable (stretch)   │
    │deb.debian.org/    │stable (stretch)       │release 版本       │
    │debian/            │                       │                   │
    ├───────────────────┼───────────────────────┼───────────────────┤
    │http://            │                       │testing (buster)   │
    │deb.debian.org/    │testing (buster)       │release 版本       │
    │debian/            │                       │                   │
    ├───────────────────┼───────────────────────┼───────────────────┤
    │http://            │                       │unstable (sid)     │
    │deb.debian.org/    │unstable (sid)         │release 版本       │
    │debian/            │                       │                   │
    ├───────────────────┼───────────────────────┼───────────────────┤
    │http://            │                       │experimental       │
    │deb.debian.org/    │experimental           │pre-release 版本（ │
    │debian/            │                       │可选，只适用于开发 │
    │                   │                       │者）               │
    ├───────────────────┼───────────────────────┼───────────────────┤
    │http://            │                       │用于下一个稳定版本 │
    │deb.debian.org/    │stable-proposed-updates│的更新（可选）     │
    │debian/            │                       │                   │
    ├───────────────────┼───────────────────────┼───────────────────┤
    │http://            │                       │用于 stable release│
    │security.debian.org│stable/updates         │版本的安全更新（重 │
    │/                  │                       │要）               │
    ├───────────────────┼───────────────────────┼───────────────────┤
    │http://            │                       │用于 testing       │
    │security.debian.org│testing/updates        │release 版本的安全 │
    │/                  │                       │更新（重要）       │
    ├───────────────────┼───────────────────────┼───────────────────┤
    │http://            │                       │用于 stretch 的垃圾│
    │deb.debian.org/    │stretch-updates        │邮件过滤器、IM客户 │
    │debian/            │                       │端等的兼容更新     │
    ├───────────────────┼───────────────────────┼───────────────────┤
    │http://            │                       │用于 stretch 的较新│
    │deb.debian.org/    │stretch-backports      │的 backported 软件 │
    │debian/            │                       │包（可选）         │
    └───────────────────────────────────────────────────────────────┘


    [33;1m小心[m

    只有带有安全更新的纯净的 stable release 版本可以提供最佳的稳定性
    。运行大多数 stable release 版本的软件包之中混合一些来自 testing
    或 unstable release 版本的软件包会比运行纯净的 unstable release
    版本冒更大的风险，这是因为库版本的不匹配导致的。如果在 stable
    release 版本下你真的需要一些程序的最新版本，请使用来自
    stretch-updates 和 http://backports.debian.org （参见第 2.7.4 节
    [35;1m“更新和向后移植”[;m）的软件包。使用这些软件包时必须额外小心。

    [33;1m小心[m

    在 [35;1m"deb"[;m 行中，你只需列出 stable，testing 或者 unstable 套件中的
    一个即可，如果你在 [35;1m"deb"[;m 行中混合了 stable，testing 和 unstable
    套件，APT 程序的执行速度将会变慢并且只有最新的档案库是有用的。只
    有在 [35;1m"/etc/apt/preferences"[;m 文件带有明确目标的时候，混合的列表才
    是有意义的。（查看第 2.7.3 节 [35;1m“调整候选版本”[;m）。

    [36;1m提示[m

    对于使用 stable 和 testing 套件的 Debian 系统而言，在 “/etc/apt/
    sources.list” 中包含带有 [35;1m“http://security.debian.org/”[;m 的一行是不
    错的主意。它会启用安全更新。

    [33;1m注意[m

    Debian 安全团体将会修正 stable 档案库的安全缺陷。这些行为是十分严
    格可靠的。testing 档案库中的缺陷，不一定会被 Debian 测试安全团体
    修正。由于一些原因，这些行为相对 stable 档案库没有那么严格,您可能
    需要等待已修正的 unstable 软件包移植到 testing。unstable 档案库的
    缺陷，交由各个维护者修改。经常维护的unstable 软件包通常处于相当好
    的状况，因为它利用了上流最新的安全修正。有关 Debian 怎样处理安全
    缺陷，请参见 Debian安全常问问题。

    表 2.3. Debian 归档区域（area）列表

    ┌───────────────────────────────────────────────────────────────┐
    │  区域  │软件包数│               软件包组件标准                │
    │        │   量   │                                             │
    ├────────┼────────┼─────────────────────────────────────────────┤
    │main    │58588   │遵从 Debian 自由软件指导方针（DFSG），并且不 │
    │        │        │依赖于 non-free                              │
    ├────────┼────────┼─────────────────────────────────────────────┤
    │contrib │352     │遵从 Debian 自由软件指导方针（DFSG），但依赖 │
    │        │        │于 non-free                                  │
    ├────────┼────────┼─────────────────────────────────────────────┤
    │non-free│569     │不遵从 Debian 自由软件指导方针（DFSG）       │
    └───────────────────────────────────────────────────────────────┘


    上述软件包的数量是 amd64 架构的。main 区域提供 Debian 系统（参见
    第 2.1.5 节 [35;1m“Debian 是100% 的自由软件”[;m）。

    通过把你的浏览器指向档案库 URL，这些 URL 在 dists 或 pool 之后是
    各不相同的，Debian 档案库能够被有规划的组织。

    发行版可以用套件或代号来指定。发行版在许多文档中也被当做是套件的
    同义词。套件和代号的关系总结如下。

    表 2.4. 套件和代号的关系

    ┌───────────────────────────────────────────────────────────────┐
    │     时间      │suite = stable │suite = testing │   suite =    │
    │               │               │                │   unstable   │
    ├───────────────┼───────────────┼────────────────┼──────────────┤
    │在 stretch 发布│codename =     │codename =      │codename = sid│
    │后             │stretch        │buster          │              │
    ├───────────────┼───────────────┼────────────────┼──────────────┤
    │在 buster 发布 │codename =     │codename =      │codename = sid│
    │后             │buster         │bullseye        │              │
    └───────────────────────────────────────────────────────────────┘


    代号的历史参见 Debian FAQ: 6.2.1 以前用过哪些代号名？

    在较严格的 Debian 档案术语，[35;1m“部分 section”[;m这一词特指按应用领域来
    分类的软件包类别。（但是，主要部分 ([35;1m"main section"[;m) 这一词有时会
    用来描述 Debian 档案区中，名为”main 主要"的区域。）

    Debian 开发者（DD）每次上传软件包到 unstable 档案库（通过
    incoming 处理），都必须确保上传的软件包与最新的 unstable 档案库中
    的最新软件包兼容。

    如果 DD 故意打破重要的库升级等的这种兼容性，这通常会在 Debian 开
    发者邮件列表等进行公告。

    在 Debian 档案库维护脚本将软件包从 unstable 档案库移动到 testing
    档案库前，档案库维护脚本不仅检查时间（约10天）和软件包的 RC bug
    报告的状态，还尝试确保它们可以和最新的 testing 档案库中的软件兼容
    。这个过程使得testing 档案库非常正确可用。

    通过由发布团队领导的逐步冻结档案库的过程，并进行一些手动干预，使
    testing 档案库完全一致，无缺陷。然后，将旧的 testing 档案库的代码
    名称分配给新的 stable 档案库，并为新的 testing 档案库创建新的代码
    名称。新的 testing 档案库最初的内容和新发布的 stable 档案库的内容
    完全相同。

    unstable 和 testing 档案库都可能会遭受由以下几个因素导致的临时的
    小故障。

[33;1m      *[;m 损坏的软件包被上传到档案库（多见于 unstable ）

[33;1m      *[;m 延迟接受新的软件包到档案库（多见于 unstable )

[33;1m      *[;m 档案库时间同步问题（ testing 和 unstable ）

[33;1m      *[;m 手动干预档案库，例如移除软件包（多见于 testing ）等。

    因此，如果你决定使用这些档案库，你应该能够修复或忍受这些类型的小
    故障。

    [33;1m小心[m

    在新的 stable 版本发布后的几个月，大多数桌面用户应该使用带有安全
    更新的 stable 档案库，即使他们通常使用 unstable 或 testing 档案库
    。在这个过渡期中，unstable 和 testing 档案库不适合大多数人。你使
    用 unstable 档案库的系统是很难保持良好的工作状态的，因为它会遭受
    核心软件包的大量升级狂潮。 testing 档案库不大有用，因为它包含有和
    没有安全支持的 stable 档案库相同的内容（Debian testing 安全公告
    2008-12）。一个月左右的时间后，如果你仔细点的话， unstable 档案库
    或许可以使用。

    [36;1m提示[m

    跟踪 testing 档案库时，由一个已移除的软件包引起的问题通常可以安装
    unstable 档案库中相同的软件包（已修复 bug )来解决。

    档案库的定义参见 Debian 政策文档。

[33;1m      *[;m 部分

[33;1m      *[;m [35;1m"优先级"[;m

[33;1m      *[;m [35;1m"基本系统"[;m

[33;1m      *[;m [35;1m"极重要的软件包"[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.1.5. Debian 是100% 的自由软件[;m

    Debian 是100%的自由软件，因为：

[33;1m      *[;m Debian 默认只安装自由软件，这尊重了用户的自由。

[33;1m      *[;m Debian 在 main 中只提供自由软件。

[33;1m      *[;m Debian 建议只运行来自 main 的自由软件。

[33;1m      *[;m 在 main 中的软件包没有依赖于在 non-free 或 contrib 中的软件包
        。

    有人想知道下列的两个事实是否互相矛盾。

[33;1m      *[;m [35;1m“ Debian 将始终是 100% 的自由软件”[;m。（ Debian 社群契约中的第
        一条）

[33;1m      *[;m Debian 服务器上有一些 non-free 和 contrib 软件包。

    因为下列原因，这并不矛盾。

[33;1m      *[;m Debian 系统具有100%的自由，并且它的软件包位于 Debian 服务器的
        main 区域。

[33;1m      *[;m Debian 系统之外的软件包位于 Debian 服务器的 non-free 和
        contrib 区域。

    在 Debian 社群契约的第4条和第5条对这进行了明确的解释：

[33;1m      *[;m 我们将优先考虑我们的用户及自由软件

[33;1m          +[;m 我们由我们的用户及自由软件社群的需要所导向。我们将优先考
            虑他们的利益。我们将在多种计算环境中支持我们的用户的操作
            需要。我们不反对在 Debian 系统上使用非自由软件，我们也不
            会尝试向创建和使用这部分软件的用户索取费用。我们允许他人
            ，在没有我们的资金的参与下，制造包括 Debian 以及商业软件
            的增值套件。为了达成这些目标，我们将提供集成的、高质量的
            、100%自由的软件，而不附加任何可能阻止在这些方面使用的法
            律限制。

[33;1m      *[;m 哪些作品不符合我们的自由软件规范

[33;1m          +[;m 我们明了，某些我们的用户需要使用不符合 Debian 自由软件指
            导方针的作品。我们为这些作品，在我们的档案库中留出了
            “contrib[35;1m" 以及 “non-free"[;m 目录。在这些目录下的软件包，并
            不属于 Debian 系统尽管它们已被配置成可以在 Debian 下使用
            。我们鼓励光盘制造商阅读这些目录下的软件的许可证，以判断
            他们是否可以在光盘中发行这些软件。所以，尽管非自由软件并
            非 Debian 系统的一部分，我们仍支持它们的使用，并且我们为
            非自由软件提供了公共资源 (诸如我们的缺陷跟踪系统以及邮件
            列表)。

    用户应该了解使用 non-free 和 contrib 中的软件包所需要冒的风险：

[33;1m      *[;m 使用类似的软件包会失去自由

[33;1m      *[;m 失去 Debian 对软件包的支持（这些软件包无法访问源代码，Debian
        不能进行完全的支持。）

[33;1m      *[;m 污染你100%自由的 Debian 系统

    Debian 自由软件指导方针为 Debian 设立了自由软件标准。Debian 对软
    件包中的软件做了最广泛的解释，包含文档、固件、图标和图形数据。这
    使得 Debian 的自由软件标准非常严格。

    为了满足 main 严格的自由软件标准，Debian 曾经提供了去掉 Mozilla
    商标的软件包（例如 Firefox 、Thunderbird 和 Seamonkey），它们移除
    了 logo 和一些图形数据；并将它们分别用 Iceweasel 、Icedove 和
    Iceape 替代。在这些问题被解决后，这些软件包随着 Debian Stretch（
    Debian 9）的发布恢复了其原本的名称。

    典型的 non-free 和 contrib 软件包包含了下列类型的自由分发的软件包
    ：

[33;1m      *[;m 在GNU Free Documentation License下的文档包，包含不变的部分，
        比如GCC 和 Make的。（大多数都可以在non-free/doc找到 .)

[33;1m      *[;m 包含没有源代码的二进制数据的固件软件包，例如在第 9.9.6 节 “硬
        件驱动和固件” 中列出的 non-free 软件包。（多见于 non-free/
        kernel 部分。）

[33;1m      *[;m 游戏和字体软件包，对商业使用和/或内容修改进行了限制。

    请注意，non-free 和 contrib 软件包的数量少于 main 软件包的2%。允
    许访问 non-free 和 contrib 并不会模糊软件包的来源。使用 aptitude
    (8) 的全屏交互式界面可以提供完全的可见性和完全的控制，可以让你决
    定安装来自某个部分的软件包，来使你的系统保持自由。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.1.6. 软件包依赖关系[;m

    Debian 系统通过其控制文件字段中的版本化二进制依赖声明机制来提供一
    致的二进制软件包集合。下面有一些它们的简单定义。

[33;1m      *[;m [35;1m“依赖”[;m

[33;1m          +[;m 绝对的依赖，所有在这里列出的软件包都必须同时或提前安装。

[33;1m      *[;m [35;1m"预依赖"[;m

[33;1m          +[;m 类似于 Depends，但列出的软件包必须提前完成安装。

[33;1m      *[;m [35;1m"推荐"[;m

[33;1m          +[;m 这里表示一个强，但不是绝对的依赖关系。大多数用户不会想要
            这个包，除非在这里列出的所有包都已经安装。

[33;1m      *[;m [35;1m"建议"[;m

[33;1m          +[;m 较弱的依赖。这个软件包的大多数用户可能会从安装所列的软件
            包中受益，但没有它们也可以有适当的功能。

[33;1m      *[;m [35;1m"增强"[;m

[33;1m          +[;m 这里表明一个像推荐的弱依赖关系，不装也没关系。

[33;1m      *[;m [35;1m"破损"[;m

[33;1m          +[;m 表明一个软件包不兼容一些版本规范。一般的解决方法就是升级
            列出的所有软件包。

[33;1m      *[;m [35;1m"冲突"[;m

[33;1m          +[;m 这表明了绝对的不兼容。为了安装这个软件包必须移除所有列出
            的软件包。

[33;1m      *[;m [35;1m"替代"[;m

[33;1m          +[;m 这表明这个文件安装的文件会替代所列的软件包的文件。

[33;1m      *[;m [35;1m"提供"[;m

[33;1m          +[;m 表明这个软件包会提供所列的软件包所有的文件和功能。

    [33;1m注意[m

    请注意，同时将 [35;1m“Provides”[;m 、[35;1m“Conflicts”[;m 和 [35;1m“Replaces”[;m 定义到一个
    虚拟的软件包是一个明智的配置。这确保了在任何一个时间只能安装一个
    提供该虚拟包的真正软件包。

    包含源代码依赖关系的官方定义位于 the Policy Manual: Chapter 7 -
    Declaring relationships between packages。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.1.7. 包管理的事件流[;m

    这是 APT 提供的软件包管理的简单事件流摘要。

[33;1m      *[;m 更新（[35;1m“apt update”[;m、[35;1m“aptitude update”[;m 或 [35;1m“apt-get update”[;m）：

         1. 从远程档案库获取档案库元数据

         2. 重建和更新 APT 使用的本地元数据

[33;1m      *[;m 升级（[35;1m“apt upgrade”[;m 和 [35;1m“apt full-upgrade”[;m，或 “aptitude
        safe-upgrade” 和 [35;1m“aptitude full-upgrade”[;m，或 “apt-get
        upgrade” 和 [35;1m“apt-get dist-upgrade”[;m）：

         1. 选择候选版本，它所安装的软件包通常都是最新的可用版本（例
            外参见第 2.7.3 节 [35;1m“调整候选版本”[;m ）

         2. 解决软件包依赖关系

         3. 如果候选版本与已安装的版本不同，会从远程档案库获取所选择
            的二进制软件包

         4. 解包所获取的二进制软件包

         5. 运行 preinst 脚本

         6. 安装二进制文件

         7. 运行 postinst 脚本

[33;1m      *[;m 安装（[35;1m“apt install ...”[;m、“aptitude install ...[35;1m" 或者 "[;mapt-get
        install …” ）：

         1. 选择命令行中列出的包

         2. 解决软件包依赖关系

         3. 从远程服务器获取已选二进制包

         4. 解包所获取的二进制软件包

         5. 运行 preinst 脚本

         6. 安装二进制文件

         7. 运行 postinst 脚本

[33;1m      *[;m 移除（[35;1m"apt remove …"[;m, [35;1m“aptitude remove …”[;m 或 “apt-get remove
        …”）：

         1. 选择命令行中列出的包

         2. 解决软件包依赖关系

         3. 运行 prerm 脚本

         4. 移除已安装的文件，除了配置文件

         5. 运行 postrm 脚本

[33;1m      *[;m 清除（[35;1m"apt purge"[;m,[35;1m“aptitude purge …”[;m 或 [35;1m“apt-get purge …”[;m）：

         1. 选择命令行中列出的包

         2. 解决软件包依赖关系

         3. 运行 prerm 脚本

         4. 移除已安装的文件，包含配置文件

         5. 运行 postrm 脚本

    这里，为了大局，我特意省略了技术细节。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.1.8. 对包管理问题的第一个回应[;m

    你应该阅读优良的官方文档。第一个阅读的文档是 Debian 特定的 “/usr/
    share/doc/<package_name>/README.Debian”。同时也应该查询 “/usr/
    share/doc/<package_name>/” 中的其它文档。如果你设置 shell 为第
     1.4.2 节 [35;1m“定制bash”[;m，输入下列命令。

[32;1m    $ cd <package_name>[;m
[32;1m    $ pager README.Debian[;m
[32;1m    $ mc[;m

    你可能需要安装以 [35;1m“-doc”[;m 后缀命名的对应文档软件包来获取详细的信息
    。

    如果你在使用一个特定的软件包时出现了问题，一定要首先检查 Debian
    bug 跟踪系统（BTS）网站。

    表 2.5. 解决特定软件包问题的主要网站

    ┌───────────────────────────────────────────────────────────────┐
    │         网站          │                 命令                  │
    ├───────────────────────┼───────────────────────────────────────┤
    │Debian bug 跟踪系统（  │sensible-browser "http://              │
    │BTS）的主页            │bugs.debian.org/"                      │
    ├───────────────────────┼───────────────────────────────────────┤
    │软件包名称已知的 bug 报│sensible-browser "http://              │
    │告                     │bugs.debian.org/<package_name>"        │
    ├───────────────────────┼───────────────────────────────────────┤
    │bug 编号已知的 bug 报告│sensible-browser "http://              │
    │                       │bugs.debian.org/<bug_number>"          │
    └───────────────────────────────────────────────────────────────┘


    使用 Google 搜索，在关键字中包含 [35;1m“site:debian.org”[;m，
    [35;1m“site:wiki.debian.org”[;m，[35;1m“site:lists.debian.org”[;m 等等。

    当你要发送一份 bug 报告时，请使用 [34;1mreportbug(1)[m 命令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2. 基础软件包管理操作[;m

    在 Debian 系统中有许多基于 APT 的软件包管理工具可以在 Debian 系统
    上进行基于仓库的软件包管理操作。在这里，我们将介绍 3 种基本的软件
    包管理工具：apt,apt-get / apt-cache 和 aptitude 。

    对于涉及软件包安装或更新软件包元数据的软件包管理操作，你必须有
    root 权限。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2.1. apt vs. apt-get / apt-cache vs. aptitude[;m

    尽管 aptitude 是作者主要使用的一个非常好的可互动工具，但你应该知
    道下列警示：

[33;1m      *[;m 不建议在新版本发布后在 stable Debian 系统上使用 aptitude 命令
        来进行跨版本的系统升级。

[33;1m          +[;m 建议使用[35;1m"apt full-upgrade"[;m或[35;1m“apt-get dist-upgrade”[;m 来进行
            这个操作。参见 Bug #411280。

[33;1m      *[;m aptitude命令有时候会为了testing 或 unstable Debian 系统升级清
        除大量软件包。

[33;1m          +[;m 这个情况吓坏了许多的系统管理员。请不要惊慌。

[33;1m          +[;m 这似乎大多数是由元软件包的依赖或推荐的软件包版本偏差造成
            的，例如 gnome-core。

[33;1m          +[;m 要解决这个问题，可以在 aptitude 命令菜单中选择 “取消待执
            行的动作” ，退出 aptitude，并使用 [35;1m“apt full-upgrade”[;m。

    apt-get 和 apt-cache 是最基础的基于 APT 的软件包管理工具。

[33;1m      *[;m apt-get 和 apt-cache 只提供命令行用户界面。

[33;1m      *[;m apt-get 是进行跨版本的主系统升级等操作的最合适工具。

[33;1m      *[;m apt-get 提供了一个强大的软件包依赖解析器。

[33;1m      *[;m apt-get 对硬件资源的要求不高。它消耗更少的内存并且运行速度更
        快。

[33;1m      *[;m apt-cache 提供了一个标准的正则表达式来搜索软件包名称和描述。

[33;1m      *[;m apt-get 和 apt-cache 可以使用 /etc/apt/preferences 来管理软件
        包的多个版本，但这非常繁琐。

    apt 命令是一个用于软件包管理的高级命令行界面。它基本上是 apt-get
    、apt-cache 和类似命令的一个封装，被设计为针对终端用户交互的界面
    ，它默认启用了某些适合交互式使用的选项。

[33;1m      *[;m apt 工具在用户使用 apt install 安装软件包时提供了一个友好的进
        度条。

[33;1m      *[;m 在成功安装下载的软件包后，apt 将默认删除缓存的 .deb 软件包。

    [36;1m提示[m

    建议用户使用新的 [34;1mapt(8)[m 命令用于交互式的使用场景，而在 shell 脚本
    中使用 [34;1mapt-get(8)[m [34;1m和apt-cache(8)[m 命令。

    aptitude 命令是最通用的基于 APT 的软件包管理工具。

[33;1m      *[;m aptitude 提供了一个全屏的交互式文本用户界面。

[33;1m      *[;m aptitude 同样也提供了一个命令用户界面。

[33;1m      *[;m aptitude 是用于日常软件包管理（例如检查已安装的软件包和搜索可
        用的软件包）的最合适工具。

[33;1m      *[;m aptitude 对硬件资源的要求更高。它消耗更多的内存并且运行速度更
        慢。

[33;1m      *[;m aptitude 提供一个增强的正则表达式来搜索所有的软件包元数据。

[33;1m      *[;m aptitude 可以管理软件包的多个版本，并且不使用 /etc/apt/
        preferences，这会十分直观。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2.2. 命令行中的基础软件包管理操作[;m

    下面是使用 [34;1mapt(8)[m, [34;1maptitude(8)[m 和 [34;1mapt-get(8)[m / [34;1mapt-cache(8)[m 的命
    令行基本软件包管理操作。

    表 2.6. 使用 [34;1mapt(8)[m, [34;1maptitude(8)[m 和 [34;1mapt-get(8)[m / [34;1mapt-cache(8)[m 的
    命令行基本软件包管理操作

    ┌───────────────────────────────────────────────────────────────┐
    │            │aptitude 语 │ apt-get /  │                        │
    │  apt 语法  │     法     │apt-cache 语│          说明          │
    │            │            │     法     │                        │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt update  │aptitude    │apt-get     │更新软件包档案库元数据  │
    │            │update      │update      │                        │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt install │aptitude    │apt-get     │安装 [35;1m“foo”[;m 软件包的候选 │
    │foo         │install foo │install foo │版本以及它的依赖        │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │            │aptitude    │apt-get     │安装已安装的软件包的候选│
    │apt upgrade │safe-upgrade│upgrade     │版本并且不移除任何其它的│
    │            │            │            │软件包                  │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt         │aptitude    │apt-get     │安装已安装的软件包的候选│
    │full-upgrade│full-upgrade│dist-upgrade│版本，并且需要的话会移除│
    │            │            │            │其它的软件包            │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt remove  │aptitude    │apt-get     │移除 [35;1m“foo”[;m 软件包，但留 │
    │foo         │remove foo  │remove foo  │下配置文件              │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt         │N/A         │apt-get     │移除不再需要的自动安装的│
    │autoremove  │            │autoremove  │软件包                  │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt purge   │aptitude    │apt-get     │清除 [35;1m“foo”[;m 软件包的配置 │
    │foo         │purge foo   │purge foo   │文件                    │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt clean   │aptitude    │apt-get     │完全清除本地仓库的软件包│
    │            │clean       │clean       │检索文件                │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt         │aptitude    │apt-get     │清除本地仓库中过时软件包│
    │autoclean   │autoclean   │autoclean   │的软件包检索文件        │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt show foo│aptitude    │apt-cache   │显示 [35;1m“foo”[;m 软件包的详细 │
    │            │show foo    │show foo    │信息                    │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │apt search  │aptitude    │apt-cache   │搜索匹配 <regex> 的软件 │
    │<正则表达式>│search      │search      │包                      │
    │            │<regex>     │<regex>     │                        │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │N/A         │aptitude why│N/A         │解释匹配 <regex> 的软件 │
    │            │<regex>     │            │包必须被安装的原因      │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │            │aptitude    │            │解释匹配 <regex> 的软件 │
    │N/A         │why-not     │N/A         │包不必安装的原因        │
    │            │<regex>     │            │                        │
    ├────────────┼────────────┼────────────┼────────────────────────┤
    │            │aptitude    │apt-mark    │                        │
    │N/A         │search '~i! │showmanual  │列出手动安装的软件包    │
    │            │~M'         │            │                        │
    └───────────────────────────────────────────────────────────────┘


    [33;1m注意[m

    虽然 aptitude 命令提供了丰富的功能，例如增强的软件包解析器，但它
    的复杂程度导致了（或可能导致）一些退步，例如 Bug #411123、Bug #
    514930 及 Bug #570377。如有疑问，请使用 apt,apt-get 和 apt-cache
    命令来替代 aptitude 命令。

    [33;1m注意[m

    因为在 lenny 版本之后的 Debian 系统中， apt、apt-get 和 aptitude
    会共享自动安装的软件包的状态（参见第 2.5.5 节 [35;1m“APT 的软件包状态”[;m
    ），因此你可以混合使用这些工具而不会出现严重的麻烦（参见 Bug #
    594490）。

    [35;1m“aptitude why <regex>”[;m 可以通过 [35;1m“aptitude -v why <regex>”[;m 列出更
    多的信息。类似的信息可以通过[35;1m"apt rdepends <package>"[;m 或
    [35;1m“apt-cache rdepends <package>”[;m 获取。

    当 aptitude 命令在命令行模式下启动后遇到了一些问题（例如软件包冲
    突），你可以在之后的提示中按下 [35;1m“e”[;m 键切换到全屏的交互模式。

    你可以在 [35;1m“aptitude”[;m 后面使用的命令选项。

    表 2.7. [34;1maptitude(8)[m 中重要的命令选项

    ┌───────────────────────────────────────────┐
    │命令选项│               说明               │
    ├────────┼──────────────────────────────────┤
    │-s      │模拟命令的结果                    │
    ├────────┼──────────────────────────────────┤
    │-d      │仅下载，不进行安装/更新           │
    ├────────┼──────────────────────────────────┤
    │-D      │在自动安装和删除前，显示简要的说明│
    └───────────────────────────────────────────┘


    更多内容参见 [34;1maptitude(8)[m 和位于 [35;1m“/usr/share/doc/aptitude/README”[;m
    的 [35;1m“aptitude 用户手册”[;m。

    [36;1m提示[m

    dselect 软件包依旧可用，并且曾是之前发布的版本中首选的全屏交互式
    软件包管理工具。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2.3. aptitude 的交互式使用[;m

    要使用交互式的软件包管理，你可以像下面那样以交互模式启动 aptitude
    。

[32;1m    $ sudo aptitude -u[;m
    Password:

    这将更新档案库信息的本地副本，并以菜单的形式全屏显示软件包列表。
    aptitude 将它的配置放在 [35;1m“~/.aptitude/config”[;m。

    [36;1m提示[m

    如果你想用 root 的配置而非使用者的，可以在上面的例子中使用 “sudo
    -H aptitude …” 代替 [35;1m“sudo aptitude …”[;m 。

    [36;1m提示[m

    当 aptitude 以交互模式启动时，会自动设置待执行的动作。如果您不喜
    欢，您可以通过菜单：[35;1m“动作”[;m → [35;1m“取消待执行的动作”[;m 来取消它。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2.4. aptitude 的按键绑定[;m

    在全屏模式下浏览软件包状态和设置动作的按键如下。

    表 2.8. aptitude 的按键绑定

    ┌───────────────────────────────────────────────────────────────┐
    │       快捷键        │               键绑定功能                │
    ├─────────────────────┼─────────────────────────────────────────┤
    │F10 或 Ctrl-t        │菜单                                     │
    ├─────────────────────┼─────────────────────────────────────────┤
    │?                    │显示按键帮助（更加完整的清单）           │
    ├─────────────────────┼─────────────────────────────────────────┤
    │F10 → 帮助 → 用户手册│显示用户手册                             │
    ├─────────────────────┼─────────────────────────────────────────┤
    │u                    │更新软件包档案库信息                     │
    ├─────────────────────┼─────────────────────────────────────────┤
    │+                    │标记该软件包以便升级或安装               │
    ├─────────────────────┼─────────────────────────────────────────┤
    │-                    │标记该软件包以便移除（保留配置文件）     │
    ├─────────────────────┼─────────────────────────────────────────┤
    │_                    │标记该软件包以便清除（移除配置文件）     │
    ├─────────────────────┼─────────────────────────────────────────┤
    │=                    │将软件包设为保持状态                     │
    ├─────────────────────┼─────────────────────────────────────────┤
    │U                    │标记所有可升级包（动作如同 full-upgrade）│
    ├─────────────────────┼─────────────────────────────────────────┤
    │g                    │开始下载并安装所选择包                   │
    ├─────────────────────┼─────────────────────────────────────────┤
    │q                    │退出该界面并保存变更                     │
    ├─────────────────────┼─────────────────────────────────────────┤
    │x                    │退出该界面并清除变更                     │
    ├─────────────────────┼─────────────────────────────────────────┤
    │Enter                │查看软件包的信息                         │
    ├─────────────────────┼─────────────────────────────────────────┤
    │C                    │查看软件包的变更记录                     │
    ├─────────────────────┼─────────────────────────────────────────┤
    │l                    │变更软件包的显示限制                     │
    ├─────────────────────┼─────────────────────────────────────────┤
    │/                    │搜寻匹配的第一个软件包                   │
    ├─────────────────────┼─────────────────────────────────────────┤
    │\                    │重复上一个搜索                           │
    └───────────────────────────────────────────────────────────────┘


    可以通过命令行指定文件名称，也可以通过按 [35;1m“l”[;m 或 [35;1m“/”[;m 之后在菜单提
    示下输入下列所述的 aptitude 正则表达式。aptitude 正则表达式可以使
    用 [35;1m“~n”[;m 开头后接软件包名称的字符串来精确匹配软件包名称。

    [36;1m提示[m

    你需要在可视化界面中按下 [35;1m“U”[;m 键让所有的已安装软件包升级到可用版本
    。否则只有选中的软件包和一些与之有依赖关系的软件包才能被升级到可
    用版本。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2.5. aptitude 软件包视图[;m

    [34;1maptitude(8)[m 全屏交互模式下，软件包列表里的软件包会像下面的例子那
    样显示。

    idA   libsmbclient                             -2220kB 3.0.25a-1  3.0.25a-2

    该行的从左到右的含义如下。

[33;1m      *[;m [35;1m“状态”[;m标签（第一个字母）

[33;1m      *[;m [35;1m“动作”[;m标签（第二个字母）

[33;1m      *[;m [35;1m“自动”[;m标签（第三个字母）

[33;1m      *[;m 软件包名称

[33;1m      *[;m 该[35;1m“动作”[;m对磁盘空间的变化

[33;1m      *[;m 软件包当前版本

[33;1m      *[;m 软件包可用版本

    [36;1m提示[m

    您可以在帮助菜单中找到完整的标签列表，按[35;1m“?”[;m即可在帮助菜单底部显示
    。

    可用版本的选择是依据当前的本地首选项（参见 [34;1mapt_preferences(5)[m 和
    第 2.7.3 节 [35;1m“调整候选版本”[;m）。

    软件包视图的几种类型都可以在[35;1m“ 视图 ”[;m菜单下找到。

    表 2.9. aptitude 视图

    ┌───────────────────────────────────────────────────────────────┐
    │    视图    │ 状态  │                 视图描述                 │
    ├────────────┼───────┼──────────────────────────────────────────┤
    │软件包视图  │良好   │参见表 2.10 [35;1m“标准软件包视图的分类”[;m (默认) │
    ├────────────┼───────┼──────────────────────────────────────────┤
    │检查推荐结果│良好   │列出推荐安装但还没有安装的软件包          │
    ├────────────┼───────┼──────────────────────────────────────────┤
    │平面软件包列│良好   │不分类地列出软件包 (用于正则表达式)       │
    │表          │       │                                          │
    ├────────────┼───────┼──────────────────────────────────────────┤
    │Debtags 浏览│非常有 │列出由 debtags 进行分类的软件包           │
    │器          │用     │                                          │
    ├────────────┼───────┼──────────────────────────────────────────┤
    │分类浏览器  │已弃用 │列出按照类别分类的软件包（用Debtags 浏览器│
    │            │       │替代）                                    │
    └───────────────────────────────────────────────────────────────┘


    [33;1m注意[m

    请帮助我们改进用 debtags 标记的软件包！

    标准[35;1m“软件包视图”[;m分类软件包的方法与带有一些额外功能的 dselect 有点
    像。

    表 2.10. 标准软件包视图的分类

    ┌───────────────────────────────────────────────────────────────┐
    │         分类         │                视图描述                │
    ├──────────────────────┼────────────────────────────────────────┤
    │可升级软件包          │按照 section → area → 软件包的顺序显示列│
    │                      │出软件包                                │
    ├──────────────────────┼────────────────────────────────────────┤
    │新软件包              │同上                                    │
    ├──────────────────────┼────────────────────────────────────────┤
    │已安装软件包          │同上                                    │
    ├──────────────────────┼────────────────────────────────────────┤
    │未安装软件包          │同上                                    │
    ├──────────────────────┼────────────────────────────────────────┤
    │过期的和在本地创建的软│同上                                    │
    │件包                  │                                        │
    ├──────────────────────┼────────────────────────────────────────┤
    │虚拟软件包            │列出同样功能的软件包                    │
    ├──────────────────────┼────────────────────────────────────────┤
    │软件集                │列出一个特定任务所需的不同功能的软件包  │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    软件集视图可以用来为你的任务选出最佳的软件包。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2.6. aptitude 搜索方式选项[;m

    aptitude 提供了几个可以使用正则表达式来搜索软件包的选项。

[33;1m      *[;m shell 命令行：

[33;1m          +[;m [35;1m“aptitude search [35;1m'<aptitude_regex>'[;m”[;m 列出安装状态、软件包
            名称和匹配软件包的剪短描述

[33;1m          +[;m [35;1m“aptitude show [35;1m'<package_name>'[;m”[;m 列出软件包的详细描述

[33;1m      *[;m 全屏交互模式:

[33;1m          +[;m [35;1m"l"[;m 可以限制匹配软件包的视图

[33;1m          +[;m [35;1m"/"[;m 搜索匹配的软件包

[33;1m          +[;m [35;1m"\"[;m 向后搜索匹配的软件包

[33;1m          +[;m [35;1m"n"[;m 查找下一个

[33;1m          +[;m [35;1m"N"[;m 查找上一个

    [36;1m提示[m

    字符串 <package_name> 被看作软件包名称的精确字符串匹配，除非它是
    以 [35;1m"~"[;m 开头的正则表达式。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2.7. aptitude 正则表达式[;m

    aptitude 正则表达式是类 mutt 的拓展 ERE（参见第 1.6.2 节 “正则表
    达式”），aptitude 具体的特殊匹配规则扩展如下。

    表 2.11. aptitude 正则表达式

    ┌───────────────────────────────────────────────────────────────┐
    │扩展匹配规则│                    正则表达式                    │
    │    描述    │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配软件包名│~n<regex_name>                                    │
    │称          │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配描述    │~d<regex_description>                             │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配软件集名│~t<regex_task>                                    │
    │称          │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配 debtag │~G<regex_debtag>                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配维护者  │~m<regex_maintainer>                              │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配软件包的│~s<regex_section>                                 │
    │section     │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配软件包版│~V<regex_version>                                 │
    │本          │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配档案库  │~A{stretch,buster,sid}                            │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配来源    │~O{debian,…}                                      │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配优先级  │~p{extra,important,optional,required,standard}    │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配必要的软│~E                                                │
    │件包        │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配虚拟软件│~v                                                │
    │包          │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配新的软件│~N                                                │
    │包          │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配待执行的│~a                                                │
    │动作        │{install,upgrade,downgrade,remove,purge,hold,keep}│
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配已安装软│~i                                                │
    │件包        │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配带有 A  │                                                  │
    │标签的已安装│                                                  │
    │软件包（自动│~M                                                │
    │安装的软件包│                                                  │
    │）          │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配不带有 A│                                                  │
    │标签的已安装│                                                  │
    │软件包（管理│~i!~M                                             │
    │员选择的软件│                                                  │
    │包）        │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配已安装并│                                                  │
    │且是可升级的│~U                                                │
    │软件包      │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配已删除但│                                                  │
    │未清除的软件│~c                                                │
    │包          │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配已移除，│                                                  │
    │已清除或可移│~g                                                │
    │除的软件包  │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配破坏依赖│~b                                                │
    │关系的软件包│                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配破坏    │                                                  │
    │<type> 依赖 │~B<类型>                                          │
    │关系的软件包│                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配        │                                                  │
    │<pattern> 软│                                                  │
    │件包的      │~D[<类型>:]<模式>                                 │
    │<type> 依赖 │                                                  │
    │关系        │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配        │                                                  │
    │<pattern> 软│                                                  │
    │件包破坏的  │~DB[<类型>:]<模式>                                │
    │<type> 依赖 │                                                  │
    │关系        │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配依赖于  │                                                  │
    │<pattern> 软│                                                  │
    │件包的      │~R[<类型>:]<模式>                                 │
    │<type> 依赖 │                                                  │
    │的软件包    │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配依赖于  │                                                  │
    │<pattern> 软│                                                  │
    │件包破坏的  │~RB[<类型>:]<模式>                                │
    │<type> 依赖 │                                                  │
    │的软件包    │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配其它已安│                                                  │
    │装软件包所依│~R~i                                              │
    │赖的软件包  │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配没有被其│                                                  │
    │它已安装软件│!~R~i                                             │
    │包所依赖的软│                                                  │
    │件包        │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配其它已安│                                                  │
    │装软件包所依│~R~i│~R推荐:~i                                    │
    │赖或建议安装│                                                  │
    │的软件包    │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配        │                                                  │
    │<pattern> 过│~S 过滤 <模式>                                    │
    │滤版本之后的│                                                  │
    │软件包      │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │匹配所有软件│~T                                                │
    │包（真）    │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │不匹配软件包│~F                                                │
    │（假）      │                                                  │
    └───────────────────────────────────────────────────────────────┘


[33;1m      *[;m 正则表达式使用的是 ERE，就跟 [34;1megrep(1)[m、[34;1mawk(1)[m 和 [34;1mperl(1)[m 这些
        典型的类 Unix 文本工具中所使用的 [35;1m“^”[;m、[35;1m“.*”[;m、[35;1m“$”[;m 等是相同的。

[33;1m      *[;m 依赖关系 <type> 是一种特定的软件包相互关系（depends、
        predepends、recommends、suggests、conflicts、replaces、
        provides）。

[33;1m      *[;m 默认的 <type> 依赖关系是 [35;1m“depends”[;m。

    [36;1m提示[m

    当 <regex_pattern> 为空字符串时，请立即在命令后面添加 [35;1m"~T"[;m。

    下面是一些快捷方式。

[33;1m      *[;m [35;1m"~P<term>"[;m == [35;1m"~Dprovides:<term>"[;m

[33;1m      *[;m [35;1m"~C<term>"[;m == [35;1m"~Dconflicts:<term>"[;m

[33;1m      *[;m [35;1m"…~W term"[;m == [35;1m"(…|term)"[;m

    用户熟悉 mutt 的快速选择，因为 mutt 的灵感来源于表达式语法。参见
    [35;1m“用户手册”[;m [35;1m“/usr/share/doc/aptitude/README”[;m 中的 “SEARCHING,
    LIMITING, AND EXPRESSIONS”。

    [33;1m注意[m

    lenny 版本的 [34;1maptitude(8)[m 中，新的长格式语法，例如 [35;1m“?broken”[;m，在正
    则表达式中可以用来等效为它旧的短格式 [35;1m“~b”[;m。现在空格字符 [35;1m“ ”[;m 被认
    为是除了波浪字符 [35;1m“~”[;m 外的另一个正则表达式终止字符。新的长格式语法
    参见 [35;1m“用户手册”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2.8. aptitude 的依赖解决[;m

    如果通过菜单 [35;1m“F10 → 选项 → 首选项 → 正在处理依赖关系”[;m 进行相应的
    设置，则在 aptitude 中选择一个软件包时，不仅会将其 [35;1m“Depends:”[;m 列
    表中的软件包选上，[35;1m“Recommends:”[;m 列表中的软件包也会被选上。在
    aptitude 下，这些自动安装的软件包在不再需要时会自动移除。

    aptitude 命令中控制 [35;1m“自动安装”[;m 行为的标签也可以通过 apt 软件包中
    的 [34;1mapt-mark(8)[m 命令来设置。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.2.9. 软件包活动日志[;m

    你可以在日志文件里查询到软件包活动历史。

    表 2.12. 软件包活动日志文件

    ┌─────────────────────────────────────────────┐
    │        文件         │         内容          │
    ├─────────────────────┼───────────────────────┤
    │/var/log/dpkg.log    │dpkg 级的软件包活动日志│
    ├─────────────────────┼───────────────────────┤
    │/var/log/apt/term.log│通用 APT 活动日志      │
    ├─────────────────────┼───────────────────────┤
    │/var/log/aptitude    │aptitude 命令活动日志  │
    └─────────────────────────────────────────────┘


    事实上，很难从这些日志上快速获得有用的信息。较简便的方法参见第
     9.2.10 节 [35;1m“记录配置文件的变更”[;m 。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.3. aptitude 操作范例[;m

    下面是一些 [34;1maptitude(8)[m 的操作范例。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.3.1. 通过正则表达式匹配软件包名称来列出软件包[;m

    下面的命令列出了通过正则表达式匹配软件包名称来列出软件包。

[32;1m    $ aptitude search '~n(pam|nss).*ldap'[;m
    p libnss-ldap - 使用 LDAP 作为名称服务的 NSS 模块
    p libpam-ldap - 允许 LDAP 接口的插入式验证模块

    这种方式查找精确的软件包名称很方便。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.3.2. 使用正则表达式匹配浏览[;m

    在[35;1m"新扁平软件包列表"[;m 中使用 [35;1m"l"[;m 提示查看，正则表达式 [35;1m"~dipv6"[;m 可
    以限制性地匹配软件描述，并交互式地展示信息。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.3.3. 完整地清理已删除软件包[;m

    您能清除所有已移除软件包的剩余配置文件。

    检查以下命令的结果。

[31;1m    # aptitude search '~c'[;m

    如果您确认所列出的软件包应当被完整删除，请运行以下命令。

[31;1m    # aptitude purge '~c'[;m

    您可能想要在交互模式中做类似的操作进行细粒度的控制。

    在 [35;1m"新软件包视图"[;m 使用 [35;1m"l"[;m 提示并输入正则匹配式 [35;1m"~c"[;m ，这将仅匹配
    软件包，比如， [35;1m"移除但不清空配置"[;m 。所有符合匹配的软件包可以在顶
    层标题上使用 [35;1m"["[;m 显示。

    当您在顶层标题如 [35;1m“未安装的包”[;m 中输入 [35;1m“_”[;m，当前标题下的软件包只有
    匹配正则式才会被清除。您还可以使用[35;1m“=”[;m 来交互式地排除软件包以避免
    删除它们。

    这种技术方便易用且适用于许多其他的命令键。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.3.4. 调整自动/手动安装状态[;m

    下面是调整软件包的自动/手动安装状态的方法（在使用非 aptitude 软件
    包管理器之后）。

     1. 用 root 以交互模式运行 aptitude。

     2. 用 [35;1m"u"[;m 命令更新可用的软件包列表，[35;1m"U"[;m 命令标记所有可升级的软件
        包以执行升级，[35;1m"f"[;m 命令清除新软件包列表，[35;1m"g"[;m 命令执行所有可升
        级的软件包以执行升级。

     3. 按下 [35;1m“l”[;m，并输入 [35;1m“~i(~R~i|~Rrecommends:~i)”[;m 来限制软件包的显
        示，按下 [35;1m“M”[;m 将 [35;1m“已安装软件包”[;m 的状态改为自动安装。

     4. 按下 [35;1m“l”[;m，并输入 [35;1m“~prequired|~pimportant|~pstandard|~E”[;m 来限
        制软件包的显示，按下 [35;1m“m”[;m 将 [35;1m“已安装软件包”[;m 的状态改为手动安装
        。

     5. 按下 [35;1m“l”[;m，并输入 [35;1m“~i!~M”[;m 来限制软件包的显示，在 “已安装软件包
        ” 上按下 [35;1m“[”[;m 来陈列无用的软件包，按下 [35;1m“-”[;m 将它们移除。

     6. 按下 [35;1m“l”[;m，并输入 [35;1m“~i”[;m 来限制软件包的显示，之后在 [35;1m“软件集”[;m 上
        按下 [35;1m“m”[;m 将那些软件包标记为手动安装。

     7. 退出 aptitude。

     8. 用 root 用户执行 [35;1m"apt-get -s autoremove|less"[;m 命令，来查看有
        那些软件包是不再需要的。

     9. 在交互模式下重启 aptitude 程序，用 [35;1m“m”[;m 命令标记所需要的软件包
        。

    10. 用 root 用户重新执行 [35;1m"apt-get -s autoremove|less"[;m 这个命令来
        复查移除的包中是不是只含有自己所希望移除的软件包。

    11. 用 root 用户执行 [35;1m"apt-get autoremove|less"[;m 命令来自动移除不再
        需要的软件包。

    在你所需要执行的 [35;1m"Tasks"[;m 上，运行 [35;1m"m"[;m 命令是一个可选的操作，目的
    就是为了防止大量软件包被卸载的情况出现。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.3.5. 全面的系统升级[;m

    [33;1m注意[m

    当你迁移到新的发行版的时候，虽然正如下面所描述的那样，Debian 是可
    升级的，但是你还是应该考虑纯净的安装新的系统。这给了你机会去移除
    废弃的软件包同时还可以接触到最新软件包的完美集合体。当然，在做迁
    移之前，你也应该对你的系统做完整的备份，并把它移到安全的地方去（
    查看第 10.2 节 [35;1m“备份和恢复”[;m)。[35;1m“我”[;m也建议用不同的分区做另外一个启
    动项，来实现平稳的升级。

    你可以通过改变 [35;1m"/etc/apt/sources.list"[;m 的内容使之指向新的发行版所
    在地址的方法来进行系统的全面升级，然后运行 "apt update; apt
    dist-upgrade" 命令。

    从 stable 升级到 testing 或者 unstable，你应该用 [35;1m"buster"[;m 或者
    [35;1m"sid"[;m 替换 [35;1m"/etc/apt/sources.list"[;m 文件里的 [35;1m"stretch"[;m，参考第
     2.1.4 节 [35;1m“Debian 档案库基础”[;m。

    事实上，由于一些软件包版本变迁的问题，你可能会遇到一些困难，主要
    是由于软件包的依赖问题。升级之后的差异越大，你越有可能遇到麻烦。
    在新版本发行后，系统从旧的 stable 过渡到新的 stable，你可以查看
    Release Notes 然后按照里面的步骤去做，来尽可能的减少麻烦。

    在它正式发布之前，你决定要从先前的 stable 迁移到将要发布的
    testing，这里没有 Release Notes 可以帮到你。在前一个 stable 发布
    以后， stable 发行版跟将要发布的 testing 发行版之间的差异可能变得
    相当大同时也使得升级系统变得更加的复杂。

    在全面升级系统的时候，你应该谨慎的操作，同时你也应该从邮件列表中
    获取最新的资料然后根据你的常识作出正确的判断。

     1. 查看先前的[35;1m“发行说明”[;m。

     2. 备份整个系统(尤其是数据和配置信息）。

     3. 当 bootloader 坏了的时候，手边应该有可以引导电脑启动的存储介
        质。

     4. 事先通知系统上的用户。

     5. 用 [34;1mscript(1)[m 记录升级的过程。

     6. 用 [35;1m“unmarkauto”[;m 命令来保留你想要的软件包，例如 "aptitude
        unmarkauto vim" 这个命令是用来防止移除vim这个软件的。

     7. 为了减少软件包之间可能会发生的冲突，应该尽量减少要安装的软件
        包的数目，例如，移除桌面环境这个软件包。

     8. 移除 [35;1m"/etc/apt/preferences"[;m 文件（禁用apt-pinning）。

     9. 试着一步步的升级： oldstable → stable → testing → unstable.

    10. 升级 [35;1m"/etc/apt/sources.list"[;m 文件，使其指向新的档案库然后运行
        [35;1m"aptitude update"[;m 命令。

    11. 可选的安装选项，首先是新的 core packages，例如 “aptitude
        install perl"。

    12. 运行 [35;1m"apt-get -s dist-upgrade"[;m 命令来评估升级造成的影响。

    13. 最后运行 [35;1m"apt-get dist-upgrade"[;m 命令。

    [33;1m小心[m

    在 stable 版本升级的时候，跳过主要的 Debian 发行版是不明智的。

    [33;1m小心[m

    在先前的[35;1m“发行手册”[;m里， GCC, Linux Kernel, initrd-tools, Glibc,
    Perl, APT tool chain 等等，有一些关于系统全面升级的重要注意事项。

    关于 unstable 版本的日常升级，查看第 2.4.3 节 [35;1m“预防软件包故障”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.4. 高级软件包管理操作[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.4.1. 命令行中的高级软件包管理操作[;m

    下面列出了一些其它的软件包管理操作，这些操作对于 aptitude 过于高
    级或缺失所需的功能。

    表 2.13. 高级软件包管理操作

    ┌───────────────────────────────────────────────────────────────┐
    │           命令           │                操作                │
    ├──────────────────────────┼────────────────────────────────────┤
    │COLUMNS=120 dpkg -l       │列出已安装软件包的列表用于错误报告  │
    │<package_name_pattern>    │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │dpkg -L <package_name>    │显示一个已安装软件包的内容          │
    ├──────────────────────────┼────────────────────────────────────┤
    │dpkg -L <package_name> │  │                                    │
    │egrep '/usr/share/man/    │列出一个已安装软件包的 man 手册页   │
    │man.*/.+'                 │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │dpkg -S                   │列出匹配文件名的已安装软件包        │
    │<file_name_pattern>       │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │apt-file search           │列出档案库中匹配文件名的软件包      │
    │<file_name_pattern>       │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │apt-file list             │列出档案库中匹配的软件包的内容      │
    │<package_name_pattern>    │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │dpkg-reconfigure          │重新配置软件包                      │
    │<package_name>            │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │dpkg-reconfigure -p=low   │通过最详细的方式来重新配置软件包    │
    │<package_name>            │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │configure-debian          │以全屏菜单的形式重新配置软件包      │
    ├──────────────────────────┼────────────────────────────────────┤
[33m    │dpkg --audit              │部分安装软件包的审计系统            │[m
    ├──────────────────────────┼────────────────────────────────────┤
[33m    │dpkg --configure -a       │配置所有部分安装的软件包            │[m
    ├──────────────────────────┼────────────────────────────────────┤
    │apt-cache policy          │显示一个二进制软件包的可用版本、优先│
    │<binary_package_name>     │级和档案库信息                      │
    ├──────────────────────────┼────────────────────────────────────┤
    │apt-cache madison         │显示一个软件包的可用版本和档案库信息│
    │<package_name>            │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │apt-cache showsrc         │显示一个二进制软件包的源代码软件包信│
    │<binary_package_name>     │息                                  │
    ├──────────────────────────┼────────────────────────────────────┤
    │apt-get build-dep         │安装构建软件包所需要的软件包        │
    │<package_name>            │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │aptitude build-dep        │安装构建软件包所需要的软件包        │
    │<package_name>            │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │apt-get source            │（从标准档案库）下载源代码          │
    │<package_name>            │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │dget <URL for dsc file>   │（从其它档案库）下载源代码软件包    │
    ├──────────────────────────┼────────────────────────────────────┤
    │dpkg-source -x            │从源代码软件包集合（[35;1m“*.orig.tar.gz”[;m │
    │<package_name>_<version>- │和 [35;1m“*.debian.tar.gz[35;1m"/"[;m*.diff.gz”[;m）中│
    │<debian_version>.dsc      │构建代码树                          │
    ├──────────────────────────┼────────────────────────────────────┤
    │debuild binary            │从本地的源代码树中构建软件包        │
    ├──────────────────────────┼────────────────────────────────────┤
    │make-kpkg kernel_image    │从内核源代码树中构建一个内核软件包  │
    ├──────────────────────────┼────────────────────────────────────┤
[33m    │make-kpkg --initrd        │从启用了 initramfs 的内核代码树中构 │[m
    │kernel_image              │建一个内核软件包                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │dpkg -i <package_name>_   │                                    │
    │<version>-<debian_version>│安装一个本地的软件包到系统中        │
    │_<arch>.deb               │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │apt install /path/to/     │安装本地软件包到系统中，同时尝试自动│
    │<package_filename>.deb    │解决依赖                            │
    ├──────────────────────────┼────────────────────────────────────┤
    │debi <package_name>_      │                                    │
    │<version>-<debian_version>│安装本地软件包到系统中              │
    │_<arch>.dsc               │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
[33m    │dpkg --get-selections [35;1m'*'[;m │保存 dpkg 级别的软件包选择状态信息  │[m
    │>selection.txt            │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
[33m    │dpkg --set-selections     │使用 dpkg 设置软件包选择状态        │[m
    │<selection.txt            │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │echo <package_name> hold ││使用 dpkg 将一个软件包的包选择状态设│
[33m    │dpkg --set-selections     │置为 hold（相当于 "aptitude hold <  │[m
    │                          │包名> ")                            │
    └───────────────────────────────────────────────────────────────┘


    [33;1m注意[m

    对于一个支持多架构的软件包，你可能需要为一些命令指定架构名称。例
    如，使用 [35;1m“dpkg -L libglib2.0-0:amd64”[;m 来列出 amd64 架构的
    libglib2.0-0 软件包的内容。

    [33;1m小心[m

    系统管理员应该小心使用低级的软件包工具（例如 [35;1m“dpkg -i …”[;m 和 “debi
    …”），它们不会自动处理所需的软件包依赖。 dpkg 的命令行选项
[33m    [35;1m“--force-all”[;m 和类似的选项（参见 [34;1mdpkg(1)[m）只适用于高手。没有完全[m
    理解它们的效果却使用它们会破坏你的整个系统。

    请注意以下几点。

[33;1m      *[;m 所有的系统配置和安装命令都需要以 root 运行。

[33;1m      *[;m 不同于使用正则表达式的 aptitude （参见第 1.6.2 节 “正则表达式
        ”），其它的软件包管理命令使用类似于 shell glob 的通配符（参见
        第 1.5.6 节 [35;1m“Shell 通配符”[;m）。

[33;1m      *[;m [34;1mapt-file(1)[m 由 apt-file 软件包提供，并且需要先运行 “apt-file
        update”。

[33;1m      *[;m [34;1mconfigure-debian(8)[m 由 configure-debian 软件包提供，它运行
        [34;1mdpkg-reconfigure(8)[m 作为后端。

[33;1m      *[;m [34;1mdpkg-reconfigure(8)[m 使用 [34;1mdebconf(1)[m 作为后端来运行软件包脚本
        。

[33;1m      *[;m [35;1m"apt-get build-dep"[;m 、[35;1m"apt-get source"[;m 和 [35;1m"apt-cache showsrc"[;m
        命令需要 [35;1m"/etc/apt/sources.list"[;m 中存在 [35;1m"deb-src"[;m 条目。

[33;1m      *[;m [34;1mdget(1)[m 、[34;1mdebuild(1)[m 和 [34;1mdebi(1)[m 需要 devscripts 软件包。

[33;1m      *[;m 参见第 2.7.13 节 [35;1m“移植一个软件包到 stable 系统”[;m 里使用
        [35;1m"apt-get source"[;m 的打包（重打包）过程。

[33;1m      *[;m make-kpkg 命令需要 kernel-package 软件包（参见第 9.9 节 “内核
        ”）。

[33;1m      *[;m 通用打包参见第 12.11 节 [35;1m“制作 Debian 包”[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.4.2. 验证安装的软件包文件[;m

    已经安装 debsums 软件包的，能使用 [34;1mdebsums(1)[m 命令通过 "/var/lib/
    dpkg/info/*.md5sums" 文件中的 MD5sum 值，验证已安装的文件。参见第
     10.3.5 节 [35;1m“MD5 校验和”[;m来获得 MD5sum 是怎样工作的信息。

    [33;1m注意[m

    因为 MD5sum 数据库可能被侵入者篡改，[34;1mdebsums(1)[m 作为安全工具使用有
    限。这种工具用于校验管理者造成的本地修改或媒体错误造成的损坏是很
    不错的。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.4.3. 预防软件包故障[;m

    许多用户更想使用 unstable，因为它有新的功能和软件包。但这会使得系
    统更容易遇到严重的软件包 bug 。

    安装软件包 apt-list bugs 可以避免您的系统遭遇严重 bugs，在通过
    APT 系统升级时，它会自动检查 Debian BTS 里的严重 bug。

    安装 apt-listchanges 软件包，在使用 APT 系统升级时它会在
    [35;1m“NEWS.Debian”[;m 中提供重要新闻。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.4.4. 搜索软件包元数据[;m

    尽管近来浏览 Debian 网站 https://packages.debian.org/ 是搜索软件
    包元数据更加简单的方法，但我们依旧来看看更传统的方法。

    [34;1mgrep-dctrl(1)[m 、[34;1mgrep-status(1)[m 和 [34;1mgrep-available(1)[m 命令被用来搜
    索具有 Debian 软件包控制文件格式的任何文件。

    [35;1m“dpkg -S <file_name_pattern>”[;m 被用来搜索由 dpkg 安装的软件包中包
    含匹配文件的。但它会忽略维护者的脚本创建的文件。

    如果你需要对 dpkg 元数据进行更复杂的搜索，你需要在 “/var/lib/dpkg
    /info/” 目录下运行 [35;1m“grep -e regex_pattern *”[;m 命令。这会使你在软件
    包脚本和安装查询文本中搜索提及的单词。

    如果你想递归查找软件包依赖，你应该使用 [34;1mapt-rdepends(8)[m 。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5. Debian 软件包内部管理[;m

    让我们来学习 Debian 软件包管理的内部工作原理。这应该能够帮助你独
    立解决一些软件包问题。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.1. 档案库元数据[;m

    每个发行版的元数据文件都保存在 Debian 镜像站的 [35;1m“dist/<codename>”[;m
    下面，例如 [35;1m“http://deb.debian.org/debian/”[;m。档案库的结构可以通过
    网络浏览器来浏览。其中有 6 种关键的元数据。

    表 2.14. Debian 档案库元数据的内容

    ┌───────────────────────────────────────────────────────────────┐
    │     文件     │        位置         │           内容           │
    ├──────────────┼─────────────────────┼──────────────────────────┤
    │Release       │发行版的顶层         │档案库描述和完整性信息    │
    ├──────────────┼─────────────────────┼──────────────────────────┤
    │Release.gpg   │发行版的顶层         │[35;1m"Release"[;m 文件的签名文件，│
    │              │                     │使用档案库密钥签名        │
    ├──────────────┼─────────────────────┼──────────────────────────┤
    │Contents-     │发行版的顶层         │列出在相关架构中所有软件包│
    │<architecture>│                     │的全部文件                │
    ├──────────────┼─────────────────────┼──────────────────────────┤
    │              │每个发行版/区域/架构 │归档描述使用              │
    │Release       │组合的顶部           │apt_preferences( 5 ) 的规 │
    │              │                     │则                        │
    ├──────────────┼─────────────────────┼──────────────────────────┤
    │Packages      │每个发行版/区域/二进 │连接 debian/control 获得二│
    │              │制架构组合的顶部     │进制包                    │
    ├──────────────┼─────────────────────┼──────────────────────────┤
    │Sources       │每个发行版/区域/源代 │连接 debian/control 获取源│
    │              │码组合的顶部         │代码包                    │
    └───────────────────────────────────────────────────────────────┘


    为了减少网络流量，在最近的档案库中，这些元数据存储为压缩了的差分
    文件。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.2. 顶层“Release”文件及真实性[;m

    [36;1m提示[m

    顶层[35;1m“Release”[;m文件用于签署secure APT系统下的归档文件。

    每个 Debian 档案库的网址都有一个这样的 [35;1m“Release”[;m 文件，例如
    [35;1m“http://deb.debian.org/debian/dists/unstable/Release”[;m，内容如下。

    Origin: Debian
    Label: Debian
    Suite: unstable
    Codename: sid
    Date: Sat, 14 May 2011 08:20:50 UTC
    Valid-Until: Sat, 21 May 2011 08:20:50 UTC
    Architectures: alpha amd64 armel hppa hurd-i386 i386 ia64 kfreebsd-amd64 kfreebsd-i386 mips mipsel powerpc s390 sparc
    Components: main contrib non-free
    Description: Debian x.y Unstable - Not Released
    MD5Sum:
     bdc8fa4b3f5e4a715dd0d56d176fc789 18876880 Contents-alpha.gz
     9469a03c94b85e010d116aeeab9614c0 19441880 Contents-amd64.gz
     3d68e206d7faa3aded660dc0996054fe 19203165 Contents-armel.gz
    ...

    [33;1m注意[m

    在第 2.1.4 节 [35;1m“Debian 档案库基础”[;m 里，你能够发现我使用[35;1m"suite"[;m 和
    [35;1m"codename"[;m的逻辑。[35;1m“发行版”[;m被用来同时谈及[35;1m"suite"[;m 和 [35;1m"codename"[;m.所
    有由档案库提供的归档 [35;1m"area"[;m 名，会被列在 [35;1m"Components"[;m 下.

    顶层文件 [35;1m"Release"[;m 的完整性，是由叫 secure apt 的加密架构来验证.

[33;1m      *[;m 加密签名文件 [35;1m"Release.gpg"[;m 是由顶层授权文件 [35;1m"Release"[;m 和加密
        的 Debian 档案库公钥创建。

[33;1m      *[;m 公开的 Debian 档案库公钥能够放入[35;1m“/etc/apt/trusted.gpg”[;m；

[33;1m          +[;m 这样的操作可以由安装最新的 base-files 软件包的方式完成，
            或者

[33;1m          +[;m 手动使用 gpg 或者 apt-key 工具获取发布在
            ftp-master.debian.org 上最新的档案库公钥。

[33;1m      *[;m secure APT 系统验证下载的顶层文件 [35;1m"Release"[;m 的完整性。加密验
        证过程用到了[35;1m"Release.gpg"[;m文件和在[35;1m"/etc/apt/trusted.gpg"[;m里的
        Debian 档案库公钥.

    所有 [35;1m"Packages"[;m 和 [35;1m"Sources"[;m 文件的完整性是由在顶层 [35;1m"Release"[;m 文
    件里的 MD5sum 值来验证。所有软件包文件的完整性由 [35;1m"Packages"[;m 和
    [35;1m"Sources"[;m 文件里的 MD5sum 值来验证.参见 [34;1mdebsums(1)[m 和第 2.4.2 节
    [35;1m“验证安装的软件包文件”[;m.

    因加密签名验证比计算 MD5sum 值消耗更多的 CPU，使用 MD5sum 值来验
    证每一个软件包，使用加密签名来验证顶层的 [35;1m"Release"[;m 文件，这种方式
    提供较好安全性的同时，也有比较好的性能 (参见第 10.3 节 “数据安全
    基础”).

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.3. 档案库层的“Release”文件[;m

    [36;1m提示[m

    档案库层的[35;1m“Release”[;[34;1mm文件将用作apt_preferences(5)[m的规则。

    归档层次的 [35;1m"Release"[;m 文件，其全部归档位置在 "/etc/apt/
    sources.list[35;1m"中的 "[;mdeb[35;1m"行中指定，如以下的 "[;mhttp://deb.debian.org/
    debian/dists/unstable/main/binary-amd64/Release[35;1m" 或 "[;mhttp://
    deb.debian.org/debian/dists/sid/main/binary-amd64/Release"。

    Archive: unstable
    Origin: Debian
    Label: Debian
    Component: main
    Architecture: amd64

    [33;1m小心[m

    对于[35;1m"Archive:"[;m 章节，系列名称([35;1m"stable"[;m，[35;1m"testing"[;m，[35;1m"unstable"[;m, …)
    用于 Debian archive ，而代号([35;1m"trusty"[;m, [35;1m"xenial"[;m, [35;1m"artful"[;m, …) 用
    于 Ubuntu archive。

    对于部分档案库,比如说 experimental 和 stretch-backports, 它们包含
    的软件包不会被自动安装，这是因为有额外的行，例如在 "http://
    deb.debian.org/debian/dists/experimental/main/binary-amd64/
    Release" 里面有如下额外的一行。

    Archive: experimental
    Origin: Debian
    Label: Debian
    NotAutomatic: yes
    Component: main
    Architecture: amd64

    请注意，普通的档案库没有 [35;1m"NotAutomatic: yes"[;m, 默认的 Pin-Priority
    值是 500, 而对于有 [35;1m"NotAutomatic: yes"[;m的特殊档案库, 默认的
    Pin-Priority 值是 1 (参见 [34;1mapt_preferences(5)[m 和第 2.7.3 节 “调整
    候选版本”).

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.4. 获取用于软件包的元数据[;m

    当使用 APT 工具时，如 aptitude, apt-get, synaptic, apt-file,
    auto-apt，我们需要更新包含 Debian 档案库信息元数据的本地拷贝。这
    些本地拷贝的文件名称，和在 [35;1m"/etc/apt/sources.list"[;m 文件里面的
    distribution, area, architecture 相应名称一致。 (参见第 2.1.4 节
    [35;1m“Debian 档案库基础”[;m).

[33;1m      *[;m "/var/lib/apt/lists/deb.debian.org_debian_dists_
        <distribution>_Release"

[33;1m      *[;m "/var/lib/apt/lists/deb.debian.org_debian_dists_
        <distribution>_Release.gpg"

[33;1m      *[;m "/var/lib/apt/lists/deb.debian.org_debian_dists_
        <distribution>_<area>_binary-<architecture>_Packages"

[33;1m      *[;m "/var/lib/apt/lists/deb.debian.org_debian_dists_
        <distribution>_<area>_source_Sources"

[33;1m      *[;m "/var/cache/apt/apt-file/deb.debian.org_debian_dists_
        <distribution>_Contents-<architecture>.gz" (apt-file)

    前 4 种类型的文件是所有相关的 APT 命令共享的，并且可以通过
    [35;1m“apt-get update”[;m 或 [35;1m“aptitude update”[;m 在命令行中进行更新。如果在
    [35;1m“/etc/apt/sources.list”[;m 中有相应的 [35;1m“deb”[;m 行，则 [35;1m“软件包”[;m 元数据会
    进行更新。如果在 [35;1m“/etc/apt/sources.list”[;m 中有相应的 [35;1m“deb-src”[;m 行
    ，则 [35;1m“源代码”[;m 元数据会进行更新。

    [35;1m"Packages"[;m 和 [35;1m"Sources"[;m 的元数据文件包含有[35;1m“Filename:”[;m字段，指向二
    进制和源代码包文件的位置。目前，这些软件包都统一放在[35;1m"pool/"[;m目录树
    下，这样可以改善跨版本发布的传输。

    [35;1m“软件包”[;m元数据的本地副本可以使用 aptitude 来进行交互式的搜索。专
    门的搜索命令 [34;1mgrep-dctrl(1)[m 可以搜索[35;1m“软件包”[;m和[35;1m“源代码”[;m元数据的本地
    副本。

    [35;1m"Contents-<architecture>"[;m元数据的本地拷贝，能够被"apt-file
    update"更新，它的位置和其它 4 个不同。参见 [34;1mapt-file(1)[m. (auto-apt
    的 [35;1m"Contents-<architecture>.gz"[;m文件的本地拷贝默认也使用不同的位置
    。)

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.5. APT 的软件包状态[;m

    除了远程获取元数据，lenny 之后的 APT 工具还会将它在本地产生的安装
    状态信息保存在 [35;1m“/var/lib/apt/extended_states”[;m 中，APT 会使用它们
    来追踪自动安装的所有软件包。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.6. aptitude 的软件包状态[;m

    除了远程获取元数据，aptitude 命令还会将它在本地产生的安装状态信息
    保存在 [35;1m“/var/lib/aptitude/pkgstates”[;m 中，这些信息只能被 aptitude
    使用。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.7. 获取的软件包的本地副本[;m

    所有通过 APT 机制远程获取的软件包都被保存在 “/var/cache/apt/
    archives” 中，直到它们被清除。

    aptitude 的这个缓存文件清理策略，能够在[35;1m"Options"[;m → [35;1m"Preferences"[;m
    下设置，也可以通过它的菜单，[35;1m"Actions"[;m下的[35;1m"Clean package cache"[;m 或
    [35;1m"Clean obsolete files"[;m 来执行强制清理。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.8. Debian 软件包文件名称[;m

    Debian 软件包文件有特定的名称结构。

    表 2.15. Debian 软件包的名称结构

    ┌───────────────────────────────────────────────────────────────┐
    │       软件包类型       │               名称结构               │
    ├────────────────────────┼──────────────────────────────────────┤
    │                        │<package-name>_<epoch>:               │
    │二进制软件包（亦称 deb）│<upstream-version>-<debian.version>-  │
    │                        │<architecture>.deb                    │
    ├────────────────────────┼──────────────────────────────────────┤
    │用于 debian-installer 的│<package-name>_<epoch>:               │
    │二进制软件包（亦称 udeb │<upstream-version>-<debian.version>-  │
    │）                      │<architecture>.udeb                   │
    ├────────────────────────┼──────────────────────────────────────┤
    │源代码软件包（上游源代码│<package-name>_<epoch>:               │
    │）                      │<upstream-version>-                   │
    │                        │<debian.version>.orig.tar.gz          │
    ├────────────────────────┼──────────────────────────────────────┤
    │1.0 源代码软件包(Debian │<package-name>_<epoch>:               │
    │改变)                   │<upstream-version>-                   │
    │                        │<debian.version>.diff.gz              │
    ├────────────────────────┼──────────────────────────────────────┤
    │3.0 (quilt 补丁管理工具)│<package-name>_<epoch>:               │
    │源代码软件包(Debian 改  │<upstream-version>-                   │
    │变)                     │<debian.version>.debian.tar.gz        │
    ├────────────────────────┼──────────────────────────────────────┤
    │                        │<package-name>_<epoch>:               │
    │源代码软件包（说明）    │<upstream-version>-                   │
    │                        │<debian.version>.dsc                  │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    这里仅叙述了基本的源码包格式。更多内容请参考 [34;1mdpkg-source(1)[m。

    表 2.16. Debian 软件包名称中每一个组件可以使用的字符

    ┌────────────────────────────────────────────────────┐
    │     名称组件     │可用的字符（正则表达式）│存在状态│
    ├──────────────────┼────────────────────────┼────────┤
    │<package-name>    │[a-z,A-Z,0-9,.,+,-]+    │必需    │
    ├──────────────────┼────────────────────────┼────────┤
    │<epoch>:          │[0-9]+:                 │可选    │
    ├──────────────────┼────────────────────────┼────────┤
    │<upstream-version>│[a-z,A-Z,0-9,.,+,-,:]+  │必需    │
    ├──────────────────┼────────────────────────┼────────┤
    │<debian.version>  │[a-z,A-Z,0-9,.,+,~]+    │可选    │
    └────────────────────────────────────────────────────┘


    [33;1m注意[m

    你可以用 [34;1mdpkg(1)[m提供的命令检查软件包版本, 例如., "dpkg
[33m    --compare-versions 7.0 gt 7.~pre1 ; echo $?" .[m

    [33;1m注意[m

    debian-installer (d-i) 使用 udeb 作为它的二进制软件包的文件扩展名
    ，而非普通的 deb。一个 udeb 软件包是从 deb 软件包中剥离了一些不必
    要的内容（例如文档），从而节省空间同时也放宽软件包政策的要求。deb
    和 udeb 软件包会共享相同的软件包结构。[35;1m“u”[;m 表示微小。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.9. dpkg 命令[;m

    [34;1mdpkg(1)[m 是 Debian 软件包管理中最底层的工具。它非常强大，必须小心
    使用。

    当安装名为 [35;1m“<package_name>”[;m 的软件包时，dpkg 会按照下列的顺序处理
    它。

     1. 解包 deb 文件（等同于 [35;1m“ar -x”[;m）

     2. 使用 [34;1mdebconf(1)[m 执行 [35;1m“<package_name>.preinst”[;m

     3. 将软件包安装到系统中（等同于 [35;1m“tar -x”[;m）

     4. 使用 [34;1mdebconf(1)[m 执行 [35;1m“<package_name>.postinst”[;m

    debconf 系统提供带有 I18N 和 L10N （第 8 章国际化和本地化）支持的
    标准化用户交互。

    表 2.17. dpkg 创建的重要文件

    ┌───────────────────────────────────────────────────────────────┐
    │           文件           │              内容说明              │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/info/       │列出配置文件。（使用者可修改的）    │
    │<package_name>.conffiles  │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/info/       │列出软件包安装的所有文件和目录      │
    │<package_name>.list       │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/info/       │列出软件包安装的文件的 MD5 哈希值   │
    │<package_name>.md5sums    │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/info/       │软件包安装之前运行的软件包脚本      │
    │<package_name>.preinst    │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/info/       │软件包安装之后运行的软件包脚本      │
    │<package_name>.postinst   │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/info/       │软件包移除之前运行的软件包脚本      │
    │<package_name>.prerm      │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/info/       │软件包移除之后运行的软件包脚本      │
    │<package_name>.postrm     │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/info/       │用于 debconf 系统的软件包脚本       │
    │<package_name>.config     │                                    │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/alternatives│update-alternatives 命令使用的替代信│
    │/<package_name>           │息                                  │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/available   │所有软件包的可用性信息              │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/diversions  │[34;1mdpkg(1)[m 使用的文件移动信息，由      │
    │                          │[34;1mdpkg-divert(8)[m 设置                 │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/statoverride│[34;1mdpkg(1)[m 使用的文件状态改变信息，由  │
    │                          │[34;1mdpkg-statoverride(8)[m 设置           │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/status      │所有软件包的状态信息                │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/lib/dpkg/status-old  │[35;1m“var/lib/dpkg/status”[;m 文件的第一代备│
    │                          │份                                  │
    ├──────────────────────────┼────────────────────────────────────┤
    │/var/backups/dpkg.status* │第二代备份，以及“var/lib/dpkg/      │
    │                          │status”文件更旧的备份               │
    └───────────────────────────────────────────────────────────────┘


    [35;1m“status”[;m 文件也被例如 [34;1mdpkg(1)[m、[35;1m“dselect update”[;m 和 “apt-get -u
    dselect-upgrade” 等工具使用。

    专门的搜索命令 [34;1mgrep-dctrl(1)[m 可以搜索 [35;1m“status”[;m 和 [35;1m“available”[;m 元
    数据的本地副本。

    [36;1m提示[m

    在debian 安装器环境下, udpkg 命令用于打开udeb 软件包，udpkg 命令
    是 dpkg 命令的一个精简版本.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.10. update-alternatives 命令[;m

    Debian 系统使用 [34;1mupdate-alternatives(1)[m 让用户可以不受干扰地安装多
    种重叠的程序。例如，如果同时安装了 vim 和 nvi 软件包，你可以使 vi
    命令选择运行 vim。

[32;1m    $ ls -l $(type -p vi)[;m
    lrwxrwxrwx 1 root root 20 2007-03-24 19:05 /usr/bin/vi -> /etc/alternatives/vi
[33m[32;1m    $ sudo update-alternatives --display vi[;m[m
    ...
[33m[32;1m    $ sudo update-alternatives --config vi[;m[m
      Selection    Command
[33m     ----------------------------------------------[m
          1        /usr/bin/vim
[33;1m    *[;m+    2        /usr/bin/nvi

    Enter to keep the default[*], or type selection number: 1

    Debian 选择系统在 [35;1m"/etc/alternatives/"[;m 目录里通过符号链接来维持它
    的选择。选择进程使用[35;1m"/var/lib/dpkg/alternatives/"[;m目录里面的相应文
    件。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.11. dpkg-statoverride 命令[;m

    当安装一个软件包时，由 [34;1mdpkg-statoverride(8)[m 命令提供的状态修改，
    [34;1m是告诉dpkg(1)[m 对文件使用不同的属主或权限的一个方法。如果使用了
[33m    [35;1m"--update"[;m 选项，并且文件存在，则该文件会被立即设置为新的属主和模[m
    式。

    [33;1m小心[m

    系统管理员使用 chmod 或 chown 命令直接修改某个软件包文件的属主或
    权限，将会在下次软件包升级时，被重置。

    [33;1m注意[m

    本人在此使用了文件一词，但事实上也可用于dpkg 所处理的任何文件系统
    对象，包括目录，设备等。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.5.12. dpkg-divert 命令[;m

    [34;1mdpkg-divert(8)[m 命令提供的文件转移，是迫使 [34;1mdpkg(1)[m 将文件不安装到
    其默认位置，而是安装到转移的位置。dpkg-divert 是软件包维护脚本。
    不建议系统管理员使用这个命令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.6. 从损坏的系统中恢复[;m

    当运行 unstable 系统，系统管理员会遇到从错误的软件包管理进行恢复
    的情形。

    [33;1m小心[m

    下面的一些方法具有很高的风险。在此先对你进行警告！

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.6.1. 不兼容旧的用户配置[;m

    如果一个桌面 GUI 程序在重要的上游版本升级后变得不稳定，你应该怀疑
    这是旧的本地配置文件（由它创建的）所导致的。如果它在新建的用户账
    号下运行稳定，那么这个假设就得到了证实。（这是一个打包的 bug 并且
    打包者通常会避免它。）

    为了恢复稳定，你应该移除相应的本地配置文件并重新启动 GUI 程序。你
    可能需要阅读旧的配置文件内容以便之后恢复配置信息。（别将它们删得
    太快了。）

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.6.2. 具有相同文件的不同软件包[;m

    文档级的软件包管理系统，比如说 [34;1maptitude(8)[m 或 [34;1mapt-get(1)[m, 使用软
    件包依赖，当出现相同文件时，不会尝试去安装软件包。(参见第 2.1.6
    节 [35;1m“软件包依赖关系”[;m).

    软件包维护者的错误，或者系统管理员配置了不一致的档案库混合源，(参
    见第 2.7.2 节 [35;1m“混合源档案库中的软件包”[;m)，都会出现不正确的软件包依
    赖情况。如果在出现相同文件的情况下，你通过 [34;1maptitude(8)[m 或 apt-get
    (1) 安装软件包，[34;1mdpkg(1)[m 在对软件包解包时，确定会给调用程序返回错
    误，并不会覆盖已经存在的文件。

    [33;1m小心[m

    使用第三方软件包会导致重大的系统风险，因为其通过使用 root 权限运
    行维护者脚本能够对你的系统做任何事。[34;1mdpkg(1)[m 命令只防止解包时的覆
    盖行为。

    可以先通过删除旧的令人讨厌的软件包，<old-package>，来解决这类错误
    的安装问题。

[32;1m    $ sudo dpkg -P <old-package>[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.6.3. 修复损坏的软件包脚本[;m

    当软件包脚本中的一个命令由于某些原因返回错误，脚本也将由于错误而
    退出，软件包管理系统忽略它们的行为，并导致部分安装的软件包。当一
    个软件包在它的删除脚本中有错误时，该软件包将会成为不可能删除的软
    件包，处理这些问题，都会变得相当棘手。

    对于 [35;1m“<package_name>”[;m 的软件包脚本问题，你应该查看下列的软件包脚
    本。

[33;1m      *[;m [35;1m"/var/lib/dpkg/info/<package_name>.preinst"[;m

[33;1m      *[;m [35;1m"/var/lib/dpkg/info/<package_name>.postinst"[;m

[33;1m      *[;m [35;1m"/var/lib/dpkg/info/<package_name>.prerm"[;m

[33;1m      *[;m [35;1m"/var/lib/dpkg/info/<package_name>.postrm"[;m

    使用下列的方法，以 root 编辑损坏的软件包脚本。

[33;1m      *[;m 在行首添加 [35;1m“#”[;m 可以禁用出错的行

[33;1m      *[;m 在出错行的行尾添加 [35;1m“|| true”[;m 可以强制返回成功

    使用下列命令来配置所有部分安装的软件包。

[33m[31;1m    # dpkg --configure -a[;m[m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.6.4. 使用 dpkg 命令进行救援[;m

    因为 dpkg 是非常底层的软件包工具，它可以在很糟糕的情况下进行工作
    ，例如无法启动系统且没有网络连接。让我们假定 foo 软件包损坏了，并
    且需要更换。

    你可以在软件包缓存目录：[35;1m“/var/cache/apt/archives/”[;m 中找到旧的 foo
    软件包的无 bug 版本。（如果找不到，你可以从档案库 http://
    snapshot.debian.org/ 中下载它，或从具有软件包缓存功能的机器中拷贝
    它。）

    如果你能够启动系统，你可以通过下列命令来安装它。

[31;1m    # dpkg -i /path/to/foo_<old_version>_<arch>.deb[;m

    [36;1m提示[m

    如果你系统损坏较小，你也可以使用更高层的 APT 系统来降级整个系统，
    就像第 2.7.10 节 [35;1m“紧急降级”[;m 中做的那样。

    如果你的系统无法从硬盘启动，你应该寻找其它方式来启动它。

     1. 使用 Debian 安装光盘以救援模式启动系统。

     2. 将硬盘上无法启动的系统挂载到 [35;1m“/target”[;m。

     3. 通过下列命令安装旧版本的 foo 软件包。

[33m[31;1m    # dpkg --root /target -i /path/to/foo_<old_version>_<arch>.deb[;m[m

    即使位于硬盘上的 dpkg 命令已损坏，该命令依旧可以执行。

    [36;1m提示[m

    任何由硬盘、live GNU/Linux CD、可启动的 USB 驱动或网络启动上的另
    一系统启动的 GNU/Linux 系统到可以类似地用来救援损坏的系统。

    如果由于依赖问题，无法用这种方式安装软件包，并且你真的必须真么做
[33m    ，你可以使用 dpkg 的 [35;1m“--ignore-depends”[;m、[35;1m“--force-depends”[;m 和其它[m
    选项来无视依赖。如果你这么做了，之后你必须认真努力地修复依赖关系
    。更多细节参见 [34;1mdpkg(8)[m。

    [33;1m注意[m

    如果你的系统严重损坏了，你应该将系统完整备份到一个安全的地方（参
    见第 10.2 节 [35;1m“备份和恢复”[;m）并进行一次全新的安装。这是耗时较少且效
    果较好的办法。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.6.5. 恢复软件包选择数据[;m

    如果 [35;1m“/var/lib/dpkg/status”[;m 因为某种原因出现错误，Debian 系统会丢
    失软件包选择数据并受到严重影响。寻找位于 “/var/lib/dpkg/
    status-old” 或 [35;1m“/var/backups/dpkg.status.*”[;m 中旧的 “/var/lib/dpkg
    /status” 文件。

    给 [35;1m“/var/backups/”[;m 分配一个单独的分区是一个好习惯，因为这个目录包
    含了许多重要的系统数据。

    对于严重的损坏，我建议备份系统后重新安装。即使失去 [35;1m“/var/”[;m 中的所
    有数据，你依旧可以从 [35;1m“/usr/share/doc/”[;m 目录恢复一些信息来引导你进
    行新的安装。

    重新安装最小（桌面）系统。

[31;1m    # mkdir -p /path/to/old/system[;m

    将旧系统挂载到 [35;1m“/path/to/old/system/”[;m。

[31;1m    # cd /path/to/old/system/usr/share/doc[;m
[31;1m    # ls -1 >~/ls1.txt[;m
[31;1m    # cd /usr/share/doc[;m
[31;1m    # ls -1 >>~/ls1.txt[;m
[31;1m    # cd[;m
[31;1m    # sort ls1.txt | uniq | less[;m

    然后你就可以根据软件包名称来进行安装了。（可能会有一些非软件包名
    称，例如 [35;1m“texmf”[;m。）

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7. 软件包管理技巧[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.1. 如何挑选 Debian 软件包[;m

    你可以根据 aptitude 这个包管理工具中的软件包描述或者是任务面板下
    的列表信息，来查找你所需要的软件包。

    当遇到2个以上的类似的软件包时，先前没有经过反复的尝试，你不知道安
    装哪一个的时候，应该用常识来判断。我认为以下几点是首选的软件包应
    该具有的特征。

[33;1m      *[;m 重要性：是 > 否

[33;1m      *[;m 类型：main > contrib > non-free

[33;1m      *[;m 优先级：需要 > 重要 > 标准 > 可选 > 额外

[33;1m      *[;m 任务：在任务下有软件包的列表信息，例如 [35;1m“桌面环境”[;m

[33;1m      *[;m 软件包是被与之有依赖关系的软件包所选择的（例如 python2.4 依赖
        python）

[33;1m      *[;m 流行度：在投票或者安装指数上有着更高的分数

[33;1m      *[;m 更新日志：维护者经常的更新

[33;1m      *[;m BTS (缺陷跟踪系统):没有 RC 级别的缺陷（没有危险、重大严重的缺
        陷）

[33;1m      *[;m BTS (缺陷跟踪系统):有维护者对缺陷报告反馈

[33;1m      *[;m BTS (缺陷跟踪系统): 有着更多的近期修复的 bug 数目

[33;1m      *[;m BTS (缺陷跟踪系统):遗留的非严重（non-wishlist）缺陷数量较少

    Debian 是一个使用分布式开发模式的志愿项目，它的档案库包含了许多不
    同关注点和不同质量的软件包。你必须做出自己的选择。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.2. 混合源档案库中的软件包[;m

    [33;1m小心[m

    从混合源档案库中安装软件包是不被 Debian 官方发行版所支持的，除了
    官方支持的档案库的特殊组合以外，例如 stable 的 security updates
    和 stretch-updates。

    这里有一个列子，在原有只跟踪 testing 的场景，操作包含在 unstable
    里发现的新的上游软件包版本。

     1. 临时更改 [35;1m"/etc/apt/sources.list"[;m 文件，使之指向单一的
        [35;1m"unstable"[;m 发行版路径。

     2. 运行 [35;1m"aptitude update"[;m 命令。

     3. 运行 [35;1m"aptitude install <package-name>"[;m 命令。

     4. 恢复到原始 [35;1m"/etc/apt/sources.list"[;m 文件，使之指向 testing 路
        径。

     5. 运行 [35;1m"aptitude update"[;m 命令。

    使用这个手工方法，你不需要创建 [35;1m"/etc/apt/preferences"[;m 文件，也不
    需要担心 apt-pinning。但这个方法仍然是非常麻烦的。

    [33;1m小心[m

    当使用混合档案源的时候，因为 Debian 不会确保软件之间的兼容性，所
    以你必须自己去解决兼容性问题。如果软件之间存在不兼容性，系统可能
    会损坏。你必须能够判断这些操作所需的技术要求。使用任意混合的档案
    源是完全可选的操作，我并不鼓励你去使用它。

    从不同的档案库中安装软件包的一般规则如下。

[33;1m      *[;m 非二进制软件包 ([35;1m"Architecture: all"[;m) 的安装是更保险的。

[33;1m          +[;m 文档软件包：没有特别的要求

[33;1m          +[;m 解释程序的软件包：兼容的解释器必须是可用的

[33;1m      *[;m 二进制软件包 (non [35;1m"Architecture: all"[;m)通常会面临很多障碍，它
        的安装不保险的。

[33;1m          +[;m 库文件版本的兼容性（包括 [35;1m"libc"[;m）

[33;1m          +[;m 与之相关的有用的程序版本的兼容性

[33;1m          +[;m 内核 ABI 的兼容性

[33;1m          +[;m C++ ABI 的兼容性

[33;1m          +[;m …

    [33;1m注意[m

    为了使软件包的安装变得更保险，一些商业的非自由的二进制程序包可能
    会提供完整的静态链接库。你还是应该检查 ABI 的兼容性问题等等。

    [33;1m注意[m

    为避免短期出现坏的软件包，从非官方支持的档案库安装二进制软件包通
    常是一个坏注意。即使你在使用 apt-pinning 情况下，也是这样的。(参
    见第 2.7.3 节 [35;1m“调整候选版本”[;m).你应当考虑使用 chroot 或类似技术(参
    见第 9.10 节 [35;1m“虚拟化系统”[;m)来运行不同档案库的程序。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.3. 调整候选版本[;m

    没有 [35;1m"/etc/apt/preferences"[;m 文件，APT 系统使用版本字符串来选择最
    新的可用版本作为候选版本。这是通常的状态，也是 APT 系统最推荐的使
    用方法。所有官方支持的档案库集合，并不要求 [35;1m"/etc/apt/preferences"[;m
    文件，因此，一些不应当被作为自动更新源的软件包，被标记为
    NotAutomatic，并被适当处理。

    [36;1m提示[m

    版本字符串的比较规则可以被验证，例子如下，"dpkg
[33m    --compare-versions ver1.1 gt ver1.1~1; echo $?" (参见 [34;1mdpkg(1)[m)。[m

    如果经常从混合源档案库中安装软件包 (参见第 2.7.2 节 “混合源档案库
    中的软件包”), 你可以通过创建 [35;1m"/etc/apt/preferences"[;m 文件并且在其
    中写入关于调整候选版本的软件包选取规则的合适条目 (如
    [34;1mapt_preferences(5)[m 中所示)来自动化这些复杂的操作。这被称为
    apt-pinning。

    [31;1m警告[m

    新手用 apt-pinning 命令会造成比较大的问题。你必须避免使用这个命令
    除非确实需要它。

    [33;1m小心[m

    当使用 apt-pinning 命令时，因为 Debian 不会确保软件之间的兼容性，
    所以你必须自己确认其兼容性。apt-pinning 是完全可选的操作，我并不
    建议去使用它。

    [33;1m小心[m

    档案库层级的 Release 文件 (参见第 2.5.3 节 [35;1m“档案库层的“Release”[;m文
    件”) 使用 [34;1mapt_preferences(5)[m 的规则.对于 Debian 通用档案库和
    Debian 安全档案库，apt-pinning 只在 [35;1m"suite"[;m 名下工作。(这点和
    Ubuntu 档案库不同.)例如，你在 [35;1m"/etc/apt/preferences"[;m 文件里面，可
    以使用[35;1m"Pin: release a=unstable"[;m ，但不能使用 "Pin: release a=
    sid".

    [33;1m小心[m

    当使用非 Debian 的档案库作为 apt-pinning 的一部分时，你应该检查它
    们的用途和可信度。例如，Ubuntu 和 Debian 是不能混在一起的。

    [33;1m注意[m

    即使不创建 [35;1m"/etc/apt/preferences"[;m 文件，在不用 apt-pinning 命令的
    情况下，你也可以进行相当复杂的系统工作 (参见第 2.6.4 节 “使用
    dpkg 命令进行救援”和第 2.7.2 节 [35;1m“混合源档案库中的软件包”[;m)。

    如下是关于 apt-pinning 技术的简化说明。

    可用的软件包源在 [35;1m"/etc/apt/sources.list"[;m 文件里面定义，APT 系统从
    可用的软件包源里面选择 Pin-Priority 值最大的，作为升级软件包的候
    选版本.如果一个软件包的 Pin-Priority 大于 1000,这个版本限制为只能
    升级，关闭了软件包降级功能 (参见第 2.7.10 节 [35;1m“紧急降级”[;m).

    每个软件包的 Pin-Priority 值是在 [35;1m"/etc/apt/preferences"[;m 文件中的
    [35;1m"Pin-Priority"[;m 条目中定义或者是使用它的默认值。

    表 2.18. 用于 apt-pinning 技术的值得注意的 Pin-Priority 值列表。

    ┌───────────────────────────────────────────────────────────────┐
    │Pin-Priority│            apt-pinning 对软件包的影响            │
    ├────────────┼──────────────────────────────────────────────────┤
    │1001        │安装该软件包，即使是一个降级软件包的指令          │
    ├────────────┼──────────────────────────────────────────────────┤
    │990         │用作目标发行版档案库的默认值                      │
    ├────────────┼──────────────────────────────────────────────────┤
    │500         │用作常规档案库的默认值                            │
    ├────────────┼──────────────────────────────────────────────────┤
    │100         │用于 NotAutomatic 和 ButAutomaticUpgrades 档案库的│
    │            │默认值                                            │
    ├────────────┼──────────────────────────────────────────────────┤
    │100         │用于已安装软件包                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │1           │用于 NotAutomatic 档案库的默认值                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │-1          │即使被推荐，也绝不安装这个软件包                  │
    └───────────────────────────────────────────────────────────────┘


    目标发行版档案库可以通过以下几种方法来设置。

[33;1m      *[;m [35;1m"/etc/apt/apt.conf"[;m 配置文件中写入 "APT::Default-Release
        [35;1m"stable"[;m;"

[33;1m      *[;m 命令行选项，例如: [35;1m"apt-get install -t testing some-package"[;m

    NotAutomatic 和 ButAutomaticUpgrades 的档案是由档案库服务器上档案
    层级的 Release 文件来设置，(参见第 2.5.3 节 [35;1m“档案库层的“Release”[;m
    文件”)，同时包含[35;1m"NotAutomatic: yes"[;m 和 "ButAutomaticUpgrades:
    yes".而 NotAutomatic 档案也是由档案库服务器上的档案层级的 Release
    文件来设置，但只包含 [35;1m"NotAutomatic: yes"[;m.

    来自众多档案源的<软件包>的 apt-pinning 情况可以通过 "apt-cache
    policy <package>" 命令显示。

[33;1m      *[;m [35;1m"Package pin:"[;m 开头的行，列出了软件包版本的 pin ，如果
        <package> 相关的 pin 已经定义, 例如, [35;1m"Package pin: 0.190"[;m.

[33;1m      *[;m 没有 [35;1m"Package pin:"[;m 的行存在，如果没有 <package> 相关的定义。

[33;1m      *[;m 与 <package> 相关的 Pin-Priority 值列在所有版本字符串的右边，
        比如，[35;1m"0.181 700"[;m.

[33;1m      *[;m [35;1m"0"[;m 是列在所有版本字符串的右边，如果没有 <package> 相关的定义
        。例如, [35;1m"0.181 0"[;m.

[33;1m      *[;m 档案库 (在 [35;1m"/etc/apt/preferences"[;m 文件作为[35;1m"Package: *"[;m定义)
        的 Pin-Priority 值，列在所有档案库路径的左边，例如，"100
        http://deb.debian.org/debian/ stretch-backports/main
        Packages".

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.4. 更新和向后移植[;m

    stretch-updates 和 backports.debian.org 档案库提供了stable
    (stretch) 发行版的更新软件包。

    为了去使用这些档案库，你需要在 [35;1m"/etc/apt/sources.list"[;m 文件里写入
    如下所示的档案库列表。

    deb http://deb.debian.org/debian/ stretch main contrib non-free
    deb http://security.debian.org/ stretch/updates main contrib
    deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
    deb http://deb.debian.org/debian/ stretch-backports main contrib non-free

    并不需要在 [35;1m"/etc/apt/preferences"[;m 文件中显式设置Pin-Priority值.
    当新的包可用时，默认配置提供了更合理的更新 (请见第 2.5.3 节 “档案
    库层的[35;1m“Release”[;m文件”).

[33;1m      *[;m 所有已安装的旧软件包都可以通过 stretch-updates 档案库升级到新
        软件包。

[33;1m      *[;m 只有从 stretch-backports 档案库中手动安装的旧软件包才会通过
        stretch-backports 档案库升级到新软件包。

    当你想要从 stretch-backports 档案库中手动的安装一个名叫 "
    <package-name>" 的软件及其依赖包的时候，你应该在目标档案库之前加
    一个 “-t" 参数。

[32;1m    $ sudo apt-get install -t stretch-backports <package-name>[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.5. 阻止推荐的软件包的安装[;m

    如果不想要引入推荐的特定软件包，你必须创建 [35;1m"/etc/apt/preferences"[;m
    文件并且像如下所示的那样在文件的顶部明确列出这些软件包。

    Package: <package-1>
    Pin: version *
    Pin-Priority: -1

    Package: <package-2>
    Pin: version *
    Pin-Priority: -1

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.6. 使用带有 unstable 软件包的 testing 版本[;m

    如下是一个关于 apt-pinning 技术的例子，当使用 testing的时候，实现
    unstable 中的特定的较新的上游版本软件包的日常升级。你应该按如下所
    示的在 [35;1m"/etc/apt/sources.list"[;m 文件中列出所有需要的档案库。

    deb http://deb.debian.org/debian/ testing main contrib non-free
    deb http://deb.debian.org/debian/ unstable main contrib non-free
    deb http://security.debian.org/ testing/updates main contrib

    按如下所示的设置 [35;1m"/etc/apt/preferences"[;m 文件。

    Package: *
    Pin: release a=unstable
    Pin-Priority: 100

    当想要在此配置下从 unstable 档案库中安装 [35;1m"<package-name>"[;m 软件及
    它的依赖包时，你执行带有 [35;1m"-t"[;m 选项 (unstable 的 Pin-Priority 值变
    为 990) 的转换目标发行版的命令。

[32;1m    $ sudo apt-get install -t unstable <package-name>[;m

    在此配置下，执行 [35;1m"apt-get update"[;m 和 [35;1m"apt-get dist-upgrade"[;m(或者
    [35;1m"aptitude safe-upgrade"[;m 和 [35;1m"aptitude full-upgrade"[;m) 命令,会从
    testing 档案库升级那些从 testing 档案库安装的软件包并且从
    unstable 档案库升级那些从 unstable 档案库中安装的软件包。

    [33;1m小心[m

    [33;1m小心[m不要去移除 [35;1m"/etc/apt/sources.list"[;m 文件中的 [35;1m"testing"[;m 档案库
    。如果文件中没有 [35;1m"testing"[;m ，APT 系统会使用更加新的 unstable 档案
    库升级软件包。

    [36;1m提示[m

    我通常会在上述操作后，马上注释掉 [35;1m"/etc/apt/sources.list"[;m 文件中的
    [35;1m"unstable"[;m 档案库记录。这避免了因为处理 [35;1m"/etc/apt/sources.list"[;m
    文件中的众多记录而造成的升级缓慢虽然同时也阻止了那些从 unstable
    档案库中安装的软件包通过 unstable 升级。

    [36;1m提示[m

    如果 [35;1m"/etc/apt/preferences"[;m 文件中 [35;1m"Pin-Priority: 1"[;m 替代了
    [35;1m"Pin-Priority:100"[;m，即使 [35;1m"/etc/apt/sources.list"[;m 文件中的
    [35;1m"testing"[;m 记录被删除了，Pin-Priority 值为 100 的已安装软件包也不
    会通过 unstable 档案库升级。

    如果你希望自动跟踪 unstable 里某些特殊的软件包，而在安装时不再使
    用初始化选项 [35;1m"-t unstable"[;m ，你必须创建 [35;1m"/etc/apt/preferences"[;m 文
    件，并在该文件顶部按下面的方式清晰的列出所有那些软件包。

    Package: <package-1>
    Pin: release a=unstable
    Pin-Priority: 700

    Package: <package-2>
    Pin: release a=unstable
    Pin-Priority: 700

    如下是为每个特定的软件包设置 Pin-Priority 值。例如，为了使用最新
    的 unstable 的英文版 [35;1m"Debian Reference"[;m，你应该在 "/etc/apt/
    preferences" 文件中写入以下条目。

    Package: debian-reference-en
    Pin: release a=unstable
    Pin-Priority: 700

    Package: debian-reference-common
    Pin: release a=unstable
    Pin-Priority: 700

    [36;1m提示[m

    即使你使用的是 stable 档案库，apt-pinning 技术仍然是有效的。根据
    我以前的经验，从 unstable 档案库安装的文档包一直是安全的。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.7. 使用带有 experimental 软件包的 unstable 版本[;m

    这是使用apt-pinning 的另一个示例，该示例主要使用unstable源，但包
    含了experimental源, 该源可用于安装上游更新的软件包 . 需要包含在"/
    etc/apt/sources.list" 文件中的列表如下:

    deb http://deb.debian.org/debian/ unstable main contrib non-free
    deb http://deb.debian.org/debian/ experimental main contrib non-free
    deb http://security.debian.org/ testing/updates main contrib

    由于experimental源是非自动（NotAutomatic）的源 (参见第 2.5.3 节 “
    档案库层的[35;1m“Release”[;m文件”)，其默认的Pin-Priority值被设置为1
    (<<100) . 并不需要在[35;1m"/etc/apt/preferences"[;m文件中设置Pin-Priority
    值，只需要指定 experimental 源，除非你需要在下次更新时自动升级时
    更新特定软件包.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.8. 自动下载和升级软件包[;m

    apt 软件包有自己的 cron 脚本 [35;1m“/etc/cron.daily/apt”[;m ，它支持自动下
    载软件包。可以安装 unattended-upgrades 软件包来增强这个脚本，使它
    能够自动升级软件包。可以通过 [35;1m“/etc/apt/apt.conf.d/02backup”[;m 和 “/
    etc/apt/apt.conf.d/50unattended-upgrades” 中的参数来进行自定义，
    相关说明位于 [35;1m“/usr/share/doc/unattended-upgrades/README”[;m 中。

    unattended-upgrades 软件包主要用于 stable 系统的安全更新。如果自
    动升级损坏 stable 系统的风险小于被入侵者利用已被安全更新修复的安
    全漏洞，你应该考虑使用自动更新，配置参数如下。

    APT::Periodic::Update-Package-Lists [35;1m"1"[;m;
    APT::Periodic::Download-Upgradeable-Packages [35;1m"1"[;m;
    APT::Periodic::Unattended-Upgrade [35;1m"1"[;m;

    如果你运行的是 unstable 系统，你应该不会想要使用自动更新，因为它
    肯定会在某天损坏系统。即使位于这样的 unstable 情况下，你可能依旧
    想提前下载软件包以节省交互式升级的时间，其配置参数如下。

    APT::Periodic::Update-Package-Lists [35;1m"1"[;m;
    APT::Periodic::Download-Upgradeable-Packages [35;1m"1"[;m;
    APT::Periodic::Unattended-Upgrade [35;1m"0"[;m;

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.9. 限制 APT 的下载带宽[;m

    如果你想限制 APT 的下载带宽到 800Kib/sec（=100KiB/sec），你应该像
    下面那样设置 APT 的配置参数。

    APT::Acquire::http::Dl-Limit [35;1m"800"[;m;

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.10. 紧急降级[;m

    [33;1m小心[m

    降级在 Debian 设计上就不被官方支持。仅仅是在紧急恢复过程中需要做
    的一部分工作。尽管憎恨这种情形，但降级在很多场景下工作得也不错。
    对于重要系统，你应当在恢复操作后备份所有重要数据，并从零开始重新
    安装一个新的系统。

    你可以通过控制候选版本从新的档案库降级到旧的档案库（参见第 2.7.3
    节 [35;1m“调整候选版本”[;m），从而使损坏的系统恢复。下面是一种懒惰的方法，
    可以避免许多冗长的 [35;1m“dpkg -i <broken-package>_<old-version>.deb”[;m
    命令（参见第 2.6.4 节 [35;1m“使用 dpkg 命令进行救援”[;m）。

    搜索 [35;1m“/etc/apt/sources.list”[;m 文件中像下面那样使用 unstable 的行。

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

    使用下面的行替换它，从而改为使用 testing。

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

    按如下所示的设置 [35;1m"/etc/apt/preferences"[;m 文件。

    Package: *
    Pin: release a=testing
    Pin-Priority: 1010

    运行 [35;1m“apt-get update; apt-get dist-upgrade”[;m 使整个系统的软件包强
    制降级。

    在紧急降级后，移除 [35;1m“/etc/apt/preferences”[;m 这个特殊的文件。

    [36;1m提示[m

    这是一个好方法，移除（不是清除！）尽可能多地软件包，来减少依赖问
    题。你可能需要手动移除和安装一些软件包来使系统降级。需要特别注意
    Linux 内核、引导程序、udev、PAM、APT 和网络相关的软件包以及它们的
    配置文件。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.11. 上传软件包的是谁？[;m

    尽管 [35;1m“/var/lib/dpkg/available”[;m 和 “/usr/share/doc/package_name/
    changelog” 中列出的维护者姓名提供了关于[35;1m“软件包运作的幕后者是谁”[;m这
    一问题的一些信息，但软件包的实际上传者依旧不明。devscripts 软件包
    中的 [34;1mwho-uploads(1)[m 可以识别 Debian 源软件包的实际上传者。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.12. equivs 软件包[;m

    如果你从源代码编译了一个程序来代替 Debian 软件包，最好将它做成一
    个真正的本地 Debian 软件包（*.deb）并使用私人档案库。

    如果你选择从源代码编译一个程序并将它安装到 [35;1m“/usr/local”[;m，你可能需
    要使用 equivs 作为最后步骤来满足缺失的软件包依赖。

    Package: equivs
    Priority: optional
    Section: admin
    Description: Circumventing Debian package dependencies
     This package provides a tool to create trivial Debian packages.
     Typically these packages contain only dependency information, but they
     can also include normal installed files like other packages do.
     .
     One use for this is to create a metapackage: a package whose sole
     purpose is to declare dependencies and conflicts on other packages so
     that these will be automatically installed, upgraded, or removed.
     .
     Another use is to circumvent dependency checking: by letting dpkg
     think a particular package name and version is installed when it
     isn[35;1m't, you can work around bugs in other packages'[;m dependencies.
     (Please do still file such bugs, though.)

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.13. 移植一个软件包到 stable 系统[;m

    对于部分升级的 stable 系统，使用源软件包在运行环境中重新构建一个
    软件包是不错的选择。这可以避免因为依赖关系导致大量软件包升级。

    在 stable 系统的 [35;1m“/etc/apt/sources.list”[;m 文件中添加下列条目。

    deb-src http://deb.debian.org/debian unstable  main contrib non-free

    如下安装编译所需的软件包并下载源软件包。

[31;1m    # apt-get update[;m
[31;1m    # apt-get dist-upgrade[;m
[31;1m    # apt-get install fakeroot devscripts build-essential[;m
[32;1m    $ apt-get build-dep foo[;m
[32;1m    $ apt-get source foo[;m
[32;1m    $ cd foo*[;m

    如果需要向后移植，可以从 backport 的软件包中更新一些工具链软件包
    ，例如 dpkg 和 debhelper。

    执行下列命令。

[32;1m    $ dch -i[;m

    更新软件包版本，例如在 [35;1m“debian/changelog”[;m 中附加一个 [35;1m“+bp1”[;m

    像下面那样构建软件包并将它们安装到系统中。

[32;1m    $ debuild[;m
[32;1m    $ cd ..[;m
[31;1m    # debi foo*.changes[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.14. 用于 APT 的代理服务器[;m

    因为镜像整个 Debian 档案库的子区会浪费硬盘和网络带宽，当你管理许
    多 LAN 上的系统时，为 APT 部署一个本地代理服务器是个好主意。APT
    可以通过配置来使用通用 web（http）代理服务器，例如 squid（参见第
     6.10 节 [35;1m“其它网络应用服务”[;m），细节参见 apt.[34;1mconf(5)[m 和 “/usr/
    share/doc/apt/examples/configure-index.gz”。环境变量 “$http_proxy
    会覆盖 [35;1m“/etc/apt/apt.conf”[;m 文件中设置的代理服务器。

    这里有一些 Debian 档案库的专用代理工具。你应该在使用它们之前检查
    BTS。

    表 2.19. Debian 档案库的专用代理工具

    ┌───────────────────────────────────────────────────────────────┐
    │   软件包    │流行 │大小│                 说明                 │
    │             │ 度  │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │approx       │V:0, │4729│缓存 Debian 档案库文件的代理服务器（已│
    │             │I:0  │    │编译的 OCaml 程序）                   │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │apt-cacher   │V:1, │289 │为 Debian 软件包和源代码文件进行缓存代│
    │             │I:1  │    │理（Perl 程序）                       │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │apt-cacher-ng│V:4, │1401│分发软件包的缓存代理（C++ 编译的程序）│
    │             │I:5  │    │                                      │
    └───────────────────────────────────────────────────────────────┘


    [33;1m小心[m

    当 Debian 重构它的档案库结构时，这些专用的代理工具往往需要软件包
    维护者重写代码，并可能在一段时间内无法使用。另一方面，通用 web （
    http）代理服务器更强健并且更容易应对这种改变。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.15. 小型公共软件包档案库[;m

    [36;1m提示[m

    手动建立软件仓库是极其复杂的。有数个软件仓库管理工具可供用户选用
    。网上有一个详尽的列表可供参阅。

    下面是一个建立小型公共软件包档案库的示例，兼容了 secure APT 系统
    （参见第 2.5.2 节 [35;1m“顶层“Release”[;m文件及真实性”）。让我们进行一些假
    定。

[33;1m      *[;m 账号名：[35;1m“foo”[;m

[33;1m      *[;m 主机名：[35;1m“www.example.com”[;m

[33;1m      *[;m 所需软件包：apt-utils、gnupg 和其它软件包

[33;1m      *[;m URL: [35;1m"http://www.example.com/~foo/"[;m ( → "/home/foo/
        public_html/index.html")

[33;1m      *[;m 软件包架构：[35;1m“amd64”[;m

    在该服务器上使用如下方式为 Foo 创建一个 APT 源钥匙对。

[32;1m    $ ssh foo@www.example.com[;m
[33m[32;1m    $ gpg --gen-key[;m[m
    ...
[32;1m    $ gpg -K[;m
    ...
    sec   1024D/3A3CB5A6 2008-08-14
    uid                  Foo (ARCHIVE KEY) <foo@www.example.com>
    ssb   2048g/6856F4A7 2008-08-14
[33m[32;1m    $ gpg --export -a 3A3CB5A6 >foo.public.key[;m[m

    公布 [35;1m"foo.public.key"[;m文件，即公钥 ID 为 [35;1m"3A3CB5A6"[;m的源公钥文件，
    该文件可用于 Foo 源的发布

    使用如下方式创建一个名为[35;1m"Origin: Foo"[;m的源目录树。

[32;1m    $ umask 022[;m
[32;1m    $ mkdir -p ~/public_html/debian/pool/main[;m
[32;1m    $ mkdir -p ~/public_html/debian/dists/unstable/main/binary-amd64[;m
[32;1m    $ mkdir -p ~/public_html/debian/dists/unstable/main/source[;m
[32;1m    $ cd ~/public_html/debian[;m
[32;1m    $ cat > dists/unstable/main/binary-amd64/Release << EOF[;m
    Archive: unstable
    Version: 4.0
    Component: main
    Origin: Foo
    Label: Foo
    Architecture: amd64
    EOF
[32;1m    $ cat > dists/unstable/main/source/Release << EOF[;m
    Archive: unstable
    Version: 4.0
    Component: main
    Origin: Foo
    Label: Foo
    Architecture: source
    EOF
[32;1m    $ cat >aptftp.conf <<EOF[;m
    APT::FTPArchive::Release {
      Origin [35;1m"Foo"[;m;
      Label [35;1m"Foo"[;m;
      Suite [35;1m"unstable"[;m;
      Codename [35;1m"sid"[;m;
      Architectures [35;1m"amd64"[;m;
      Components [35;1m"main"[;m;
      Description [35;1m"Public archive for Foo"[;m;
    };
    EOF
[32;1m    $ cat >aptgenerate.conf <<EOF[;m
    Dir::ArchiveDir [35;1m"."[;m;
    Dir::CacheDir [35;1m"."[;m;
    TreeDefault::Directory [35;1m"pool/"[;m;
    TreeDefault::SrcDirectory [35;1m"pool/"[;m;
    Default::Packages::Extensions [35;1m".deb"[;m;
    Default::Packages::Compress [35;1m". gzip bzip2"[;m;
    Default::Sources::Compress [35;1m"gzip bzip2"[;m;
    Default::Contents::Compress [35;1m"gzip bzip2"[;m;

    BinDirectory [35;1m"dists/unstable/main/binary-amd64"[;m {
      Packages [35;1m"dists/unstable/main/binary-amd64/Packages"[;m;
      Contents [35;1m"dists/unstable/Contents-amd64"[;m;
      SrcPackages [35;1m"dists/unstable/main/source/Sources"[;m;
    };

    Tree [35;1m"dists/unstable"[;m {
      Sections [35;1m"main"[;m;
      Architectures [35;1m"amd64 source"[;m;
    };
    EOF

    通过 dupload，你可以自动重复更新你服务器系统上的 APT 档案库内容。

    当 [35;1m“~/.dupload.conf”[;m 包含如下内容时，在客户端执行 “dupload -t foo
    changes_file” 将所有的软件包文件放入 “~foo/public_html/debian/
    pool/main/”。

[32;1m    $cfg{'foo'} = {[;m
      fqdn => [35;1m"www.example.com"[;m,
      method => [35;1m"scpb"[;m,
      incoming => [35;1m"/home/foo/public_html/debian/pool/main"[;m,
[31;1m      # The dinstall on ftp-master sends emails itself[;m
      dinstall_runs => 1,
    };

[32;1m    $cfg{'foo'}{postupload}{'changes'} = "[;m
      echo 'cd public_html/debian ;
      apt-ftparchive generate -c=aptftp.conf aptgenerate.conf;
      apt-ftparchive release -c=aptftp.conf dists/unstable >dists/unstable/Release ;
      rm -f dists/unstable/Release.gpg ;
      gpg -u 3A3CB5A6 -bao dists/unstable/Release.gpg dists/unstable/Release'|
      ssh foo@www.example.com  2>/dev/null ;
      echo [35;1m'Package archive created!'[;m";

    [34;1mdupload(1)[m触发postupload钩子脚本，该脚本为每次上传创建软件包文件.

    你可以通过下面的方法将这个小型公共档案库添加到你客户端系统的 apt
    源中。

[32;1m    $ sudo bash[;m
[31;1m    # echo "deb http://www.example.com/~foo/debian/ unstable main" \[;m
       >> /etc/apt/sources.list
[31;1m    # apt-key add foo.public.key[;m

    [36;1m提示[m

    如果档案库位于本地文件系统中，你可以使用 “deb file:///home/foo/
    debian/ …”。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.16. 记录和复制系统配置[;m

    你可以通过下面命令建立软件包和 debconf 选择状态的本地副本。

[33m[31;1m    # dpkg --get-selections '*' > selection.dpkg[;m[m
[31;1m    # debconf-get-selections    > selection.debconf[;m

    这里，[35;1m“*”[;m 使 [35;1m“selection.dpkg”[;m 也包含 [35;1m“purge”[;m 的软件包。

    你可以将这两个文件移动到另一个电脑，并通过下列命令安装它们。

[31;1m    # dselect update[;m
[31;1m    # debconf-set-selections < myselection.debconf[;m
[33m[31;1m    # dpkg --set-selections  < myselection.dpkg[;m[m
[31;1m    # apt-get -u dselect-upgrade    # or dselect install[;m

    如果你需要管理一个集群中的许多服务器，并且它们的配置几乎相同，你
    应该考虑使用专门的软件包，例如 fai 来管理整个系统。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.17. 转换或安装一个外来的二进制软件包[;m

    [34;1malien(1)[m 可以将 Red Hat 的 rpm、Stampede 的 slp、Slackware 的 tgz
    和 Solaris 的 pkg 二进制软件包文件格式转换为 Debian 的 deb 软件包
    。如果你想使用来自另一个发行版的软件包，你可以使用 alien 转换并安
    装它。alien 也支持 LSB 软件包。

    [31;1m警告[m

    不应该用 [34;1malien(1)[m 来替代必要的系统软件包，例如 sysvinit、libc6、
    libpam-modules 等等。实际上，[34;1malien(1)[m 应该只用于 non-free 中仅提
    供二进制文件的软件包，并且它们应该兼容 LSB 或被静态链接。对于自由
    软件，你应该使用它们的源软件包来制作一个真正的 Debian 软件包。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.18. 不使用 dpkg 解压软件包[;m

    在任何的 Unix-like 环境中都可以不使用 [34;1mdpkg(1)[m，而使用标准的 [34;1mar(1)[m
    和 [34;1mtar(1)[m 来解压 [35;1m“dpkg*.deb”[;m 软件包。

[31;1m    # ar x /path/to/dpkg_<version>_<arch>.deb[;m
[31;1m    # ls[;m
    total 24
[33m    -rw-r--r-- 1 bozo bozo  1320 2007-05-07 00:11 control.tar.gz[m
[33m    -rw-r--r-- 1 bozo bozo 12837 2007-05-07 00:11 data.tar.gz[m
[33m    -rw-r--r-- 1 bozo bozo     4 2007-05-07 00:11 debian-binary[m
[31;1m    # mkdir control[;m
[31;1m    # mkdir data[;m
[31;1m    # tar xvzf control.tar.gz -C control[;m
[31;1m    # tar xvzf data.tar.gz -C data[;m

    其它的 [35;1m“*.deb”[;m 软件包可以使用 [34;1mdpkg-deb(1)[m 解压来获得上面的
    [35;1m“dpkg*.deb”[;m 软件包；或像上面那样使用标准的 [34;1mar(1)[m 和较新的带有 xz
    (1) 解压支持的 GNU [34;1mtar(1)[m。

    你也可以使用 mc 命令来浏览软件包内容。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m2.7.19. 更多关于软件包管理的文档[;m

    你可以从下面的文档中了解软件包管理的更多信息。

[33;1m      *[;m 软件包管理的主要文档：

[33;1m          +[;m [34;1maptitude(8)[m、[34;1mdpkg(1)[m、[34;1mtasksel(8)[m、[34;1mapt(8)[m、[34;1mapt-get(8)[m、
            [34;1mapt-config(8)[m、[34;1mapt-key(8)[m、sources.[34;1mlist(5)[m、apt.[34;1mconf(5)[m
            和 [34;1mapt_preferences(5)[m；

[33;1m          +[;m 来自 apt-doc 软件包的 “/usr/share/doc/apt-doc/guide.html/
            index.html” 和 “/usr/share/doc/apt-doc/offline.html/
            index.html”；

[33;1m          +[;m 来自 aptitude-doc-en 软件包的 “/usr/share/doc/aptitude/
            html/en/index.html”。

[33;1m      *[;m Debian 档案库的官方详细文档：

[33;1m          +[;m [35;1m"Debian Policy Manual Chapter 2 - The Debian Archive"[;m，

[33;1m          +[;m "Debian Developer's Reference, Chapter 4 - Resources for
            Debian Developers 4.6 The Debian archive"，

[33;1m          +[;m "The Debian GNU/Linux FAQ, Chapter 6 - The Debian FTP
            archives"。

[33;1m      *[;m 为 Debian 用户构建一个 Debian 软件包的教程：

[33;1m          +[;m [35;1m“Debian 新维护人员手册”[;m（已过时）。

[33;1m          +[;m [35;1m“Debian 维护者指导”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 3 章 系统初始化[;m

    作为系统管理员，粗略地了解 Debian 系统的启动和配置方式是明智的。
    尽管准确的细节在安装的软件包及对应的文档中，但这些知识对我们大多
    数人来说都是必须掌握的。

    笔者基于自己和其他人的过往及现在的知识，尽己所能地提供关于 Debian
    系统的知识要点及其配置的快速概览作为读者的参考。由于 Debian 系统
    在不断地更新中，系统的状况可能已经有所变化。在对系统做任何修改之
    前，请参考各个软件包的最新文档。

    [36;1m提示[m

    [34;1mbootup(7)[m 介绍了基于 systemd 的系统启动流程。（近期的 Debian）

    [36;1m提示[m

    [34;1mboot(7)[m 介绍了基于 UNIX System V Release 4 的系统启动流程。（旧版
    的 Debian）

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.1. 启动过程概述[;m

    计算机系统从上电事件到能为用户提供完整的操作系统（OS）功能为止，
    需要经历几个阶段的启动过程。

    为简便起见，笔者将讨论范围限定在具有默认安装的典型 PC 平台上。

    典型的启动过程像是一个四级的火箭。每一级火箭将系统控制权交给下一
    级。

[33;1m      *[;m 第 3.1.1 节 [35;1m“第一阶段：BIOS”[;m

[33;1m      *[;m 第 3.1.2 节 [35;1m“第二阶段：引载加载程序”[;m

[33;1m      *[;m 第 3.1.3 节 [35;1m“第三阶段：迷你 Debian 系统”[;m

[33;1m      *[;m 第 3.1.4 节 [35;1m“第四阶段：常规 Debian 系统”[;m

    当然，这些阶段可以有不同的配置。比如，你编译了自己的内核，则可能
    会跳过迷你 Debian 系统的步骤。因此，在读者亲自确认之前，请勿假定
    自己系统的情况也是如此。

    [33;1m注意[m

    对于 SUN 或 Macintosh 系统等非传统 PC 平台来说，ROM 上的 BIOS 及
    磁盘上的分区可能大不相同（第 9.5.2 节 [35;1m“硬盘分区配置”[;m）。对于这种
    情况，请另寻对应平台相关的文档。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.1.1. 第一阶段：BIOS[;m

    BIOS 是启动过程的第一阶段，在上电事件后开始。CPU 的程序计数器在上
    电事件后被初始化为一个特定的内存地址，驻留在只读存储器（ROM）中的
    BIOS 就是从这个特定的内存地址开始执行。

    BIOS 执行硬件的基本初始化（POST: 上电自检）并将系统控制权交给你指
    定的下一步骤。BIOS 通常和硬件一同提供。

    BIOS 启动屏幕通常指示了进入 BIOS 配置界面所需的按键。流行的按键是
    F1、F2、F10、Esc、Ins 和 Del 键。假如你的启动屏幕被一个漂亮的图形
    界面隐藏，你可以按下某些按键（比如 ESC）取消隐藏。这些按键高度依
    赖于硬件。

    硬件位置和 BIOS 启动的代码的优先级可以在 BIOS 配置界面中选择。通
    常，在已选择的设备（硬盘、软件、CD-ROM……）中，最先找到的设备的最
    开始的几个扇区将被加载到内存，并执行其中的初始化代码。初始化代码
    可以是以下任意一种。

[33;1m      *[;m 引导加载代码

[33;1m      *[;m 类似 FreeDOS 这样的过滤型操作系统的内核代码

[33;1m      *[;m 能够加载到如此小的空间中的目标操作系统的内核代码

    通常，系统从主硬件的特定分区中引导。传统 PC 硬盘的最开始两个扇区
    中包含了主引导记录（MBR）。在 MBR 的末尾记录了磁盘分区信息及引导
    选择。BIOS 中执行的首段引导加载代码占据了 MBR 的其余部分。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.1.2. 第二阶段：引载加载程序[;m

    引导加载程序是启动过程的第二阶段，由 BIOS 启动。引导加载程序将系
    统内核映像和 initrd 映像加载到内存并将控制权交给它们。initrd 映像
    是根文件系统映像，其支持程度依赖于所使用的引导加载程序。

    Debian 系统通常使用 Linux 内核作为其默认的系统内核。当前 2.6/3.x
    版本 Linux 内核的 initrd 镜像从技术上说是 initramfs（初始化 RAM
    文件系统）镜像。基本的 initrd 镜像是 root 文件系统中各个文件使用
    cpio 压缩得到的。内核可以在启动流程中非常早的阶段，在加载基本的
    initrd 镜像之前即更新微码。以未压缩 cpio 格式存储微码二进制文件的
    initrd 镜像和基本 initrd 镜像两部分可以联合组成一个 initrd 镜像，
    从而帮助实现上述功能。

    [36;1m提示[m

    您可以使用 [34;1mlsinitramfs(8)[m 和 [34;1munmkinitramfs(8)[m 这两个工具检查
    initrd 镜像文件的内容，它们由 initramfs-tools-core软件包提供。另
    见 https://wiki.debian.org/initramfs 以了解更多信息。

    Debian 系统默认将 PC 平台的 GRUB 引导加载程序的第一阶段代码安装在
    MBR 中。可用的引导加载程序和配置选项如下。

    表 3.1. 引导加载程序列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包    │流行 │大小│initrd│引导加载│        说明         │
    │              │ 度  │    │      │  程序  │                     │
    ├──────────────┼─────┼────┼──────┼────────┼─────────────────────┤
    │              │V:0, │    │      │传统    │可智能识别磁盘分区和 │
    │grub-legacy   │I:2  │719 │支持  │GRUB    │文件系统（例如 vfat、│
    │              │     │    │      │        │ext3…）。            │
    ├──────────────┼─────┼────┼──────┼────────┼─────────────────────┤
    │              │V:28,│    │      │GRUB 第 │可智能识别磁盘分区和 │
    │grub-pc       │I:842│584 │支持  │2 版    │文件系统（例如 vfat、│
    │              │     │    │      │        │ext4…）。（默认安装）│
    ├──────────────┼─────┼────┼──────┼────────┼─────────────────────┤
    │              │     │    │      │        │此为 GRUB 第 2 版的可│
    │grub-rescue-pc│V:0, │6288│支持  │GRUB 第 │引导修复映像（CD 和软│
    │              │I:1  │    │      │2 版    │盘）（PC / BIOS 版本 │
    │              │     │    │      │        │）                   │
    ├──────────────┼─────┼────┼──────┼────────┼─────────────────────┤
    │lilo          │V:0, │693 │支持  │Lilo    │依赖于数据在硬盘上的 │
    │              │I:3  │    │      │        │扇区位置。（较老）   │
    ├──────────────┼─────┼────┼──────┼────────┼─────────────────────┤
    │              │V:5, │    │      │        │可识别 ISO9660 文件系│
    │syslinux      │I:59 │299 │支持  │Isolinux│统。引导 CD 使用此项 │
    │              │     │    │      │        │。                   │
    ├──────────────┼─────┼────┼──────┼────────┼─────────────────────┤
    │              │V:5, │    │      │        │可识别 MSDOS 文件系统│
    │syslinux      │I:59 │299 │支持  │Syslinux│（FAT）。引导软盘使用│
    │              │     │    │      │        │此项。               │
    ├──────────────┼─────┼────┼──────┼────────┼─────────────────────┤
    │loadlin       │V:0, │83  │支持  │Loadlin │新系统从 FreeDOS 或  │
    │              │I:1  │    │      │        │MSDOS 中启动。       │
    ├──────────────┼─────┼────┼──────┼────────┼─────────────────────┤
    │              │V:0, │    │      │Neil    │此为取代 MSDOS MBR 的│
    │mbr           │I:10 │50  │不支持│Turton  │自由软件。只可识别硬 │
    │              │     │    │      │的 MBR  │盘分区。             │
    └───────────────────────────────────────────────────────────────┘


    [31;1m警告[m

    假如没有从 grub-rescue-pc 软件包中的映像制作出来的可引导修复盘（U
    盘、CD 或软盘），请勿玩弄引导加载程序。即使硬盘上没有可正常工作的
    引导加载程序，可引导修复盘也能引导你的系统。

    传统 GRUB 的菜单配置文件位于 /boot/grub/menu.lst。例如，文件中有
    如下的配置条目。

    title           Debian GNU/Linux
    root            (hd0,2)
    kernel          /vmlinuz root=/dev/hda3 ro
    initrd          /initrd.img

    GRUB 第 2 版的菜单配置文件位于 /boot/grub/grub.cfg。此文件由 /usr
    /sbin/update-grub 根据 [35;1m"/etc/grub.d/*"[;m 中的模板及 "/etc/default/
    grub" 中的设置自动生成。例如，文件中有如下的配置条目。

    menuentry [35;1m"Debian GNU/Linux"[;m {
            set root=(hd0,3)
            linux /vmlinuz root=/dev/hda3
            initrd /initrd.img
    }

    这些示例中，GRUB 参数的含义如下。

    表 3.2. GRUB 参数的含义

    ┌───────────────────────────────────────────────────────────────┐
    │ GRUB │                          说明                          │
    │ 参数 │                                                        │
    ├──────┼────────────────────────────────────────────────────────┤
    │root  │使用主磁盘的第 3 个分区，在传统 GRUB 中将此参数设置为 " │
    │      │(hd0,2)[35;1m"，在 GRUB 第 2 版中将此参数设置为 "[;m(hd0,3)"     │
    ├──────┼────────────────────────────────────────────────────────┤
    │kernel│使用位于 [35;1m"/vmlinuz"[;m 的内核，同时将 [35;1m"root=/dev/hda3 ro"[;m  │
    │      │作为参数传递给内核                                      │
    ├──────┼────────────────────────────────────────────────────────┤
    │initrd│使用位于 [35;1m"/initrd.img"[;m 的 initrd/initramfs 映像         │
    └───────────────────────────────────────────────────────────────┘


    [33;1m注意[m

    传统 GRUB 使用的分区号为 Linux 内核及各种实用工具使用的分区号减 1
    。GRUB 第 2 版修复了这个问题。

    [36;1m提示[m

    在标识一个块设备时，可能需要使用 UUID（参见第 9.5.3 节 “使用 UUID
    访问分区”）而不是类似 [35;1m"/dev/hda3"[;m 这样的文件名，例如 "root=UUID=
    81b289d5-4341-4003-9602-e254a17ac232 ro"。

    [36;1m提示[m

    如果使用了 GRUB，内核的启动参数可以在 /boot/grub/grub.cfg 里面设
    置。在 Debian 系统里，你不应该直接编辑 /boot/grub/grub.cfg。你可
    以通过编辑 /etc/default/grub 文件中 GRUB_CMDLINE_LINUX_DEFAULT 的
    值并运行 [34;1mupdate-grub(8)[m 来更新 /boot/grub/grub.cfg。

    [36;1m提示[m

    通过使用链式引导技术，你可以在一个引导装载程序中启动另一个引导装
    载程序。

    参见 [35;1m“info grub”[;m 及 [34;1mgrub-install(8)[m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.1.3. 第三阶段：迷你 Debian 系统[;m

    迷你 Debian 系统是启动流程的第三阶段，由引导加载程序启动。它会在
    内存中运行系统内核和根文件系统。这是启动流程的一个可选准备阶段。

    [33;1m注意[m

    [35;1m“迷你 Debian 系统”[;m是笔者自创的术语，用于在本文档中描述启动流程的
    第三个阶段。这个系统通常被称为 initrd 或 initramfs 系统。内存中类
    似的系统在 Debian 安装程序中使用。

    /init 程序是内存中的根文件系统上执行的第一个程序。这个程序在用户
    空间把内核初始化，并把控制权交给下一阶段。迷你 Debian 系统能够在
    主引导流程之前添加内核模块或以加密形式挂载根文件系统，使引导流程
    更加灵活。

[33;1m      *[;m 如果 initramfs 是由 initramfs-tools 创建，则[35;1m"/init"[;m 程序是一
        个 shell 脚本程序。

[33;1m          +[;m 通过给内核添加 “break=init" 等启动参数，你可以中断这部分
            启动流程以获取 root shell。更多中断条件请参见 ”/init“ 脚
            本。这个 shell 环境已足够成熟，你可通过它很好地检查机器的
            硬件。

[33;1m          +[;m 迷你 Debian 系统中可用的命令是精简过的，且主要由一个称为
            [34;1mbusybox(1)[m 的 GNU 工具提供。

[33;1m      *[;m 如果 initramfs 是由 dracut 创建，则 [35;1m"/init"[;m 程序是一个二进制
        systemd 程序。

[33;1m          +[;m 迷你 Debian 系统中可用的命令是一个精简过的 [34;1msystemd(1)[m 环
            境。

    [33;1m小心[m

    当在一个只读的根文件系统上时，使用 mount 命令需要添加 -n 选项。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.1.4. 第四阶段：常规 Debian 系统[;m

    常规 Debian 系统是启动流程的第四阶段，由迷你 Debian 系统启动。迷
    你 Debian 系统的内核在此环境下继续运行。根文件系统将由内存切换到
    实际的硬盘文件系统上。

    init 程序是系统执行的第一个程序（PID=1），它启动其它各种程序以完
    成主引导流程。init 程序的默认路径是 ”/sbin/init“，但可通过内核启
    动参数修改，例如 ”init=/path/to/init_program"。

    默认的 init 程序一直在变化中：

[33;1m      *[;m squeeze 之前的 Debian，使用简单的 SysV 风格的 init。

[33;1m      *[;m wheezy 版本的 Debian 对 SysV 风格的 init 做了改进：使用 LSB
        头将启动步骤排序，同时并行执行启动脚本。

[33;1m      *[;m jessie 版本的 Debian 将默认 init 切换成 systemd，以使用事件驱
        动和并行初始化。

    [36;1m提示[m

[33m    你的系统中实际使用的 init 命令可以使用 [35;1m“ps --pid 1 -f”[;m 命令确认。[m

    [36;1m提示[m

    在 Debian jessie 版本后，[35;1m"/sbin/init"[;m 是一个到 "/lib/systemd/
    systemd" 的符号链接。

    表 3.3. Debian 系统启动工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │      软件包       │流行度│大小 │             说明             │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │systemd            │V:730,│11844│基于事件且支持并发的 [34;1minit(8)[m  │
    │                   │I:820 │     │守护进程（可替代 sysvinit）   │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │systemd-sysv       │V:713,│114  │systemd 需用的用以代替        │
    │                   │I:813 │     │sysvinit 的手册页和符号链接   │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │                   │V:0,  │     │提供 cron 后台守护进程（daemon│
    │systemd-cron       │I:1   │135  │）和 anacron 功能的 systemd 单│
    │                   │      │     │元                            │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │init-system-helpers│V:720,│129  │在 sysvinit 和 systemd 之间进 │
    │                   │I:840 │     │行转换的帮助工具              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │initscripts        │V:259,│205  │用于初始化和关闭系统的脚本    │
    │                   │I:626 │     │                              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │sysvinit-core      │V:13, │225  │类 System V 的 [34;1minit(8)[m 工具   │
    │                   │I:16  │     │                              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │sysv-rc            │V:436,│123  │类 System V 的运行级别修改机制│
    │                   │I:634 │     │                              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │sysvinit-utils     │V:782,│110  │类 System V 的实用工具（      │
    │                   │I:999 │     │[34;1mstartpar(8)[m，[34;1mbootlogd(8)[m，……）│
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │lsb-base           │V:891,│49   │Linux 标准规范 3.2 版的 init  │
    │                   │I:999 │     │脚本功能                      │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │insserv            │V:474,│140  │利用 LSB init.d 脚本依赖性来组│
    │                   │I:621 │     │织启动步骤的工具              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │uswsusp            │V:3,  │699  │使用 Linux 提供的用户态软件   │
    │                   │I:11  │     │suspend 的工具                │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │kexec-tools        │V:1,  │270  │用于 [34;1mkexec(8)[m 重启（热启动）的│
    │                   │I:8   │     │kexec 工具                    │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │systemd-bootchart  │V:0,  │123  │启动流程性能分析器            │
    │                   │I:0   │     │                              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │bootchart2         │V:0,  │94   │启动流程性能分析器            │
    │                   │I:1   │     │                              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │pybootchartgui     │V:0,  │177  │启动流程性能分析器（可视化）  │
    │                   │I:1   │     │                              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │mingetty           │V:0,  │35   │仅包含控制台的 [34;1mgetty(8)[m       │
    │                   │I:3   │     │                              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │mgetty             │V:0,  │301  │可智能调制解调的 [34;1mgetty(8)[m 替代│
    │                   │I:1   │     │品                            │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    有关启动流程加速的最新信息，请参见 Debian 维基：启动流程加速词条
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.2. Systemd 初始化[;m

    本节描述系统是怎样通过 PID=1 的 [34;1msystemd(1)[m 程序来启动（即初始化进
    程）。

    systemd 初始化进程基于单元配置文件 (参见 systemd.[34;1munit(5)[m) 来并行
    派生进程，这些单元配置文件使用声明样式来书写，代替之前的类 SysV
    的过程样式。这些单元配置文件从下面的一系列路径来加载 (参见
    systemd-system.[34;1mconf(5)[m) ：

[33;1m      *[;m [35;1m"/lib/systemd/system"[;m: OS 默认配置文件

[33;1m      *[;m [35;1m"/etc/systemd/system"[;m: 系统管理员的配置文件，它将忽略操作系统
        默认的配置文件

[33;1m      *[;m [35;1m"/run/systemd/system"[;m: 运行时产生的配置文件，它将忽略安装的配
        置文件

    他们的相互依赖关系通过[35;1m"Wants="[;m, [35;1m"Requires="[;m, [35;1m"Before="[;m, [35;1m"After="[;m,
    … 等指示来配置，(参见 systemd.[34;1munit(5)[m 里的 "MAPPING OF UNIT
    PROPERTIES TO THEIR INVERSES")。资源控制也是被定义 (参见
    systemd.[34;1mresource-control(5)[m).

    根据单元配置文件的后缀来区分它们的类型：

[33;1m      *[;m *.service 描述由 systemd 控制和监管的进程.参见
        systemd.[34;1mservice(5)[m.

[33;1m      *[;m *.device 描述在 [34;1msysfs(5)[m 里面作为 [34;1mudev(7)[m 设备树展示的设备。
        参见 systemd.[34;1mdevice(5)[m.

[33;1m      *[;m *.mount 描述由 systemd 控制和监管的文件系统挂载点。参见
        systemd.[34;1mmount(5)[m.

[33;1m      *[;m *.automount 描述由 systemd 控制和监管的文件系统自动挂载点。参
        见 systemd.[34;1mautomount(5)[m.

[33;1m      *[;m *.swap 描述由 systemd 控制和监管的 swap 文件或设备。参见
        systemd.[34;1mswap(5)[m.

[33;1m      *[;m *.path 描述被 systemd 监控的路径，用于基于路径的活动。参见
        systemd.[34;1mpath(5)[m.

[33;1m      *[;m *.socket 描述被 systemd 控制和监管的套接字，用于基于套接字的
        活动。参见 systemd.[34;1msocket(5)[m.

[33;1m      *[;m *.timer 描述被 systemd 控制和监管的计时器，用于基于时间的活动
        。参见 systemd.[34;1mtimer(5)[m.

[33;1m      *[;m *.slice 管理 [34;1mcgroups(7)[m 的资源。参见 systemd.[34;1mslice(5)[m.

[33;1m      *[;m *.scope 使用 systemd 的总线接口来程序化的创建，用以管理一系列
        系统进程。参见 systemd.[34;1mscope(5)[m.

[33;1m      *[;m *.target 把其它单元配置文件分组，在启动的时候，来创建同步点。
        参见systemd.[34;1mtarget(5)[m.

    系统启动时（即，init），systemd 进程会尝试启动"/lib/systemd/
    system/default.target（通常是到[35;1m"graphical.target"[;m的符号链接）。首
    先，一些特殊的 target 单元（参见 systemd.[34;1mspecial(7)[m），比如
    [35;1m"local-fs.target"[;m、[35;1m"swap.target"[;m和[35;1m"cryptsetup.target"[;m会被引入以挂
    载文件系统。之后，其它 target 单元也会根据单元依赖关系而被引入。
    详细情况，请阅读 [34;1mbootup(7)[m。

    systemd 提供向后兼容的功能。在 "/etc/init.d/rc[0123456S].d/[KS]
    <name>" 里面的 SysV 风格的启动脚本仍然会被分析；[34;1mtelinit(8)[m 会被转
    换为 systemd 的单元活动请求。

    [33;1m小心[m

    模拟的运行级别 2 到 4 全部被符号链接到了相同的[35;1m“multi-user.target”[;m
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.2.1. 主机名[;m

    内核维护系统主机名。在启动的时候，通过 systemd-hostnamed.service
    启动的系统单位设置系统的主机名，此主机名保存在 [35;1m"/etc/hostname"[;m。
    这个文件应该只包含系统主机名，而不是全称域名。

    不带参数运行 [34;1mhostname(1)[m 命令可以打印出当前的主机名。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.2.2. 文件系统[;m

    硬盘和网络文件系统的挂载选项可以在 [35;1m"/etc/fstab"[;m 中设置，参见
    [34;1mfstab(5)[m 和第 9.5.7 节 [35;1m“通过挂载选项优化文件系统”[;m。

    加密文件系统的配置设置在[35;1m“/etc/crypttab”[;m中。参见 [34;1mcrypttab(5)[m

    软 RAID 的配置 [34;1mmdadm(8)[m 设置在 [35;1m"/etc/mdadm/mdadm.conf"[;m. 参见
    mdadm.[34;1mconf(5)[m.

    [31;1m警告[m

    每次启动的时候，在挂载了所有文件系统以后，[35;1m"/tmp"[;m, [35;1m"/var/lock"[;m, 和
    [35;1m"/var/run"[;m 中的临时文件会被清空。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.2.3. 网络接口初始化[;m

    对于使用 systemd 的现代 Debian 桌面系统，网络接口通常由两个服务进
    行初始化：lo 接口通常在[35;1m“networking.service”[;m处理，而其它接口则由
    [35;1m“NetworkManager.service”[;m处理。

    参见第 5 章网络设置来获取怎样来配置它们的信息。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.2.4. 内核消息[;m

    在控制台上显示的内核错误信息，能够通过设置他们的阈值水平来配置。

[31;1m    # dmesg -n3[;m

    表 3.4. 内核错误级别表

    ┌──────────────────────────────────────────┐
    │错误级别值│错误级别名称│       说明       │
    ├──────────┼────────────┼──────────────────┤
    │0         │KERN_EMERG  │系统不可用        │
    ├──────────┼────────────┼──────────────────┤
    │1         │KERN_ALERT  │行为必须被立即采取│
    ├──────────┼────────────┼──────────────────┤
    │2         │KERN_CRIT   │危险条件          │
    ├──────────┼────────────┼──────────────────┤
    │3         │KERN_ERR    │错误条件          │
    ├──────────┼────────────┼──────────────────┤
    │4         │KERN_WARNING│警告条件          │
    ├──────────┼────────────┼──────────────────┤
    │5         │KERN_NOTICE │普通但重要的条件  │
    ├──────────┼────────────┼──────────────────┤
    │6         │KERN_INFO   │信息提示          │
    ├──────────┼────────────┼──────────────────┤
    │7         │KERN_DEBUG  │debug 级别的信息  │
    └──────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.2.5. 系统消息[;m

    在 systemd 下, 内核和系统的信息都通过日志服务
    systemd-journald.service (又名 journald)来记录，放在"/var/log/
    journal[35;1m"下的不变的二进制数据，或放在"[;m/run/log/journal/"下的变化的
    二进制数据.这些二进制日志数据，可以通过 [34;1mjournalctl(1)[m 命令来访问
    。

    在 systemd 下,系统日志工具 [34;1mrsyslogd(8)[m 改变它的行为来读取变化的二
    进制数据(代替 systemd 之前的默认的[35;1m"/dev/log"[;m) ，并能够创建传统的
    不变的 ASCII 系统日志数据。

    [35;1m"/etc/default/rsyslog"[;m 和 [35;1m"/etc/rsyslog.conf"[;m 能够自定义系统消息
    的日志文件和屏幕显示。参见 [34;1mrsyslogd(8)[m 和 rsyslog.[34;1mconf(5)[m，也可以
    参见第 9.2.2 节 [35;1m“日志分析”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.2.6. systemd 下的系统管理[;m

    systemd 不仅仅提供系统初始化，还提供通用的系统管理功能。比如说日
    志记录，登录管理，时间管理，网络管理等等。

    [34;1msystemd(1)[m 通过几个命令来管理：

[33;1m      *[;m [34;1msystemctl(1)[m 命令控制 systemd 的系统和服务管理器（命令行）,

[33;1m      *[;m [34;1msystemsdm(1)[m 命令控制 systemd 的系统和服务管理器(图形界面),

[33;1m      *[;m [34;1mjournalctl(1)[m 命令查询 systemd 日志,

[33;1m      *[;m [34;1mloginctl(1)[m 命令控制 systemd 登录管理器，

[33;1m      *[;m [34;1msystemd-analyze(1)[m 分析系统启动性能。

    这里有一个典型的 systemd 管理命令片段列表。确切含义，请阅读相关
    man 手册页。

    表 3.5. 典型的systemd 管理命令片段列表

    ┌───────────────────────────────────────────────────────────────┐
    │            操作             │ 类型 │         命令片段         │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │用于服务管理的图形界面       │图形界│[35;1m"systemadm"[;m (systemd-ui 软│
    │                             │面    │件包)                     │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │列出所有 target 单元配置     │单元  │"systemctl list-units     │
[33m    │                             │      │--type=target"            │[m
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │列出所有 service 单元配置    │单元  │"systemctl list-units     │
[33m    │                             │      │--type=service"           │[m
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │列出所有单元配置类型         │单元  │"systemctl list-units     │
[33m    │                             │      │--type=help"              │[m
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │列出内存中所有 socket 单元   │单元  │[35;1m"systemctl list-sockets"[;m  │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │列出内存中所有 timer 单元    │单元  │[35;1m"systemctl list-timers"[;m   │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │启动 [35;1m"$unit"[;m                 │单元  │[35;1m"systemctl start $unit"[;m   │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │停止 [35;1m"$unit"[;m                 │单元  │[35;1m"systemctl stop $unit"[;m    │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │重新加载服务相关的配置       │单元  │[35;1m"systemctl reload $unit"[;m  │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │停止和启动所有 [35;1m"$unit"[;m       │单元  │[35;1m"systemctl restart $unit"[;m │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │启动 [35;1m"$unit"[;m 并停止所有其它的│单元  │[35;1m"systemctl isolate $unit"[;m │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │转换到 [35;1m"图形"[;m (图形界面系统) │单元  │"systemctl isolate        │
    │                             │      │graphical"                │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │转换到 [35;1m"多用户"[;m (命令行系统) │单元  │"systemctl isolate        │
    │                             │      │multi-user"               │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │转换到 [35;1m"应急模式"[;m (单用户命令│单元  │[35;1m"systemctl isolate rescue"[;m│
    │行系统)                      │      │                          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │向[35;1m"$unit"[;m发送杀死信号        │单元  │[35;1m"systemctl kill $unit"[;m    │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │检查[35;1m"$unit"[;m服务是否是活动的  │单元  │"systemctl is-active      │
    │                             │      │$unit"                    │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │检查[35;1m"$unit"[;m服务是否是失败的  │单元  │"systemctl is-failed      │
    │                             │      │$unit"                    │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │检查[35;1m"$unit│$PID│device"[;m的状态│单元  │"systemctl status $unit│  │
    │                             │      │$PID│$device"             │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │显示[35;1m"$unit│$job"[;m的属性       │单元  │"systemctl show $unit│    │
    │                             │      │$job"                     │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │重设失败的[35;1m"$unit"[;m            │单元  │"systemctl reset-failed   │
    │                             │      │$unit"                    │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │列出所有单元服务的依赖性     │单元  │"systemctl                │
[33m    │                             │      │list-dependencies --all"  │[m
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │列出安装在系统上的单元文件   │单元文│"systemctl                │
    │                             │件    │list-unit-files"          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │启用 [35;1m"$unit"[;m (增加符号链接)  │单元文│[35;1m"systemctl enable $unit"[;m  │
    │                             │件    │                          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │禁用 [35;1m"$unit"[;m (删除符号链接)  │单元文│[35;1m"systemctl disable $unit"[;m │
    │                             │件    │                          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │取消遮掩 [35;1m"$unit"[;m (删除到 [35;1m"/  │单元文│"[;msystemctl unmask $unit"  │
    │dev/null" 的符号链接)        │件    │                          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │遮掩 [35;1m"$unit"[;m (增加到 [35;1m"/dev/  │单元文│"[;msystemctl mask $unit"    │
    │null" 的符号链接)            │件    │                          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │获取默认的 target 设置       │单元文│[35;1m"systemctl get-default"[;m   │
    │                             │件    │                          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │设置默认 target 为[35;1m"graphical"[;m│单元文│"systemctl set-default    │
    │(图形系统)                   │件    │graphical"                │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │设置默认的 target 为         │单元文│"systemctl set-default    │
    │[35;1m"multi-user"[;m (命令行系统)    │件    │multi-user"               │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │显示工作环境变量             │环境变│"systemctl                │
    │                             │量    │show-environment"         │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │设置环境变量 [35;1m"variable"[;m 的值 │环境变│"systemctl set-environment│
    │为 [35;1m"value"[;m                   │量    │variable=value"           │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │取消环境变量 [35;1m"variable"[;m 的设 │环境变│"systemctl                │
    │置                           │量    │unset-environment         │
    │                             │      │variable"                 │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │重新加载所有单元文件和后台守 │生命周│[35;1m"systemctl daemon-reload"[;m │
    │护进程（daemon）             │期    │                          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │关闭系统                     │系统  │[35;1m"systemctl poweroff"[;m      │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │关闭和重启系统               │系统  │[35;1m"systemctl reboot"[;m        │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │挂起系统                     │系统  │[35;1m"systemctl suspend"[;m       │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │休眠系统                     │系统  │[35;1m"systemctl hibernate"[;m     │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │查看 [35;1m"$unit"[;m 的工作日志      │日志  │[35;1m"journalctl -u $unit"[;m     │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │查看 [35;1m"$unit"[;m的工作日志 ([35;1m"tail│日志  │"[;mjournalctl -u $unit -f"  │
    │-f" 式样)                    │      │                          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │显示每一个初始化步骤所消耗的 │分析  │[35;1m"systemd-analyze time"[;m    │
    │时间                         │      │                          │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │列出所有单元的初始化时间     │分析  │[35;1m"systemd-analyze blame"[;m   │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │加载[35;1m"$unit"[;m文件并检测错误    │分析  │"systemd-analyze verify   │
    │                             │      │$unit"                    │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │跟踪 [34;1mcgroups(7)[m 的启动过程   │Cgroup│[35;1m"systemd-cgls"[;m            │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │跟踪 [34;1mcgroups(7)[m 的启动过程   │Cgroup│"ps xawf -eo              │
    │                             │      │pid,user,cgroup,args"     │
    ├─────────────────────────────┼──────┼──────────────────────────┤
    │跟踪 [34;1mcgroups(7)[m 的启动过程   │Cgroup│读取 "/sys/fs/cgroup/     │
    │                             │      │systemd/" 下的 sysfs      │
    └───────────────────────────────────────────────────────────────┘


    这里, 上面例子中的[35;1m"$unit"[;m，可以是一个单元名（后缀.service 和
    .target 是可选的)，或者，在很多情况下，也可以是匹配的多个单元
    (shell 式样的全局通配符[35;1m"*"[;m, [35;1m"?"[;m, [35;1m"[]"[;m，通过使用 [34;1mfnmatch(3)[m ，来匹
    配目前在内存中的所有单元的基本名称).

    上面列子的系统状态改变命令，通常是通过[35;1m"sudo"[;m来处理，用以获得需要
    的系统管理权限。

    [35;1m"systemctl status $unit|$PID|$device"[;m 的输出使用有颜色的点([35;1m"●"[;m)来
    概述单元状态，让人看一眼就知道。

[33;1m      *[;m 白色的 [35;1m"●"[;m 表示一个 [35;1m"不活动"[;m或[35;1m"变为不活动中"[;m的状态。

[33;1m      *[;m 红色的 [35;1m"●"[;m表示[35;1m“失败”[;m或者[35;1m“错误”[;m状态。

[33;1m      *[;m 绿色[35;1m"●"[;m表示[35;1m“活动”[;m、[35;1m“重新加载中”[;m或[35;1m“激活中”[;m状态。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.2.7. 定制 systemd[;m

    使用默认安装，通过 systemd 启动的过程中，在 network.target 启动后
    ，很多网络服务 (参见第 6 章网络应用)作为后台守护进程（daemon）启
    动。 [35;1m"sshd"[;m 也不列外。让我们修改为按需启动[35;1m"sshd"[;m 作为一个定制化的
    例子。

    首先，禁用系统安装的服务单元。

[32;1m     $ sudo systemctl stop sshd.service[;m
[32;1m     $ sudo systemctl mask sshd.service[;m

    传统 Unix 服务的按需套接字激活（on-demand socket activation）系统
    由 indetd 超级服务来提供。在 systemd 下, 相同功能能够通过增加
[33;1m    *[;m.socket 和 *.service 单元配置文件来启用。

    sshd.socket 用来定义一个监听的套接字

    [Unit]
    Description=SSH Socket for Per-Connection Servers

    [Socket]
    ListenStream=22
    Accept=yes

    [Install]
    WantedBy=sockets.target

    sshd@.service 作为 sshd.socket 匹配的服务文件

    [Unit]
    Description=SSH Per-Connection Server

    [Service]
    ExecStart=-/usr/sbin/sshd -i
    StandardInput=socket

    然后重新加载。

[32;1m     $ sudo systemctl daemon-reload[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.3. udev 系统[;m

    对于 Linux 内核 2.6 版和更新版本，udev 系统提供了自动硬件发现和初
    始化机制。(参见 [34;1mudev(7)[m).在内核发现每个设备的基础上，udev 系统使
    用从 sysfs 文件系统 (参见第 1.2.12 节 [35;1m“procfs 和 sysfs”[;m)的信息启
    动一个用户进程，使用 [34;1mmodprobe(8)[m 程序 (参见第 3.3.1 节 “内核模块
    初始化”)加载支持它所要求的内核模块, 创建相应的设备节点。

    [36;1m提示[m

    如果由于某些理由，[35;1m"/lib/modules/<kernel-version>/modules.dep"[;m没有
    被 [34;1mdepmod(8)[m 正常生成，模块可能不会被 udev 系统按期望的方式加载。
    执行[35;1m"depmod -a"[;m 来修复它。

    设备节点的名字，可以通过[35;1m"/etc/udev/rules.d/"[;m里的 udev 文件来配置.
    当前默认的规则倾向创建动态生成的名字，除了光驱和网络设备外，会生
    成非静态的设备名。通过添加和光驱、网络设备类似的个性化规则，你也
    可以为 USB 盘之类的其它设备，生成静态设备名。参见 "Writing udev
    rules[35;1m" 或 "[;m/usr/share/doc/udev/writing_udev_rules/index.html".

    由于 udev 系统是一个正在变化的事物，我在其它文档进行了详细描述，
    在这里只提供了最少的信息。

    [36;1m提示[m

    [35;1m"/etc/fstab"[;m里面的挂载规则,设备节点不必需是静态的。你能够使用
    UUID 来挂载设备，来代替[35;1m"/dev/sda"[;m之类的设备名. 参见第 9.5.3 节 “
    使用 UUID 访问分区”.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m3.3.1. 内核模块初始化[;m

    通过 [34;1mmodprobe(8)[m 程序添加和删除内核模块，使我们能够从用户进程来配
    置正在运行的 Linux 内核。udev 系统(参见第 3.3 节 [35;1m“udev 系统”[;m)自动
    化它的调用来帮助内核模块初始化。

    下面的非硬件模块和特殊的硬件驱动模块，需要被预先加载，把它们在"/
    etc/modules"文件里列出 (参见 [34;1mmodules(5)[m).

[33;1m      *[;m TUN/TAP 模块提供虚拟的 Point-to-Point 网络设备 (TUN) 和虚拟的
        Ethernet 以太网网络设备 (TAP),

[33;1m      *[;m netfilter 模块提供 netfilter 防火墙能力([34;1miptables(8)[m, 第 5.10
        节 [35;1m“Netfilter 网络过滤框架”[;m),

[33;1m      *[;m watchdog timer 驱动模块。

    [34;1mmodprobe(8)[m 程序的配置文件是按 modprobe.[34;1mconf(5)[m的说明放在"/etc/
    modprobes.d/" 目录下，(如果你想避免自动加载某些内核模块，考虑把它
    们作为黑名单放在[35;1m"/etc/modprobes.d/blacklist"[;m 文件里.)

    [35;1m"/lib/modules/<version>/modules.dep"[;m 文件由 [34;1mdepmod(8)[m 程序生成，
    它描述了 [34;1mmodprobe(8)[m 程序使用的模块依赖性.

    [33;1m注意[m

    如果你在启动时出现模块加载问题，或者 [34;1mmodprobe(8)[m时出现模块加载问
    题, [35;1m"depmod -a"[;m 可以通过重构[35;1m"modules.dep"[;m来解决这些问题。

    [34;1mmodinfo(8)[m 程序显示 Linux 内核模块信息。

    [34;1mlsmod(8)[m 程序以好看的格式展示[35;1m"/proc/modules"[;m的内容,显示当前内核加
    载了哪些模块。

    [36;1m提示[m

    你能够精确识别你系统上的硬件。参见第 9.4.3 节 [35;1m“硬件识别”[;m.

    [36;1m提示[m

    你可以在启动时配置硬件来激活期望的硬件特征。参见第 9.4.4 节 “硬件
    配置”.

    [36;1m提示[m

    你可以重新编译内核来增加你的特殊设备的支持。参见第 9.9 节 [35;1m“内核”[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 4 章 认证[;m

    当用户（或程序）需要访问系统时，需要进行认证，确认身份是受信任。

    [31;1m警告[m

    PAM 的配置错误可能会锁住你的系统。你必须有一个准备好的救援 CD，或
    者设立一个替代的 boot 分区。为了恢复系统，你需要使用它们启动系统
    并纠正错误。

    [31;1m警告[m

    本章是基于 2013 年发布的 Debian 7.0 (Wheezy) 编写的，所以其内容正
    在变得过时。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.1. 一般的 Unix 认证[;m

    一般的 Unix 认证由 PAM （Pluggable Authentication Modules，即可插
    入的验证模块）下的 [34;1mpam_unix(8)[m 模块提供。它的 3 个重要文件如下，
    其内的条目使用 [35;1m“:”[;m 分隔。

    表 4.1. [34;1mpam_unix(8)[m 使用的 3 个重要配置文件

    ┌─────────────────────────────────────────────────────────┐
    │   文件    │   权限   │用户│  组  │         说明         │
    ├───────────┼──────────┼────┼──────┼──────────────────────┤
[33m    │/etc/passwd│-rw-r--r--│root│root  │（明文的）用户账号信息│[m
    ├───────────┼──────────┼────┼──────┼──────────────────────┤
[33m    │/etc/shadow│-rw-r-----│root│shadow│安全加密的用户账号信息│[m
    ├───────────┼──────────┼────┼──────┼──────────────────────┤
[33m    │/etc/group │-rw-r--r--│root│root  │组信息                │[m
    └─────────────────────────────────────────────────────────┘


    [35;1m“/etc/passwd”[;m 包含下列内容。

     ...
    user1:x:1000:1000:User1 Name,,,:/home/user1:/bin/bash
    user2:x:1001:1001:User2 Name,,,:/home/user2:/bin/bash
     ...

    如 [34;1mpasswd(5)[m 中所述，这个文件中被 [35;1m“:”[;m 分隔的每项含义如下。

[33;1m      *[;m 登录名

[33;1m      *[;m 密码形式说明

[33;1m      *[;m 数字形式的用户 ID

[33;1m      *[;m 数字形式的组 ID

[33;1m      *[;m 用户名或注释字段

[33;1m      *[;m 用户家目录

[33;1m      *[;m 可选的用户命令解释器

    [35;1m“/etc/passwd”[;m 的第二项曾经被用来保存加密后的密码。在引入了 “/etc/
    shadow” 后，该项被用来说明密码形式。

    表 4.2. [35;1m“/etc/passwd”[;m 第二项的内容

    ┌───────────────────────────────────────┐
    │ 内容 │              说明              │
    ├──────┼────────────────────────────────┤
    │（空）│无需密码的账号                  │
    ├──────┼────────────────────────────────┤
    │x     │加密后的密码保存在 [35;1m“/etc/shadow”[;m│
    ├──────┼────────────────────────────────┤
    │*     │无法登陆的账号                  │
    ├──────┼────────────────────────────────┤
    │!     │无法登陆的账号                  │
    └───────────────────────────────────────┘


    [35;1m“/etc/shadow”[;m 包含下列内容。

     ...
    user1:$1$Xop0FYH9$IfxyQwBe9b8tiyIkt2P4F/:13262:0:99999:7:::
    user2:$1$vXGZLVbS$ElyErNf/agUDsm1DehJMS/:13261:0:99999:7:::
     ...

    如 [34;1mshadow(5)[m 中所述，这个文件中被 [35;1m“:”[;m 分隔的每项含义如下。

[33;1m      *[;m 登录名

[33;1m      *[;m 加密后的密码（开头的 [35;1m“$1$”[;m 表示使用 MD5 加密。[35;1m“*”[;m 表示无法登
        陆。）

[33;1m      *[;m 最后一次修改密码的时间，其表示从 1970 年 1 月 1 日起的天数

[33;1m      *[;m 允许用户再次修改密码的天数间隔

[33;1m      *[;m 用户必须修改密码的天数间隔

[33;1m      *[;m 密码失效前的天数，在此期间用户会被警告

[33;1m      *[;m 密码失效后的天数，在次期间密码依旧会被接受

[33;1m      *[;m 账号失效的时间，其表示从 1970 年 1 月 1 日起的天数

[33;1m      *[;m …

    [35;1m“/etc/group”[;m 包含下列内容。

    group1:x:20:user1,user2

    如 [34;1mgroup(5)[m 中所述，这个文件中被 [35;1m“:”[;m 分隔的每项含义如下。

[33;1m      *[;m 组名称

[33;1m      *[;m 加密后的密码（不会被真正使用）

[33;1m      *[;m 数字形式的组 ID

[33;1m      *[;m 使用 [35;1m“,”[;m 分隔的用户名列表

    [33;1m注意[m

    [35;1m“/etc/gshadow”[;m 为 [35;1m“/etc/group”[;m 提供了与 [35;1m“/etc/shadow”[;m 相似的功能
    ，但没有被真正地使用。

    [33;1m注意[m

    如果[35;1m"auth optional pam_group.so"[;m 这行添加到了"/etc/pam.d/
    common-auth[35;1m"，并且在"[;m/etc/security/group.conf" 里进行了设置，一个
    用户的实际组就可以被动态添加。参见 [34;1mpam_group(8)[m.

    [33;1m注意[m

    base-passwd 软件包包含了一份用户和组的官方文档：“/usr/share/doc/
    base-passwd/users-and-groups.html”。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.2. 管理账号和密码信息[;m

    下面是一些管理账号信息的重要命令。

    表 4.3. 管理账号信息的命令

    ┌───────────────────────────────────────────────────────────────┐
    │          命令           │                功能                 │
    ├─────────────────────────┼─────────────────────────────────────┤
    │getent passwd <user_name>│浏览 [35;1m“<user_name>”[;m 的账号信息        │
    ├─────────────────────────┼─────────────────────────────────────┤
    │getent shadow <user_name>│浏览用户 [35;1m"<user_name>"[;m 隐藏的账户信息│
    ├─────────────────────────┼─────────────────────────────────────┤
    │getent group <group_name>│浏览 [35;1m“<group_name>”[;m 的组信息         │
    ├─────────────────────────┼─────────────────────────────────────┤
    │passwd                   │管理账号密码                         │
    ├─────────────────────────┼─────────────────────────────────────┤
    │passwd -e                │为激活的账号设置一次性的密码         │
    ├─────────────────────────┼─────────────────────────────────────┤
    │chage                    │管理密码有效期信息                   │
    └───────────────────────────────────────────────────────────────┘


    其中的一些功能只能被 root 使用。密码和数据的加密参见 [34;1mcrypt(3)[m。

    [33;1m注意[m

    在设置了 PAM 和 NSS 的系统上（例如 Debian salsa 机器），本地的 “/
    etc/passwd”、[35;1m“/etc/group”[;m 和 [35;1m“/etc/shadow”[;m 可能不会被系统激活使用
    。上述的命令即使处于这种环境下依旧是有效的。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.3. 好密码[;m

    在系统安装时建立一个账号或使用 [34;1mpasswd(1)[m 命令时，你应该选择一个好
    密码，它应该由 6 到 8 个字符组成，其中包含下列根据 [34;1mpasswd(1)[m 设定
    的每个组合中的一个或多个字符。

[33;1m      *[;m 小写字母

[33;1m      *[;m 数字 0 到 9

[33;1m      *[;m 标点符号

    [31;1m警告[m

    密码中不要使用可以猜到的词。账号名、身份证号码、电话号码、地址、
    生日、家庭成员或宠物的名字、字典单词、简单的字符序列（例如
    [35;1m“12345”[;m 或 [35;1m“qwerty”[;m）等都是糟糕的选择。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.4. 设立加密的密码[;m

    下面是一些用于生成加盐的加密密码的独立工具。

    表 4.4. 生成密码的工具

    ┌───────────────────────────────────────────────────────────────┐
    │软件包 │ 流行度  │大小│   命令    │            功能            │
    ├───────┼─────────┼────┼───────────┼────────────────────────────┤
    │whois  │V:45,    │338 │mkpasswd   │具备 [34;1mcrypt(3)[m 库所有特性的前│
    │       │I:600    │    │           │端                          │
    ├───────┼─────────┼────┼───────────┼────────────────────────────┤
    │openssl│V:806,   │1306│openssl    │计算密码哈希 (OpenSSL).     │
    │       │I:991    │    │passwd     │passwd(1ssl)                │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.5. PAM 和 NSS[;m

    现代的类 Unix 系统（例如 Debian 系统）提供 PAM （Pluggable
    Authentication Modules，插入式验证模块）和 NSS（Name Service
    Switch，名称服务切换）机制给本地系统管理员，使他们能够配置自己的
    系统。它们的功能可以概括为以下几点。

[33;1m      *[;m PAM 给应用软件提供了一个灵活的认证机制，因此涉及到了密码数据
        的交换。

[33;1m      *[;m NSS 提供了一个灵活的名称服务机制，它经常被 C 标准库使用，使例
        如 [34;1mls(1)[m 和 [34;1mid(1)[m 这样的程序获得用户和组名称。

    PAM 和 NSS 系统必须保持配置一致。

    PAM 和 NSS 系统中重要的软件包如下。

    表 4.5. PAM 和 NSS 系统中重要的软件包

    ┌───────────────────────────────────────────────────────────────┐
    │      软件包       │流行度│大小 │             说明             │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │libpam-modules     │V:810,│870  │插入式验证模块（基础服务）    │
    │                   │I:999 │     │                              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │libpam-ldap        │V:1,  │244  │允许 LDAP 接口的插入式验证模块│
    │                   │I:15  │     │                              │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │libpam-cracklib    │I:16  │114  │启用 cracklib 支持的插入式验证│
    │                   │      │     │模块                          │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │libpam-systemd     │V:412,│369  │用于 logind 注册用户会话的插入│
    │                   │I:706 │     │式验证模块（PAM）             │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │libpam-doc         │I:2   │1020 │插入式验证模块（html 和文本文 │
    │                   │      │     │档）                          │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │libc6              │V:948,│11401│GNU C 库：同样提供“名称服务切 │
    │                   │I:999 │     │换”服务的共享库               │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │glibc-doc          │I:13  │2919 │GNU C 库：帮助页面            │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │glibc-doc-reference│I:5   │13132│GNU C 库：参考手册，有 info、 │
    │                   │      │     │pdf 和 html 格式（non-free）  │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │libnss-mdns        │I:556 │119  │用于解析组播 DNS 名称的 NSS 模│
    │                   │      │     │块                            │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │libnss-ldap        │I:13  │255  │NSS 模块，用于使用 LDAP 作为一│
    │                   │      │     │个名称服务的                  │
    ├───────────────────┼──────┼─────┼──────────────────────────────┤
    │                   │      │     │NSS 模块，用于使用 LDAP 作为一│
    │libnss-ldapd       │I:20  │146  │个名称服务的（libnss-ldap 的新│
    │                   │      │     │fork）                        │
    └───────────────────────────────────────────────────────────────┘


[33;1m      *[;m libpam-doc 中 [35;1m“The Linux-PAM System Administrators' Guide”[;m 是
        了解 PAM 配置的必要文档。

[33;1m      *[;m glibc-doc-reference 中的 “System Databases and Name Service
        Switch” 是了解 NSS 配置的重要文档。

    [33;1m注意[m

    你可以使用 [35;1m“aptitude search [35;1m'libpam-|libnss-'[;m”[;m 命令查看更多的相关
    软件包。NSS 缩写也可能意味着 “Network Security Service，网络安全
    服务”，它不同于 [35;1m“Name Service Switch，名称服务切换”[;m。

    [33;1m注意[m

    PAM 是为每个程序初始化环境变量为系统默认值的最基础方法。

    在 systemd 下, libpam-systemd 软件包被安装用来管理用户登录，通过
    在 systemd 控制组层，为 logind 注册用户会话来实现。参见
    [34;1msystemd-logind(8)[m, logind.[34;1mconf(5)[m, 和 [34;1mpam_systemd(8)[m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.5.1. PAM 和 NSS 访问的配置文件[;m

    下面是一些 PAM 和 NSS 访问的重要配置文件。

    表 4.6. PAM 和 NSS 访问的配置文件

    ┌───────────────────────────────────────────────────────────────┐
    │   配置文件   │                      功能                      │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/pam.d/   │为 [35;1m“<program_name>”[;m 程序设置 PAM 配置；参加 pam │
    │<program_name>│(7) 和 pam.[34;1md(5)[m                                 │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/         │为每个服务条目设置 NSS 配置。参见 nsswitch.conf │
    │nsswitch.conf │(5)                                             │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/nologin  │通过 [34;1mpam_nologin(8)[m 模块限制用户登陆            │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/securetty│通过 [34;1mpam_securetty(8)[m 模块限制 root 访问 tty    │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/security/│通过 [34;1mpam_access(8)[m 模块设置访问限制             │
    │access.conf   │                                                │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/security/│通过 [34;1mpam_group(8)[m 模块设置基于组的限制          │
    │group.conf    │                                                │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/security/│通过 [34;1mpam_env(8)[m 模块设置环境变量                │
    │pam_env.conf  │                                                │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/         │通过带有 [35;1m“readenv=1”[;m 参数的 [34;1mpam_env(8)[m 模块设置 │
    │environment   │额外的环境变量                                  │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/default/ │通过带有 [35;1m“readenv=1 envfile=/etc/default/locale”[;m│
    │locale        │参数的 [34;1mpam_env(8)[m 模块设置语言环境值（在 Debian │
    │              │系统中）                                        │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/security/│通过 [34;1mpam_linits(8)[m 模块设置资源限制（ulimit、   │
    │limits.conf   │core 等等）                                     │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/security/│通过 [34;1mpam_time(8)[m 模块设置时间限制               │
    │time.conf     │                                                │
    ├──────────────┼────────────────────────────────────────────────┤
    │/etc/systemd/ │设置systemd 的登录管理器配置 (参见 logind.conf  │
    │logind.conf   │(5) 和 systemd-logind.[34;1mservice(8)[m)               │
    └───────────────────────────────────────────────────────────────┘


    密码选择的限制是通过 PAM 模块 [34;1mpam_unix(8)[m 和 [34;1mpam_cracklib(8)[m 来实
    现的。它们可以通过各自的参数进行配置。

    [36;1m提示[m

    PAM 模块在文件名中使用后缀 [35;1m“.so”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.5.2. 现代的集中式系统管理[;m

    现代的集中式系统管理可以使用集中式的轻量目录访问协议（LDAP）服务
    器进行部署，从而通过网络管理许多类 Unix 和非类 Unix 系统。轻量目
    录访问协议的开源实现是 OpenLDAP 软件。

    LDAP 服务器使用带有 PAM 和 NSS 的libpam-ldap 和 libnss-ldap 软件
    包为 Debian 系统提供账号信息。需要一些动作来启用 LDAP（我没有使用
    过这个设置，并且下面的信息纯粹是第二手的信息。请在这种前提下阅读
    下列内容。）。

[33;1m      *[;m 你通过运行一个程序，例如独立的 LDAP 守护进程 [34;1mslapd(8)[m，来建立
        集中式的 LDAP 服务器。

[33;1m      *[;m 你在 [35;1m“/etc/pam.d/”[;m 目录中的 PAM 配置文件里，使用
        [35;1m“pam_ldap.so”[;m 替代默认值 [35;1m“pam_unix.so”[;m。

[33;1m          +[;m Debian 使用 [35;1m“/etc/pam_ldap.conf”[;m 作为 libpam-ldap 的配置
            文件，[35;1m“/etc/pam_ldap.secret”[;m 作为保存 root 密码的文件。

[33;1m      *[;m 你在 [35;1m“/etc/nsswitch.conf”[;m 文件中改变 NSS 配置，使用 [35;1m“ldap”[;m 替
        代默认值（[35;1m“compat”[;m 或 [35;1m“file”[;m）。

[33;1m          +[;m Debian 使用 [35;1m“/etc/libnss-ldap.conf”[;m 作为 libnss-ldap 的配
            置文件。

[33;1m      *[;m 为了密码的安全，你必须让 libpam-ldap 使用 SLL（或 TLS）连接。

[33;1m      *[;m 为了确保 LDAP 网络开销数据的完整性，你必须让 libpam-ldap 使用
        SLL（或 TLS）连接。

[33;1m      *[;m 为了减少 LDAP 网络流量，你应该在本地运行 [34;1mnscd(8)[m 来缓存任何
        LDAP 搜索结果。

    参见由 libpam-doc 软件包提供的 pam_ldap.[34;1mconf(5)[m 中的文档和 “/usr/
    share/doc/libpam-doc/html/”，以及 glibc-doc 软件包提供的 “info
    libc [35;1m'Name Service Switch'[;m”。

    类似地，你可以使用其它方法来设置另一种集中式的系统。

[33;1m      *[;m 同 Windows 系统集成用户和组。

[33;1m          +[;m 通过 winbind 和 libpam_winbind 软件包访问 Windows domain
            服务.

[33;1m          +[;m 参见 [34;1mwinbindd(8)[m 和 Integrating MS Windows Networks with
            Samba。

[33;1m      *[;m 同古老的类 Unix 系统集成用户和组。

[33;1m          +[;m 通过 nis 软件包访问 NIS (之前叫 YP) 或 NIS+。

[33;1m          +[;m 参见 The Linux NIS(YP)/NYS/NIS+ HOWTO。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.5.3. “为什么 GNU su 不支持 wheel 组”[;m

    这是在旧的 [35;1m“info su”[;m 底部 Richard M. Stallman 所说的一句名言。别
    担心：Debian 系统中当前的 su 命令使用了 PAM，这样当在 “/etc/pam.d
    /su” 中启用了带有 [35;1m“pam_wheel.so”[;m 的行后，就能够限制非 wheel 组的
    用户 su 到 root 组的能力。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.5.4. 严格的密码规则[;m

    安装 libpam-cracklib 软件包你能够强制使用严格的密码规则，例如，通
    过在 [35;1m“/etc/pam.d/common-password”[;m 中添加下列行。

    对于 squeeze 发行版：

    password required pam_cracklib.so retry=3 minlen=9 difok=3
    password [success=1 default=ignore] pam_unix.so use_authtok nullok md5
    password requisite pam_deny.so
    password required pam_permit.so

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.6. 其它的访问控制[;m

    [33;1m注意[m

    参见第 9.3.15 节 [35;1m“Alt-SysRq 键”[;m 来限制内核的安全警告密钥（SAK）功
    能。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.6.1. sudo[;m

    [34;1msudo(8)[m 程序是为了使一个系统管理员可以给用户受限的 root 权限并记
    录 root 活动而设计的。sudo 只需要一个普通用户的密码。安装 sudo 软
    件包并通过设置 [35;1m“/etc/sudoers”[;m 中的选项来使用它。参见 “/usr/share/
    doc/sudo/examples/sudoers” 和第 1.1.12 节 [35;1m“sudo 配置”[;m 中的配置示
    例。

    我将 sudo 用于单用户系统（参见第 1.1.12 节 [35;1m“sudo 配置”[;m）是为了防
    止自己可能做出的愚蠢行为。就我个人而言，我认为使用 sudo 会比使用
    root 账号操作系统来得好。例如，下列命令将 [35;1m“<some_file>”[;m 的拥有者
    改变为 [35;1m“<my_name>”[;m。

[32;1m    $ sudo chown <my_name> <some_file>[;m

    当然如果你知道 root 密码（比如自行安装 Debian 的用户所做的），任
    何用户账号都可以使用 [35;1m“su -c”[;m 让任何命令以 root 运行。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.6.2. PolicyKit[;m

    PolicyKit 是在类 Unix 操作系统中控制整个系统权限的一个操作系统组
    件。

    新的 GUI 图形界面程序，在设计的时候，不是作为特权进程来运行。它们
    通过 PolicyKit 来和特权进程通讯，执行管理操作。

    在 Debian 系统中，PolicyKit 限制了属于 sudo 组的用户账号的这种操
    作。

    参见 [34;1mpolkit(8)[m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.6.3. SELinux[;m

    Security-Enhanced Linux (SELinux) 是一个收紧权限模块的框架，它比
    普通的类 Unix 安全模块 mandatory access control (MAC) 策略更严格
    。 root 权限在某些条件下被限制。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.6.4. 限制访问某些服务端的服务[;m

    对系统安全而言，尽可能的禁用服务程序，是一个好的主意。网络服务是
    危险的。有不使用的服务，不管是直接由后台守护进程（daemon）激活，
    还是通过super-server 程序激活，都被认为是安全风险。

    许多程序,比如说 [34;1msshd(8)[m, 使用基于 PAM 的访问控制。也还有许多方式
    来限制访问一些服务端的程序。

[33;1m      *[;m 配置文件: [35;1m"/etc/default/<program_name>"[;m

[33;1m      *[;m 后台守护进程（daemon）的服务单元配置

[33;1m      *[;m PAM (Pluggable Authentication Modules)

[33;1m      *[;m super-server 使用 [35;1m"/etc/inetd.conf"[;m

[33;1m      *[;m TCP wrapper 使用 [35;1m"/etc/hosts.deny"[;m 和 [35;1m"/etc/hosts.allow"[;m ,
        [34;1mtcpd(8)[m

[33;1m      *[;m Sun RPC[35;1m" 使用 /etc/rpc.conf"[;m

[33;1m      *[;m [34;1matd(8)[m 使用 [35;1m"/etc/at.allow"[;m 和 [35;1m"/etc/at.deny"[;m

[33;1m      *[;m [34;1mcrontab(1)[m 使用 [35;1m"/etc/cron.allow"[;m 和 [35;1m"/etc/cron.deny"[;m

[33;1m      *[;m Network firewall 或netfilter 框架

    参见第 3.2.6 节 [35;1m“systemd 下的系统管理”[;m, 第 4.5.1 节 “PAM 和 NSS
    访问的配置文件”, 和第 5.10 节 [35;1m“Netfilter 网络过滤框架”[;m.

    [36;1m提示[m

    NFS 和其它基于 RPC 的程序，需要激活 Sun RPC 服务。

    [36;1m提示[m

    如果你远程访问最新的 Debian 系统有问题，看下在[35;1m"/etc/hosts.deny"[;m里
    是否存在[35;1m"ALL: PARANOID"[;m这样讨厌的配置，请把它注释掉。(但是你必须
    [33;1m注意[m这种行为所带来的安全风险。)

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.7. 安全认证[;m

    [33;1m注意[m

    这里的信息也许不够完全满足你的安全需求，但这也是一个好的开始.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.7.1. 互联网密码安全[;m

    许多流行的传输层服务，交互信息使用纯文本的密码认证。这是非常差的
    方式，通过公共的互联网传输纯文本密码，密码能够被截获到。你能够运
    行这些服务，使用 [35;1m"Transport Layer Security"[;m (TLS) 或它的前身,
    [35;1m"Secure Sockets Layer"[;m (SSL) ，通过加密来使包括密码在内的整个通讯
    更加安全。

    表 4.7. 安全和不安全的服务端口列表

    ┌──────────────────────────────────────┐
    │不安全的服务名│端口│安全的服务名 │端口│
    ├──────────────┼────┼─────────────┼────┤
    │www (http)    │80  │https        │443 │
    ├──────────────┼────┼─────────────┼────┤
    │smtp (邮件)   │25  │ssmtp (smtps)│465 │
    ├──────────────┼────┼─────────────┼────┤
    │ftp-data      │20  │ftps-data    │989 │
    ├──────────────┼────┼─────────────┼────┤
    │ftp           │21  │ftps         │990 │
    ├──────────────┼────┼─────────────┼────┤
    │telnet        │23  │telnets      │992 │
    ├──────────────┼────┼─────────────┼────┤
    │imap2         │143 │imaps        │993 │
    ├──────────────┼────┼─────────────┼────┤
    │pop3          │110 │pop3s        │995 │
    ├──────────────┼────┼─────────────┼────┤
    │ldap          │389 │ldaps        │636 │
    └──────────────────────────────────────┘


    加密消耗 CPU 时间。作为对 CPU 有益的替代方案，你可以保持使用纯文
    本通讯，仅仅使用安全认证协议加密密码，比如说：POP 使用
    [35;1m"Authenticated Post Office Protocol"[;m (APOP)，SMTP 和 IMAP 使用
    [35;1m"Challenge-Response Authentication Mechanism MD5"[;m (CRAM-MD5)。（
    你的邮件客户端通过互联网上你的邮件服务器发送邮件时，最近流行使用
    新的递交端口 587 来代替传统的 SMTP 端口 25，这样可以避免在使用
    CRAM-MD5 认证自己时，网络提供商阻塞 25 端口。）

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.7.2. 安全 Shell[;m

    安全 Shell (SSH) 程序使用安全认证来提供不安全网络上两个不可信任主
    机之间的安全加密通讯。它由 OpenSSH 客户端, [34;1mssh(1)[m, 和 OpenSSH 后
    台守护进程（daemon）, [34;1msshd(8)[m组成.SSH 使用端口转发特性，可以给
    POP 和 X 之类的不安全的协议通讯建立隧道，使其可以在互联网上安全传
    输。

    客户端可以使用如下方式来认证自己：基于主机的认证、公钥认证、质疑
    应答认证、密码认证。使用公钥认证，可以实现远程免密码登录。参见第
     6.9 节 [35;1m“服务器远程访问和工具 (SSH)”[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.7.3. 互联网额外的安全方式[;m

    即使你运行 Secure Shell (SSH) 和 Point-to-point tunneling
    protocol (PPTP) 这样的安全服务，在互联网上，仍然有机会使用野蛮暴
    力猜测密码攻击进入。使用防火墙策略 (参见第 5.10 节 “Netfilter 网
    络过滤框架”)，并和下面的安全工具一起，可以提升安全形势。

    表 4.8. 提供额外安全方式的工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │   软件包    │流行度 │大小│                说明                │
    ├─────────────┼───────┼────┼────────────────────────────────────┤
    │knockd       │V:0,   │89  │小的 port-knock 后台守护进程（daemon│
    │             │I:2    │    │） [34;1mknockd(1)[m 和客户端 [34;1mkonck(1)[m      │
    ├─────────────┼───────┼────┼────────────────────────────────────┤
    │fail2ban     │V:102, │1735│禁用造成多个认证错误的 IP           │
    │             │I:113  │    │                                    │
    ├─────────────┼───────┼────┼────────────────────────────────────┤
    │libpam-shield│V:0,   │107 │把尝试猜测密码的远程攻击者关在外面  │
    │             │I:0    │    │                                    │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m4.7.4. root 密码安全[;m

    为阻止人们使用 root 权限访问你的机器，你需要做下面的操作。

[33;1m      *[;m 阻止对硬盘的物理访问

[33;1m      *[;m 锁住 BIOS 来阻止从可移动介质启动

[33;1m      *[;m 为 GRUB 交互式会话设置密码

[33;1m      *[;m 锁住 GRUB 菜单，禁止编辑

    如果可以物理访问硬盘，则可以使用下面的步骤，相对简单的重置密码。

     1. 将硬盘拿到一个可以设置 BIOS 从CD 启动的电脑。

     2. 使用紧急介质启动系统（Debian 启动磁盘, Knoppix CD, GRUB CD, …
        ）。

     3. 用读写访问挂载根分区。

     4. 编辑根分区的[35;1m"/etc/passwd"[;m文件，使 root 账户条目的第二段为空。

    对于 grub-rescue-pc ，即使用紧急介质启动的电脑，如果有编辑 GRUB
    菜单条目 (参见第 3.1.2 节 [35;1m“第二阶段：引载加载程序”[;m) 的权限，在启
    动时，使用下面的步骤更加简单。

     1. 使用内核参数启动系统来修改一些事情，比如说，"root=/dev/hda6
        rw init=/bin/sh".

     2. 编辑 [35;1m"/etc/passwd"[;m 文件，使 root 账户条目的第二段为空。

     3. 重启系统。

    系统的 root shell 现在可以无密码访问了。

    [33;1m注意[m

    一旦某人拥有 root shell 访问权限，他能够访问任何内容，并可以重设
    系统上的任何密码。此外，他可以使用 john 和 crack 等软件包的暴力破
    解工具来比较所有用户的密码 (参见第 9.4.11 节 “系统安全性和完整性
    检查”)。被破解的密码，可以用来和其它系统进行比较。

    为避免这些相关问题，仅有的理论上的软件解决方案是使用 dm-crypt 和
    initramfs (参见第 9.8 节 [35;1m“数据加密提示”[;m)加密 root 分区(或 [35;1m"/etc"[;m
    分区) 。这样的话，你总是需要密码来启动系统。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 5 章 网络设置[;m

    [36;1m提示[m

    关于GNU/Linux网络的通用手册，请查看Linux 网络管理员手册。

    [36;1m提示[m

    关于Debian专属的网络手册，请查看Debian管理员手册—网络配置。

    [31;1m警告[m

    为代替使用传统的网络接口名称的方案 ([35;1m"eth0"[;m, [35;1m"eth1"[;m, [35;1m"wlan0"[;m, …),
    新的 systemd 使用[35;1m"enp0s25"[;m 之类的 [35;1m"可预测网络接口名称"[;m.

    [31;1m警告[m

    本章是基于 2013 年发布的 Debian 7.0 (Wheezy) 编写的，所以其内容正
    在变得过时。

    [36;1m提示[m

    尽管本手册仍用旧的 [34;1mifconfig(8)[m 命令和IPv4协议当作网络配置的例子，
    Debian在 wheezy [34;1m发行版后转向使用ip(8)[m命令和 IPv4+IPv6 协议。欢迎
    大家提供补丁，更新这个手册。

    [36;1m提示[m

    systemd环境下，可以用networkd来配置网络。请参考systemd-networkd
    (8)。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.1. 基本网络架构[;m

    让我们来回顾一下现代Debian操作系统中的基本网络架构。

    表 5.1. 网络配置工具一览表

    ┌───────────────────────────────────────────────────────────────┐
    │       软件包        │流行度│大小 │  类型   │       说明       │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:588,│     │配置：： │用来启动/关闭网络 │
    │ifupdown             │I:995 │206  │ifupdown │的标准工具（Debian│
    │                     │      │     │         │特有）            │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │ifplugd              │V:4,  │209  │同上     │自动管理有线网络  │
    │                     │I:21  │     │         │                  │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:0,  │     │         │网络测试脚本，加强│
    │ifupdown-extra       │I:1   │100  │同上     │[35;1m"ifupdown"[;m软件包的│
    │                     │      │     │         │功能              │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │ifmetric             │V:0,  │36   │同上     │设置网络接口的路由│
    │                     │I:1   │     │         │度量              │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │      │     │         │脚本文件，利用"/  │
    │                     │V:0,  │     │         │etc/network/      │
    │guessnet             │I:0   │422  │同上     │interfaces"文件来 │
    │                     │      │     │         │加强[35;1m"ifupdown"[;m的功│
    │                     │      │     │         │能                │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:0,  │     │         │映射脚本文件，增强│
    │ifscheme             │I:0   │58   │同上     │[35;1m"ifupdown"[;m软件包的│
    │                     │      │     │         │功能              │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:376,│     │配置：： │NetworkManager（守│
    │network-manager      │I:468 │10910│NM       │卫进程）：自动管理│
    │                     │      │     │         │网络              │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │network-manager-gnome│V:172,│5811 │同上     │NetworkManager（  │
    │                     │I:406 │     │         │GNOME前端）       │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │wicd                 │I:33  │35   │配置：： │有线和无线网络管理│
    │                     │      │     │wicd     │器（元软件包）    │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │wicd-cli             │V:0,  │59   │同上     │有线和无线网络管理│
    │                     │I:2   │     │         │器（命令行客户端）│
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:1,  │     │         │有线和无线网络管理│
    │wicd-curses          │I:4   │175  │同上     │器（文本界面客户端│
    │                     │      │     │         │）                │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │wicd-daemon          │V:28, │962  │同上     │有线和无线网络管理│
    │                     │I:36  │     │         │器（守护进程）    │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │wicd-gtk             │V:22, │574  │同上     │有线和无线网络管理│
    │                     │I:34  │     │         │器（GTK+客户端）  │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:264,│     │配置：： │封包过滤和网络地址│
    │iptables             │I:995 │1543 │Netfilter│转换管理工具（    │
    │                     │      │     │         │Netfilter）       │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:623,│     │配置：： │iproute2, IPv6和其│
    │iproute2             │I:834 │2124 │iproute2 │他高级网络配置：ip│
    │                     │      │     │         │(8),[34;1mtc(8)[m等等     │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:1,  │     │         │根据不同的静态标准│
    │ifrename             │I:2   │122  │同上     │来重命名网络接口：│
    │                     │      │     │         │[34;1mifrename(8)[m       │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │ethtool              │V:112,│384  │同上     │显示或更改以太网设│
    │                     │I:266 │     │         │备的设定          │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:252,│     │测试：： │测试能否连接远程主│
    │iputils-ping         │I:996 │100  │iproute2 │机，通过主机名或IP│
    │                     │      │     │         │地址（iproute2）  │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │iputils-arping       │V:34, │51   │同上     │测试能否连接远程主│
    │                     │I:433 │     │         │机，通过ARP地址   │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │iputils-tracepath    │V:6,  │68   │同上     │跟踪访问远程主机的│
    │                     │I:132 │     │         │路径              │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │      │     │         │NET-3网络工具箱（ │
    │net-tools            │V:325,│932  │配置：： │net-tools，IPv4网 │
    │                     │I:798 │     │net-tools│络配置）：ifconfig│
    │                     │      │     │         │(8)等等。         │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │      │     │         │测试能否连接远程主│
    │inetutils-ping       │V:0,  │337  │测试：： │机，通过hostname或│
    │                     │I:1   │     │net-tools│IP 地址（传统方式 │
    │                     │      │     │         │，GNU）           │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:1,  │     │         │测试能否连接远程主│
    │arping               │I:28  │73   │同上     │机，通过ARP地址（ │
    │                     │      │     │         │传统方法）        │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:62, │     │         │跟踪连接远程主机的│
    │traceroute           │I:970 │154  │同上     │路径（传统方法，控│
    │                     │      │     │         │制台）            │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │isc-dhcp-client      │V:275,│649  │配置：： │DHCP客户端        │
    │                     │I:970 │     │底层     │                  │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │wpasupplicant        │V:302,│2669 │同上     │WPA和WPA2客户端支 │
    │                     │I:536 │     │         │持（IEEE 802.11i) │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │wpagui               │V:0,  │762  │同上     │wpa_supplicant Qt │
    │                     │I:3   │     │         │图形界面客户端    │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │wireless-tools       │V:179,│286  │同上     │操控Linux无线扩展 │
    │                     │I:274 │     │         │的工具            │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │ppp                  │V:173,│940  │同上     │使用chat连接PPP/  │
    │                     │I:509 │     │         │PPPoE             │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │pppoeconf            │V:0,  │290  │配置：： │配置助手，以便于使│
    │                     │I:10  │     │辅助     │用PPPoE连接       │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │pppconfig            │V:1,  │805  │同上     │配置助手，以便于使│
    │                     │I:3   │     │         │用chat连接PPP     │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:0,  │     │         │配置助手，以便于使│
    │wvdial               │I:7   │276  │同上     │用wvdial和ppp连接 │
    │                     │      │     │         │PPP               │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │mtr-tiny             │V:6,  │141  │测试：： │追踪连接远程主机的│
    │                     │I:57  │     │底层     │路径（文本界面）  │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │V:5,  │     │         │追踪连接远程主机的│
    │mtr                  │I:43  │191  │同上     │路径（文本界面和  │
    │                     │      │     │         │GTK+界面）        │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │gnome-nettool        │V:4,  │2101 │同上     │获取常见网络信息的│
    │                     │I:121 │     │         │工具（GNOME)      │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │nmap                 │V:37, │4530 │同上     │网络映射/端口扫描 │
    │                     │I:320 │     │         │（Nmap，控制台）  │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │zenmap               │V:4,  │2936 │同上     │网络映射/端口扫描 │
    │                     │I:13  │     │         │（GTK+）          │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │tcpdump              │V:20, │1192 │同上     │网络流量分析（    │
    │                     │I:204 │     │         │Tcpdump，控制台） │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │wireshark            │I:63  │70   │同上     │网络流量分析（    │
    │                     │      │     │         │Wireshark,GTK+）  │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │tshark               │V:3,  │395  │同上     │网络流量分析(控制 │
    │                     │I:38  │     │         │台）              │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │tcptrace             │V:0,  │392  │同上     │根据tcpdump的输出 │
    │                     │I:1   │     │         │生成的连接数据统计│
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │snort                │V:1,  │1920 │同上     │灵活的网络入侵侦测│
    │                     │I:1   │     │         │系统（Snort）     │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │ntopng               │V:1,  │1343 │同上     │在网页浏览器中展示│
    │                     │I:2   │     │         │网络流量          │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │                     │      │     │         │BIND软件包提供的网│
    │dnsutils             │V:70, │673  │同上     │络客户端程序：    │
    │                     │I:683 │     │         │[34;1mnslookup(8)[m,      │
    │                     │      │     │         │[34;1mnsupdate(8)[m,[34;1mdig(8)[m│
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │dlint                │V:0,  │96   │同上     │利用域名服务器查询│
    │                     │I:14  │     │         │来查看DNS域信息   │
    ├─────────────────────┼──────┼─────┼─────────┼──────────────────┤
    │dnstracer            │V:0,  │56   │同上     │跟踪DNS查询直至源 │
    │                     │I:2   │     │         │头                │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.1.1. 主机名解析[;m

    主机名解析，目前也是由 NSS (名字服务转换 Name Service Switch) 机
    制来支持。这个解析的流程如下。

     1. [35;1m"/etc/nsswitch.conf"[;m 文件里的 [35;1m"hosts: files dns"[;m 这段规定主机
        名解析顺序。 (代替 [35;1m"/etc/host.conf"[;m 文件里的[35;1m"order"[;m 这段原有
        的功能。)

     2. files 方式首先被调用。如果主机名在 [35;1m"/etc/hosts"[;m 文件里面发现
        ，则返回所有有效地址并退出。 ( [35;1m"/etc/host.conf"[;m 文件包含
        [35;1m"multi on"[;m.)

     3. dns 方式被调用。如果主机名通过查询 [35;1m"/etc/resolv.conf"[;m 文件里
        面写的互联网域名系统 Domain Name System (DNS) 来找到，则返回
        所有有效地址并退出。

    例如, [35;1m"/etc/hosts"[;m 看起来如下。

    127.0.0.1 localhost
    127.0.1.1 <host_name>

[31;1m    # The following lines are desirable for IPv6 capable hosts[;m
    ::1     ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    ff02::3 ip6-allhosts

    每一行由 IP 地址开始，接下来是相关联的主机名.

    在这个例子的第二行 127.0.1.1 IP 地址也许不会在其它类 Unix 系统发
    现。Debian Installer 为没有永久 IP 地址的系统创建这个条目，作为某
    些软件（如 GNOME）的一个变通方法，见文档 bug #719621.

    <host_name> 匹配在[35;1m"/etc/hostname"[;m里定义的主机名。

    对于有永久 IP 地址的系统，这个永久 IP 地址应当代替这里的
    127.0.1.1。

    对于有永久 IP 地址和有域名系统 Domain Name System (DNS)提供完全资
    格域名 fully qualified domain name (FQDN) 的系统，规范名
    <host_name>.<domain_name> 应当被用来代替 <host_name>.

    如果 resolvconf 软件包没有安装，[35;1m"/etc/resolv.conf"[;m 是一个静态文件
    。如果安装了，它是一个符号链接。此外，它包含有解析策略的初始化信
    息。如 DNS 是 IP=[35;1m"192.168.11.1"[;m,则包含如下。

    nameserver 192.168.11.1

    resolvconf 软件包使这个 [35;1m"/etc/resolv.conf"[;m 文件成为一个符号链接，
    并通过钩子脚本自动管理其内容。

    对于典型 adhoc 局域网环境下的 PC 工作站，除了基本的 files 和 dns
    方式之外，主机名还能够通过组播 DNS (mDNS, 零配置网络 Zeroconf)进
    行解析。

[33;1m      *[;m Avahi 提供 Debian 下的组播 DNS 发现框架。

[33;1m      *[;m 它和 Apple Bonjour / Apple Rendezvous 相当.

[33;1m      *[;m libnss-mdns 插件包提供 mDNS 的主机名解析，GNU C 库 (glibc)的
        GNU 名字服务转换 Name Service Switch (NSS) 功能支持 mDNS。

[33;1m      *[;m [35;1m"/etc/nsswitch.conf"[;m 文件应当有像 "hosts: files mdns4_minimal
        [NOTFOUND=return] dns mdns4" 这样的一段.

[33;1m      *[;m [35;1m".local"[;m结尾的主机名，使用 pseudo-top-level domain (TLD) 来解
        析.

[33;1m      *[;m mDNS IPv4 本地连接组播地址 [35;1m"224.0.0.251"[;m 或它相应的 IPv6 地址
        [35;1m"FF02::FB"[;m 被用来作为 [35;1m".local"[;m 结尾名字的 DNS 查询。

    较老的 Windows 系统安装 winbind 软件包来提供旧的 NETBios over TCP
    /IP 主机名解析。为启用这个功能，[35;1m"/etc/nsswitch.conf"[;m 文件应当有这
    样的一段： "hosts: files mdns4_minimal [NOTFOUND=return] dns
    mdns4 wins"。 (现代 Windows 系统通常使用 dns 方式来进行主机名解析
    。)

    [33;1m注意[m

    域名系统 Domain Name System 中的扩展通用顶级域名 expansion of
    generic Top-Level Domains (gTLD) 还在进行中。在局域网内，选择一个
    域名时，请提防名字冲突 name collision。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.1.2. 网络接口名称[;m

    网络接口名称，比如说 eth0, 是在 Linux 内核里分配给每一个硬件的，
    当这个硬件被内核发现的时候，通过用户层的配置机制udev (参见第 3.3
    节 [35;1m“udev 系统”[;m)来分配.网卡接口名称也就是 [34;1mifup(8)[m 和 [34;1minterfaces(5)[m
    里的 physical interface。

    为了保证每个网络接口名称在每次重启后一致，会用到 MAC 地址等,有一
    个规则文件[35;1m"/etc/udev/rules.d/70-persistent-net.rules"[;m. 这个文件是
    由[35;1m"/lib/udev/write_net_rules"[;m 程序自动生成，是由
    [35;1m"persistent-net-generator.rules"[;m 规则文件来运行. 你可以修改该文件
    来改变命名规则。

    [33;1m小心[m

    当编辑 [35;1m"/etc/udev/rules.d/70-persistent-net.rules"[;m 规则文件时，你
    必须保持每条规则在单独的一行中，并且 MAC 地址要小写。比如说，如果
    你发现[35;1m"FireWire device"[;m 和[35;1m"PCI device"[;m 在这个文件中，你也许想命名
    [35;1m"PCI device"[;m 作为 eth0，并配置它为首要网络接口。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.1.3. 局域网网络地址范围[;m

    让我们重新提醒下在 rfc1918 里规定的局域网 local area networks
    (LANs)IPv4 32 位地址在各类地址的保留范围. 这些地址保证不会与因特
    网上专有的地址冲突。

    表 5.2. 网络地址范围列表

    ┌───────────────────────────────────────────────────────────────┐
    │类 │        网络地址        │  子网掩码   │子网掩码/位 │# 子网 │
    │别 │                        │             │     数     │  数   │
    ├───┼────────────────────────┼─────────────┼────────────┼───────┤
    │A  │10.x.x.x                │255.0.0.0    │/8          │1      │
    ├───┼────────────────────────┼─────────────┼────────────┼───────┤
    │B  │172.16.x.x — 172.31.x.x │255.255.0.0  │/16         │16     │
    ├───┼────────────────────────┼─────────────┼────────────┼───────┤
    │C  │192.168.0.x —           │255.255.255.0│/24         │256    │
    │   │192.168.255.x           │             │            │       │
    └───────────────────────────────────────────────────────────────┘


    [33;1m注意[m

    如果这些地址分配到一个主机，那么这个主机一定不能够直接访问互联网
    ，必须通过一个作为网关的代理服务或通过网络地址转换 Network
    Address Translation (NAT). 消费局域网环境，宽带路由器通常使用 NAT
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.1.4. 网络设备支持[;m

    尽管 Debian 系统支持大多数硬件设备，但依旧有一些网络设备需要 DFSG
    non-free 固件来支持它们。参见第 9.9.6 节 [35;1m“硬件驱动和固件”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.2. 现代的桌面网络配置[;m

    对于使用 systemd 的现代 Debian 桌面系统，网络接口通常由两个服务进
    行初始化：lo 接口通常在[35;1m“networking.service”[;m处理，而其它接口则由
    [35;1m“NetworkManager.service”[;m处理。

    Debian squeeze 和新的发行版都可以通过后台守护进程（daemon）管理软
    件来管理网络连接，例如 NetworkManager (NM)（network-manager 和相
    关软件包）或 Wicd（wicd 和相关软件包）。

[33;1m      *[;m 它们有自己的 GUI 和命令行程序来作为用户界面。

[33;1m      *[;m 它们有自己的后台守护进程（daemon）作为它们的系统后端。

[33;1m      *[;m 它们使你可以简单地将系统连接到网络。

[33;1m      *[;m 它们使你可以简单地管理有线和无线网络的配置。

[33;1m      *[;m 它们允许你配置网络而不依赖传统的 ifupdown 软件包。

    [33;1m注意[m

    不要在服务器上使用这些自动网络配置工具。它们主要针对于笔记本电脑
    上的移动桌面用户。

    这些现代的网络配置工具需要进行适当的配置，以避免与传统 ifupdown
    软件包发生冲突，它的配置文件位于 [35;1m“/etc/network/interfaces”[;m。

    [33;1m注意[m

    这些自动网络配置工具的一些功能可能会带来令人烦扰的问题。它们不像
    传统的 ifupdown 软件包那样健壮。检查 network-manager 的 BTS 和
    wicd 的 BTS，来查看当前的问题和限制。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.2.1. 图形界面的网络配置工具[;m

    Debian 系统 NM 和 Wicd 的官方文档分别位于 “/usr/share/doc/
    network-manager/README.Debian” 和 “/usr/share/doc/wicd/
    README.Debian”。

    本质上，如下操作即可完成桌面的网络配置。

     1. 通过下列命令使桌面用户 foo 归属 [35;1m“netdev”[;m 组（另外，例如 GNOME
        和 KDE 这样的现代桌面环境会通过 D-bus 自动完成该操作）。

[32;1m        $ sudo adduser foo netdev[;m

     2. 使 [35;1m“/etc/network/interfaces”[;m 的配置保持下面那样简洁。

        auto lo
        iface lo inet loopback

     3. 通过下列命令重新启动 NM 或 Wicd。

[32;1m        $ sudo /etc/init.d/network-manager restart[;m

[32;1m        $ sudo /etc/init.d/wicd restart[;m

     4. 通过图形界面配置网络。

    [33;1m注意[m

    只有不列在 [35;1m“/etc/network/interfaces”[;m 中的接口会被 NM 或 Wicd 管理
    ，以避免与 ifupdown 的冲突。

    [36;1m提示[m

    如果你想扩展 NM 的网络配置功能，请寻找适当的插件模块和补充软件包
    ，例如 network-manager-openconnect、
    network-manager-openvpn-gnome、network-manager-pptp-gnome、
    mobile-broadband-provider-info、gnome-bluetooth 等等。这同样适用
    于 Wicd。

    [33;1m小心[m

    这些自动网络配置工具可能无法兼容 [35;1m“/etc/network/interfaces”[;m 中传统
    的 ifupdown 的深奥配置，例如第 5.6 节 “使用 ifupdown 进行基本网络
    配置（旧）” 和第 5.7 节 [35;1m“使用 ifupdown 的高级网络配置（旧）”[;m 中的
    那些配置。检查 network-manager 的 BTS 和 wicd 的 BTS 来查看当前的
    问题和限制。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.3. 没有图像界面的现代网络配置[;m

    使用 systemd 的系统中，可以在 /etc/systemd/network/ 里配置网络。
    参见 [34;1msystemd-resolved(8)[m、resolved.[34;1mconf(5)[m 和 [34;1msystemd-networkd(8)[m
    。

    这个允许在没有图像界面的情况下配置现代网络。

    DHCP 客户端的配置可以通过创建 [35;1m"/etc/systemd/network/dhcp.network"[;m
    文件来进行设置。例如：

    [Match]
    Name=en*

    [Network]
    DHCP=yes

    一个静态网络配置能够通过创建 "/etc/systemd/network/
    static.network" 来设置.比如：

    [Match]
    Name=en*

    [Network]
    Address=192.168.0.15/24
    Gateway=192.168.0.1

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.4. 传统的网络连接和配置[;m

    如果第 5.2 节 [35;1m“现代的桌面网络配置”[;m 中描述的方法无法满足你的需要，
    那你应该使用结合了许多普通工具的传统网络连接和配置方法。

    传统网络连接的每个方法都是特定的（参见第 5.5 节 “网络连接方式（传
    统）”）。

    用于 Linux 底层网络配置的程序有两种类型（参见第 5.8.1 节
    [35;1m“Iproute2 命令”[;m）。

[33;1m      *[;m 来自 Linux NET-3 网络系统的旧 net-tools 程序（[34;1mifconfig(8)[m……）
        。它们中的大多数都已经过时了。

[33;1m      *[;m 来自现在的 Linux 网络系统的新 Linux iproute2 程序（[34;1mip(8)[m……）
        。

    尽管底层程序十分强大，但它们使用繁琐。因此创建了高层网络配置系统
    。

    ifupdown 软件包是 Debian 中这种高层网络配置系统的实际标准。它让你
    可以简单地通过例如 [35;1m“ifup eth0”[;m 这样的命令来打开网络。它的配置文件
    位于 [35;1m“/etc/network/interfaces”[;m 中并且其典型内容如下。

    auto lo
    iface lo inet loopback

    auto eth0
    iface eth0 inet dhcp

    resolvconf 软件包是为了使 ifupdown 系统支持自动重写解析器配置文件
    [35;1m“/etc/resolv.conf”[;m 来使网络地址解析平滑地重新配置。现在，大多数
    Debian 网络配置软件包都使用了 resolvconf 软件包（参见 “/usr/share
    /doc/resolvconf/README.Debian”）。

    ifupdown 软件包的辅助脚本，例如 ifplugd、guessnet、ifscheme等，是
    为了进行网络环境的自动动态配置，例如位于有线局域网中的移动电脑。
    这些相对来说比较难使用，但在当前的 ifupdown 系统下工作良好。

    详细的案例参见第 5.6 节 [35;1m“使用 ifupdown 进行基本网络配置（旧）”[;m 和
    第 5.7 节 [35;1m“使用 ifupdown 的高级网络配置（旧）”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.5. 网络连接方式（传统）[;m

    [33;1m小心[m

    在这节描述的连接测试方式仅仅用于测试目的。不应当直接用于日常的网
    络连接。建议你使用 NM, Wicd, 或 ifupdown 包代替。(参见第 5.2 节 “
    现代的桌面网络配置” 和第 5.6 节 “使用 ifupdown 进行基本网络配置（
    旧）”).

    一台电脑典型的网络连接方式和连接路径，能够使用下面的内容概述。

    表 5.3. 网络连接方式和连接路径列表

    ┌───────────────────────────────────────────────────────────────┐
    │    PC    │  连接方式  │               连接路径                │
    ├──────────┼────────────┼───────────────────────────────────────┤
    │串口      │PPP         │⇔ modem ⇔ POTS ⇔ 拨号接入点 ⇔ ISP      │
    │(ppp0)    │            │                                       │
    ├──────────┼────────────┼───────────────────────────────────────┤
    │以太网口  │PPPoE/DHCP/ │⇔ 宽带-modem ⇔ 宽带链路 ⇔ 宽带接入点 ⇔ │
    │(eth0)    │Static      │ISP                                    │
    ├──────────┼────────────┼───────────────────────────────────────┤
    │以太网口  │DHCP/Static │⇔ LAN ⇔ 网络地址转换 (NAT) 的宽带路由器│
    │(eth0)    │            │(⇔ 宽带-modem …)                       │
    └───────────────────────────────────────────────────────────────┘


    每种连接方式配置脚本汇总。

    表 5.4. 网络连接配置列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 连接方式  │            配置             │       后端包        │
    ├───────────┼─────────────────────────────┼─────────────────────┤
    │PPP        │pppconfig 创建固定的 chat    │pppconfig, ppp       │
    ├───────────┼─────────────────────────────┼─────────────────────┤
    │PPP (选用) │wvdialconf 创建启发式的 chat │ppp, wvdial          │
    ├───────────┼─────────────────────────────┼─────────────────────┤
    │PPPoE      │pppoeconf 创建固定的 chat    │pppoeconf, ppp       │
    ├───────────┼─────────────────────────────┼─────────────────────┤
    │DHCP       │在 [35;1m"/etc/dhcp/dhclient.conf"[;m │isc-dhcp-client      │
    │           │里描述                       │                     │
    ├───────────┼─────────────────────────────┼─────────────────────┤
    │静态 IP    │在 [35;1m"/etc/network/interfaces"[;m │iproute 或 net-tools │
    │(IPv4)     │里描述                       │(旧)                 │
    ├───────────┼─────────────────────────────┼─────────────────────┤
    │静态 IP    │在 [35;1m"/etc/network/interfaces"[;m │iproute              │
    │(IPv6)     │里描述                       │                     │
    └───────────────────────────────────────────────────────────────┘


    网络连接缩略语意义如下。

    表 5.5. 网络连接缩略语列表

    ┌───────────────────────────────────────────────────────────────┐
    │  缩略语  │                        说明                        │
    ├──────────┼────────────────────────────────────────────────────┤
    │POTS      │普通老式电话服务                                    │
    ├──────────┼────────────────────────────────────────────────────┤
    │BB        │宽带                                                │
    ├──────────┼────────────────────────────────────────────────────┤
    │BB-service│比如说，数字用户线路（DSL），电视线缆，光纤到户     │
    │          │(FTTP)                                              │
    ├──────────┼────────────────────────────────────────────────────┤
    │BB-modem  │比如说，DSL modem, 线缆 modem, 或光纤网络终端(ONT)  │
    ├──────────┼────────────────────────────────────────────────────┤
    │LAN       │局域网                                              │
    ├──────────┼────────────────────────────────────────────────────┤
    │WAN       │广域网                                              │
    ├──────────┼────────────────────────────────────────────────────┤
    │DHCP      │动态主机配置协议                                    │
    ├──────────┼────────────────────────────────────────────────────┤
    │PPP       │点到点协议                                          │
    ├──────────┼────────────────────────────────────────────────────┤
    │PPPoE     │以太网上的点到点协议                                │
    ├──────────┼────────────────────────────────────────────────────┤
    │ISP       │互联网服务提供商                                    │
    └───────────────────────────────────────────────────────────────┘


    [33;1m注意[m

    通过电视线缆的广域网服务，通常使用 DHCP 或 PPPoE。ADSL 和 FTTP 通
    常使用 PPPoE。你需要咨询你的互联网服务提供商来获得广域网连接使用
    的精确配置。

    [33;1m注意[m

    当宽带路由器用来搭建家庭局域网环境时，局域网上的电脑需要使用宽带
    路由器上的网络地址转换（NAT），来连接到广域网。在这样的情况下，局
    域网上的电脑网络接口需使用静态 IP 或者宽带路由器提供的 DHCP 服务
    。宽带路由器必须按 ISP 的指引来配置连接到广域网。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.5.1. 以太网 DHCP 连接[;m

    典型的现代家庭和小的商业网络，也就是局域网，使用一些消费等级的宽
    带路由器连接到广域网（因特网）。路由器后面的局域网通常使用路由器
    上运行的动态主机配置协议（DHCP）服务端提供的服务。

    仅仅需要安装 isc-dhcp-client 包为以太网提供动态主机配置协议
    (DHCP)服务。

    参见 dhclient.[34;1mconf(5)[m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.5.2. 以太网静态 IP 连接[;m

    静态 IP 以太网不需要特别的配置动作。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.5.3. 使用 pppconfig 的 PPP 连接[;m

    配置脚本 pppconfig 配置 PPP 连接，仅需要交互式的选择下面内容。

[33;1m      *[;m 电话号码

[33;1m      *[;m ISP 用户名

[33;1m      *[;m ISP 密码

[33;1m      *[;m 端口速率

[33;1m      *[;m modem 通信端口

[33;1m      *[;m 认证方式

    表 5.6. 使用 pppconfig 的 PPP 连接配置文件列表

    ┌───────────────────────────────────────────────────────────────┐
    │         文件          │                 功能                  │
    ├───────────────────────┼───────────────────────────────────────┤
    │/etc/ppp/peers/        │pppconfig 生成针对 <isp_name> 的 pppd  │
    │<isp_name>             │配置文件                               │
    ├───────────────────────┼───────────────────────────────────────┤
    │/etc/chatscripts/      │pppconfig 生成针对 <isp_name> 的 chat  │
    │<isp_name>             │配置文件                               │
    ├───────────────────────┼───────────────────────────────────────┤
    │/etc/ppp/options       │pppd 常用的执行参数                    │
    ├───────────────────────┼───────────────────────────────────────┤
    │/etc/ppp/pap-secret    │PAP 的鉴权认证数据 (有安全风险)        │
    ├───────────────────────┼───────────────────────────────────────┤
    │/etc/ppp/chap-secret   │CHAP 的鉴权认证数据(更安全)            │
    └───────────────────────────────────────────────────────────────┘


    [33;1m小心[m

    [35;1m"<isp_name>"[;m 是 [35;1m"互联网服务提供商"[;m ，假设 pon 和 poff 命令调用时
    ，没有参数。

    你可以使用下面的底层网络配置工具测试配置。

[32;1m    $ sudo pon <isp_name>[;m
    ...
[32;1m    $ sudo poff <isp_name>[;m

    参见 [35;1m"/usr/share/doc/ppp/README.Debian.gz"[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.5.4. 使用 wvdialconf 的另一种可选的 PPP 连接[;m

    [34;1m一个不同的使用pppd(8)[m 方案是使用来自 wvdial 包的 [34;1mwvdial(1)[m。代替
    pppd 运行 [34;1mchat(8)[m 来拨号和协商连接，wvdial 进行拨号和初始化协商，
    然后启动 pppd 进行余下操作。

    配置脚本 wvdialconf 配置 PPP 连接，仅需要交互式的选择下面内容。

[33;1m      *[;m 电话号码

[33;1m      *[;m ISP 用户名

[33;1m      *[;m ISP 密码

    在大部分情况下，wvdial 能够成功建立连接并自动维护认证鉴权数据。

    表 5.7. 使用 wvdialconf 的 PPP 连接配置文件列表

    ┌───────────────────────────────────────────────────────────────┐
    │        文件        │                   功能                   │
    ├────────────────────┼──────────────────────────────────────────┤
    │/etc/ppp/peers/     │wvdialconf 生成针对 wvdial 的 pppd 配置文 │
    │wvdial              │件                                        │
    ├────────────────────┼──────────────────────────────────────────┤
    │/etc/wvdial.conf    │wvdialconf 生成配置文件                   │
    ├────────────────────┼──────────────────────────────────────────┤
    │/etc/ppp/options    │pppd 常用的执行参数                       │
    ├────────────────────┼──────────────────────────────────────────┤
    │/etc/ppp/pap-secret │PAP 的鉴权认证数据 (有安全风险)           │
    ├────────────────────┼──────────────────────────────────────────┤
    │/etc/ppp/chap-secret│CHAP 的鉴权认证数据(更安全)               │
    └───────────────────────────────────────────────────────────────┘


    你可以使用下面的底层网络配置工具测试配置。

[32;1m    $ sudo wvdial[;m
    ...
[32;1m    $ sudo killall wvdial[;m

    参见 [34;1mwvdial(1)[m 和 wvdial.[34;1mconf(5)[m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.5.5. 使用 pppoeconf 的 PPPoE 以太网连接[;m

    当你的互联网提供商提供 PPPoE 连接，并且你决定把电脑直接连接到广域
    网，那你的电脑网络必须使用 PPPoE 来配置。PPPoE 表示以太网上的 PPP
    。配置脚本pppoeconf 交互式的配置 PPPoE 连接。

    配置文件在下面。

    表 5.8. 使用 pppoeconf 的 PPPoE 连接配置文件列表

    ┌───────────────────────────────────────────────────────────────┐
    │          文件           │                功能                 │
    ├─────────────────────────┼─────────────────────────────────────┤
    │/etc/ppp/peers/          │pppoeconf 生成针对pppoe 的 pppd 配置 │
    │dsl-provider             │文件                                 │
    ├─────────────────────────┼─────────────────────────────────────┤
    │/etc/ppp/options         │pppd 常用的执行参数                  │
    ├─────────────────────────┼─────────────────────────────────────┤
    │/etc/ppp/pap-secret      │PAP 的鉴权认证数据 (有安全风险)      │
    ├─────────────────────────┼─────────────────────────────────────┤
    │/etc/ppp/chap-secret     │CHAP 的鉴权认证数据(更安全)          │
    └───────────────────────────────────────────────────────────────┘


    你可以使用下面的底层网络配置工具测试配置。

[32;1m    $ sudo /sbin/ifconfig eth0 up[;m
[32;1m    $ sudo pon dsl-provider[;m
    ...
[32;1m    $ sudo poff dsl-provider[;m
[32;1m    $ sudo /sbin/ifconfig eth0 down[;m

    参见 [35;1m"/usr/share/doc/pppoeconf/README.Debian"[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6. 使用 ifupdown 进行基本网络配置（旧）[;m

    Debian 系统上的传统 TCP/IP 网络搭建，ifupdown 软件包是作为一个上
    层工具来使用。有两个典型场景。

[33;1m      *[;m 像移动电脑上的动态 IP 系统，你可以使用 resolvconf 包搭建 TCP/
        IP 网络，它能够使你快速切换你的网络配置。 (参见第 5.6.4 节 “
        使用 DHCP 的网络接口”).

[33;1m      *[;m 像服务器上的静态 IP 系统，你不需要 resolvconf 包来搭建你的
        TCP/IP 网络，并保持你的系统简单(参见第 5.6.5 节 “使用静态 IP
        地址的网络接口”).

    如果你想设置高级配置，这些传统的设置方法，是相当有用的。在下面的
    内容中发现细节。

    ifupdown 包提供 Debian 系统中标准的高层网络配置框架。在本节中，我
    们通过 ifupdown 的简单介绍和许多典型列子来学习基本的网络配置。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.1. 简单的命令语法[;m

    ifupdown 包包含有两个命令: [34;1mifup(8)[m 和 [34;1mifdown(8)[m. 它们提供专注于"/
    etc/network/interfaces" 配置文件的上层网络配置。

    表 5.9. 使用 ifupdown 进行基本网络配置的命令列表

    ┌───────────────────────────────────────────────────────────────┐
    │  命令   │                        操作                         │
    ├─────────┼─────────────────────────────────────────────────────┤
    │ifup eth0│如果 [35;1m"iface eth0"[;m 节存在，使用 eth0 的配置来启动网络 │
    │         │接口 eth0                                            │
    ├─────────┼─────────────────────────────────────────────────────┤
    │ifdown   │如果 [35;1m"iface eth0"[;m 节存在，使用 eth0 的配置来关闭网络 │
    │eth0     │接口 eth0                                            │
    └───────────────────────────────────────────────────────────────┘


    [31;1m警告[m

    请不要使用 [34;1mifconfig(8)[m 和 [34;1mip(8)[m 这类的底层网络配置工具命令来配置
    一个 up 状态的接口。

    [33;1m注意[m

    并没有一个叫 ifupdown 的命令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.2. "/etc/network/interfaces" 基本语法[;m

    在 [34;1minterfaces(5)[m 里解释的 [35;1m"/etc/network/interfaces"[;m 关键语法，能
    够用下面的表格概括。

    表 5.10. [35;1m"/etc/network/interfaces"[;m 里面的节列表

    ┌───────────────────────────────────────────────────────────────┐
    │           节            │                说明                 │
    ├─────────────────────────┼─────────────────────────────────────┤
    │[35;1m"auto <interface_name>"[;m  │当系统启动时，启动接口 <             │
    │                         │interface_name>                      │
    ├─────────────────────────┼─────────────────────────────────────┤
    │"allow-auto              │同上                                 │
    │<interface_name>"        │                                     │
    ├─────────────────────────┼─────────────────────────────────────┤
    │"allow-hotplug           │当内核从接口检测到一个热拔插事件时， │
    │<interface_name>"        │启动接口 <interface_name>            │
    ├─────────────────────────┼─────────────────────────────────────┤
    │[35;1m"iface <config_name> …"[;m  │定义 <config_name> 的网络配置        │
    │开头的行                 │                                     │
    ├─────────────────────────┼─────────────────────────────────────┤
    │"mapping                 │定义 <config_name> 的映射值来匹配    │
    │<interface_name_glob>" 开│<interface_name>                     │
    │头的行                   │                                     │
    ├─────────────────────────┼─────────────────────────────────────┤
    │[35;1m"#"[;m 号开始的行           │像注释一样忽略（行尾注释不被支持）   │
    ├─────────────────────────┼─────────────────────────────────────┤
    │[35;1m"\"[;m 反斜杠结尾的行       │扩展配置到下一行                     │
    └───────────────────────────────────────────────────────────────┘


    以 iface 开头行的节，有下面的语法。

    iface <config_name> <address_family> <method_name>
     <option1> <value1>
     <option2> <value2>
     ...

    对于基本配置， mapping 节没有被使用，你可以使用网络接口名作为网络
    配置名。 (参见第 5.7.5 节 [35;1m“映射节 mapping stanza”[;m).

    [31;1m警告[m

    在 [35;1m"/etc/network/interfaces"[;m里，不要为一个网络接口重复定义[35;1m"iface"[;m
    节。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.3. 回环网络接口[;m

    在启动系统的时候， [35;1m"/etc/network/interfaces"[;m 文件里下面的配置条目
    启动了回环网络接口 lo 。 (通过 auto 节).

    auto lo
    iface lo inet loopback

    这节内容在 [35;1m"/etc/network/interfaces"[;m 文件里面一直存在。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.4. 使用 DHCP 的网络接口[;m

    按第 5.5.1 节 [35;1m“以太网 DHCP 连接”[;m 准备系统后，在"/etc/network/
    interfaces" 里面，按下面的内容创建配置条目后，网络接口的 DHCP 便
    配置好了。

    allow-hotplug eth0
    iface eth0 inet dhcp

    当 Linux 内核检测到物理接口 eth0, allow-hotplug 节促使 ifup 启动
    接口，iface 促使 ifup 使用 DHCP 来配置接口。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.5. 使用静态 IP 地址的网络接口[;m

    在 [35;1m"/etc/network/interfaces"[;m 文件里面创建配置条目，来配置静态 IP
    网络接口。如下所示。

    allow-hotplug eth0
    iface eth0 inet static
     address 192.168.11.100
     netmask 255.255.255.0
     gateway 192.168.11.1
     dns-domain example.com
     dns-nameservers 192.168.11.1

    当 Linux 内核检测到 eth0, allow-hotplug 节促使 ifup 启动接口，
    iface 节促使 ifup 使用静态 IP 来配置接口。

    这里，我假设下面的配置。

[33;1m      *[;m 局域网的 IP 地址范围: 192.168.11.0 - 192.168.11.255

[33;1m      *[;m 网关的 IP 地址: 192.168.11.1

[33;1m      *[;m 电脑的 IP 地址: 192.168.11.100

[33;1m      *[;m resolvconf 包:已安装

[33;1m      *[;m 域名: [35;1m"example.com"[;m

[33;1m      *[;m DNS 服务器的 IP 地址：192.168.11.1

    当 resolvconf 包没有安装时，DNS 相关的配置，需要按下面的方式手工
    编辑 [35;1m"/etc/resolv.conf"[;m 。

    nameserver 192.168.11.1
    domain example.com

    [33;1m小心[m

    用在上面例子里的 IP 地址，不意味着照抄。你应当按你实际网络配置调
    整 IP 地址。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.6. 无线局域网接口基础[;m

    无线 LAN (简称 WLAN) 提供快速的无线连接，使用基于 IEEE 802.11 标
    准集的非授权无线宽带扩频通信技术。

    无线接口跟以太网接口非常像，但在初始化时，要求提供一些网络 ID 和
    密钥数据。他们的上层网络工具差不多和以太网接口一样，除开接口名有
    一点点不同，按使用的不同内核驱动，像 eth1 , wlan0 , ath0 , wifi0
    ……

    [36;1m提示[m

    wmaster0 设备是主设备，它仅仅只是新的 mac80211 Linux API 里，
    SoftMAC 使用的一个内部设备。

    这里有一些需要记住的 WLAN 关键词。

    表 5.11. WLAN 缩写词列表

    ┌───────────────────────────────────────────────────────────────┐
    │缩略语│      全称       │                 说明                 │
    ├──────┼─────────────────┼──────────────────────────────────────┤
    │NWID  │Network ID       │802.11 之前 WaveLAN 网络使用的 16 位网│
    │      │                 │络号 (强烈不赞成使用)                 │
    ├──────┼─────────────────┼──────────────────────────────────────┤
    │(E)   │(Extended)       │无线接入点 (APs) 的网络名称，互连形成 │
    │SSID  │Service Set      │一个完整的 802.11 无线局域网, 域名 ID │
    │      │Identifier       │                                      │
    ├──────┼─────────────────┼──────────────────────────────────────┤
    │WEP,  │Wired Equivalent │使用 40 位密钥的第一代 64位（128位）无│
    │(WEP2)│Privacy          │线加密标准（不赞成使用）              │
    ├──────┼─────────────────┼──────────────────────────────────────┤
    │WPA   │Wi-Fi Protected  │第二代无线加密标准（实现大部分 802.11i│
    │      │Access           │），和 WEP 兼容                       │
    ├──────┼─────────────────┼──────────────────────────────────────┤
    │WPA2  │Wi-Fi Protected  │第三代无线加密标准（完全的 802.11i），│
    │      │Access 2         │与 WEP 不兼容                         │
    └───────────────────────────────────────────────────────────────┘


    实际选择使用的协议是由你配置的无线路由器所限制。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.7. 使用 WPA/WPA2 的无线局域网接口[;m

    你需要安装 wpasupplicant 包来支持 WLAN 使用新的 WPA/WPA2.

    使用 DHCP 的无线局域网连接，[35;1m"/etc/network/interfaces"[;m 文件的条目
    需要按下面的内容设置。

    allow-hotplug ath0
    iface ath0 inet dhcp
     wpa-ssid homezone
[31;1m     # hexadecimal psk is encoded from a plaintext passphrase[;m
     wpa-psk 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f

    参见 [35;1m"/usr/share/doc/wpasupplicant/README.modes.gz"[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.8. 使用 WEP 的无线局域网接口[;m

    你需要安装 wireless-tools 包来支撑老的 WEP 无线局域网。（你的消费
    等级的路由器可能仍然使用不安全的架构，但这总比没有好。）

    [33;1m小心[m

    请注意：WEP 无线局域网上的网络流量，可以被其他人监听。

    使用 DHCP 的无线局域网连接，[35;1m"/etc/network/interfaces"[;m 文件的条目
    需要按下面的内容设置。

    allow-hotplug eth0
    iface eth0 inet dhcp
     wireless-essid Home
     wireless-key1 0123-4567-89ab-cdef
     wireless-key2 12345678
     wireless-key3 s:password
     wireless-defaultkey 2
     wireless-keymode open

    参见 [35;1m"/usr/share/doc/wireless-tools/README.Debian"[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.9. PPP 连接[;m

    你需要按之前的描述配置 PPP 连接(参见第 5.5.3 节 “使用 pppconfig
    的 PPP 连接”). 然后，按下面的方式给第一个 PPP 设备 ppp0 增加 “/
    etc/network/interfaces" 文件里的条目.

    iface ppp0 inet ppp
     provider <isp_name>

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.10. 另一种 PPP 连接[;m

    你需要按之前的描述先配置好使用 wvdial 的另外一种 PPP 连接(参见第
     5.5.4 节 [35;1m“使用 wvdialconf 的另一种可选的 PPP 连接”[;m). 然后，按下
    面的方式给第一个 PPP 设备 ppp0 增加 “/etc/network/interfaces" 文
    件里的条目.

    iface ppp0 inet wvdial

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.11. PPPoE 连接[;m

    使用 PPPoE 直接连接到广域网的电脑，你需要按之前的描述用 PPPoE 连
    接配置系统(参见第 5.5.5 节 [35;1m“使用 pppoeconf 的 PPPoE 以太网连接”[;m).
    然后，按下面的方式给第一个 PPPoE 设备 eth0 增加 “/etc/network/
    interfaces" 文件里的条目.

    allow-hotplug eth0
    iface eth0 inet manual
     pre-up /sbin/ifconfig eth0 up
     up ifup ppp0=dsl
     down ifdown ppp0=dsl
     post-down /sbin/ifconfig eth0 down
[31;1m    # The following is used internally only[;m
    iface dsl inet ppp
     provider dsl-provider

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.12. ifupdown 网络配置状态[;m

    [35;1m"/etc/network/run/ifstate"[;m 文件保存了由 ifupdown 软件包管理的当前
    所有的活动网络接口的期望状态。但不幸的是，即使ifupdown 系统没有按
    期望的启动某个网络接口，[35;1m"/etc/network/run/ifstate"[;m 文件仍然会把它
    列为激活状态。

    如果对一个网络接口的 [34;1mifconfig(8)[m 命令输出没有如下列子中的一行，那
    它就不能够作为 IPV4 网络的一部分使用.

      inet addr:192.168.11.2  Bcast:192.168.11.255  Mask:255.255.255.0

    [33;1m注意[m

    对于连接到 PPPoE 的以太网设备， [34;1mifconfig(8)[m 命令的输出看起来像上
    面的列子。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.13. 网络重新配置基础[;m

    当你试图重新配置接口，如 eth0 时,你必须首先用 [35;1m"sudo ifdown eth0"[;m
    命令关闭它. 这将从[35;1m"/etc/network/run/ifstate"[;m 文件里面移除 eth0 条
    目。 (如果 eth0 之前没有被适当配置，或没有激活，这个命令将导致出
    现一些错误信息。迄今为止，对于简单的单用户工作站，在任何时间执行
    这个操作，看起来都是安全的。)

    你现在可以按需要重新配置网络接口 eth0 ，重写 "/etc/network/
    interfaces" 文件的内容。

    然后，你可以使用 [35;1m"sudo ifup eth0"[;m 命令，重新激活 eth0 。

    [36;1m提示[m

    你可以简单的执行 [35;1m"sudo ifdown eth0;sudo ifup eth0"[;m 来初始化或重新
    初始化网络接口。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.6.14. ifupdown-extra 包[;m

    ifupdown-extra 包提供简易的网络连接测试，和 ifupdown 包一道使用.

[33;1m      *[;m [34;1mnetwork-test(1)[m 命令能够在 shell 里使用。

[33;1m      *[;m 自动脚本将运行每一个 ifup 执行的命令。

    network-test 命令把你从麻烦的执行分析网络问题的底层命令中解放出来
    。

    自动脚本安装在 [35;1m" /etc/network/*/ "[;m并执行下面的操作。

[33;1m      *[;m 检查网络线缆连接

[33;1m      *[;m 检查重复 IP 地址使用

[33;1m      *[;m 按 [35;1m"/etc/network/routes"[;m 的定义，建立系统静态路由

[33;1m      *[;m 检查网络的网关是否可以到达

[33;1m      *[;m 在 [35;1m"/var/log/syslog"[;m 文件里面记录结果

    系统日志记录对管理远程系统的网络问题非常有用。

    [36;1m提示[m

    ifupdown-extra 包的自动化行为是由 [35;1m"/etc/default/network-test"[;m 来
    配置. 部分自动化检查，会减慢一点系统启动速度，因为这些脚本需要一
    些时间来监听 ARP 答复.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.7. 使用 ifupdown 的高级网络配置（旧）[;m

    ifupdown 软件包，使用其高级用法，其功能就能够超出在第 5.6 节 “使
    用 ifupdown 进行基本网络配置（旧）” 所描述的内容。

    描述在这里的这些功能是完全可选的。我，由于懒惰和极简主义，几乎不
    使用这些令人烦扰的东西。

    [33;1m小心[m

    如果你不能够通过第 5.6 节 [35;1m“使用 ifupdown 进行基本网络配置（旧）”[;m
    里的信息建立网络连接,使用下面的信息，你就会使你的情形变得比较糟糕
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.7.1. ifplugd 软件包[;m

    ifplugd 软件包是一个老的自动网络配置工具，它仅能够管理以太网连接
    。解决了移动 PC 等拔插以太网线缆的问题。如果你有安装
    NetworkManager 或 Wicd (参见第 5.2 节 [35;1m“现代的桌面网络配置”[;m)，就不
    需要这个软件包。

    这个软件包运行一个后台守护进程（daemon）来代替 auto 或
    allow-hotplug 的功能 (参见表 5.10 “[35;1m"/etc/network/interfaces"[;m 里面
    的节列表”)，并启动网络连接上的接口。

    以太网端口怎样使用 ifplugd 软件包，比如 eth0，请看下面。

     1. 删除 [35;1m"/etc/network/interfaces"[;m 里面的节: [35;1m"auto eth0"[;m 或
        [35;1m"allow-hotplug eth0"[;m.

     2. 保留 [35;1m"/etc/network/interfaces"[;m 里的节: [35;1m"iface eth0 inet …"[;m 和
        [35;1m"mapping …"[;m.

     3. 安装 ifplugd 软件包.

     4. 运行 [35;1m"sudo dpkg-reconfigure ifplugd"[;m.

     5. 把 eth0 作为 [35;1m"由 ifplugd 监控的静态网卡"[;m.

    现在，网络按你希望的方式重新配置了。

[33;1m      *[;m 在打开电源或发现硬件的时候启动，接口不会自己启动自己。

[33;1m          +[;m 快速启动过程，没有长的 DHCP 等待时间。

[33;1m          +[;m 没有适当 IPv4 地址的接口不会被滑稽的激活 (参见第 5.6.12
            节 [35;1m“ifupdown 网络配置状态”[;m).

[33;1m      *[;m 发现以太网线缆时，启动接口。

[33;1m      *[;m 在拔掉以太网线缆后启动一段时间，然后接口自动关闭。

[33;1m      *[;m 在插入另外的以太网线缆时，接口在新的网络环境下启动。

    [36;1m提示[m

    [34;1mifplugd(8)[m 命令的参数能够设置其行为，比如说重新配置接口的延时。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.7.2. ifmetric 软件包[;m

    ifmetric 软件包使我们能够根据经验来维护路由度量值，即使是 DHCP 的
    路由度量值。

    下面设置 eth0 接口的值，让其在有 wlan0 接口的情况下，更加适当。

     1. 安装 ifmetric 软件包。

     2. 在 [35;1m"/etc/network/interfaces"[;m 里，增加一行 [35;1m"metric 0"[;m，紧挨着
        放在[35;1m"iface eth0 inet dhcp"[;m这行下面。

     3. 在 [35;1m"/etc/network/interfaces"[;m 里，增加一行 [35;1m"metric 1"[;m ，紧挨着
        放在 [35;1m"iface wlan0 inet dhcp"[;m 这行下面.

    metric 0 意味着最高路由优先级，是默认值。大的 metric 值意味着较低
    的路由优先级。具有最低 metric 值的活动的接口 IP 地址，成为原始路
    由。[34;1m参见ifmetric(8)[m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.7.3. 虚拟接口[;m

    单个物理以太网接口能够配置为使用不同的 IP 地址的多个虚拟接口。这
    样做的目的，通常是把接口连接到几个 IP 子网。比如说，只有一个网卡
    的基于 IP 地址的虚拟 web 主机，就是这样一个应用。

    举个例子，让我们假设下面的情况。

[33;1m      *[;m 你主机上的单个以太网接口连接到以太网集线器（不是宽带路由器）
        。

[33;1m      *[;m 以太网集线器同时连接到互联网和本地局域网。

[33;1m      *[;m 局域网使用子网 192.168.0.x/24.

[33;1m      *[;m 你主机的物理接口 eth0 使用 DHCP 提供的 IP 地址来连接互联网。

[33;1m      *[;m 你的主机使用 192.168.0.1 作为局域网的虚拟接口 eth0:0 的地址。

    [35;1m"/etc/network/interfaces"[;m 里下面的节配置你的网络。

    iface eth0 inet dhcp
     metric 0
    iface eth0:0 inet static
     address 192.168.0.1
     netmask 255.255.255.0
     network 192.168.0.0
     metric 1

    [33;1m小心[m

    虽然这个配置列子，并使用 netfilter/iptables (参见第 5.10 节
    [35;1m“Netfilter 网络过滤框架”[;m) 的网络地址转换(NAT)，能够给只有单个网络
    接口的局域网提供廉价的路由器，但这样设置，没有真正的防火墙能力。
    你应当使用 2 块物理网卡的 NAT 来使本地网络更安全，隔离不安全的互
    联网。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.7.4. 高级命令语法[;m

    ifupdown 软件包提供高级网络配置，使用网络配置名和网络接口名。我使
    用的术语和 [34;1mifup(8)[m 以及 [34;1minterfaces(5)[m有少量不同。

    表 5.12. 网络设备术语列表

    ┌───────────────────────────────────────────────────────────────┐
    │man 手册│本文术│  下面文本的列子  │            说明            │
    │ 页术语 │  语  │                  │                            │
    ├────────┼──────┼──────────────────┼────────────────────────────┤
    │物理接口│网络接│lo, eth0,         │Linux 内核给出的名字 (使用  │
    │名      │口名  │<interface_name>  │udev 机制)                  │
    ├────────┼──────┼──────────────────┼────────────────────────────┤
    │逻辑接口│网络配│config1, config2, │在 [35;1m"/etc/network/interfaces"[;m│
    │名      │置名  │<config_name>     │里紧跟着 iface 的名字       │
    └───────────────────────────────────────────────────────────────┘


    在第 5.6.1 节 [35;1m“简单的命令语法”[;m 里的基本网络配置命令，需要网络配置
    名来标识匹配 [35;1m"/etc/network/interfaces"[;m 里 iface 节的网络接口名。

    高级网络配置命令能够按下面的方式区分 [35;1m"/etc/network/interfaces"[;m 里
    的网络配置名和网络接口名。

    表 5.13. ifupdown 高级网络配置命令列表

    ┌───────────────────────────────────────────────────────────────┐
    │       命令        │                   操作                    │
    ├───────────────────┼───────────────────────────────────────────┤
    │ifup eth0=config1  │使用配置 config1 启动网络接口 eth0         │
    ├───────────────────┼───────────────────────────────────────────┤
    │ifdown eth0=config1│使用配置 config1 关闭网络接口 eth0         │
    ├───────────────────┼───────────────────────────────────────────┤
    │ifup eth0          │使用 mapping 节选择的 eth0 配置启动网络接口│
    ├───────────────────┼───────────────────────────────────────────┤
    │ifdown eth0        │使用 mapping 节选择的 eth0 配置关闭网络接口│
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.7.5. 映射节 mapping stanza[;m

    为了避免复杂，我们在第 5.6.2 节 “[35;1m"/etc/network/interfaces"[;m 基本语
    法” 里省略了解释 [35;1m"/etc/network/interfaces"[;m 里的 mapping 节。

    mapping <interface_name_glob>
     script <script_name>
     map <script_input1>
     map <script_input2>
     map ...

    这给 /etc/network/interfaces 文件提供了一个高级特征，可以自动选择
    映射脚本 <script_name> 定义的配置。

    让我们来跟随下面的执行。

[32;1m    $ sudo ifup eth0[;m

    当 [35;1m"<interface_name_glob>"[;m 匹配 [35;1m"eth0"[;m, 这个执行过程执行下面的命
    令来自动配置 eth0。

[32;1m    $ sudo ifup eth0=$(echo -e '<script_input1> \n <script_input2> \n ...' | <script_name> eth0)[;m

    这里，[35;1m" map "[;m 脚本输入行是可选和可以重复的。

    [33;1m注意[m

    mapping 节工作的匹配模式，类似于 shell 文件名匹配。 (参见第
     1.5.6 节 [35;1m“Shell 通配符”[;m).

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.7.6. 手动的可切换网络配置[;m

    以下是如何在几个网络配置中进行手动切换，而无需像第 5.6.13 节 “网
    络重新配置基础” 中那样重写 [35;1m“/etc/network/interfaces”[;m 文件。

    对于你需要访问的所有网络配置，你需要在 [35;1m“/etc/network/interfaces”[;m
    文件中像下面那样创建一个单独的节。

    auto lo
    iface lo inet loopback

    iface config1 inet dhcp

    iface config2 inet static
     address 192.168.11.100
     netmask 255.255.255.0
     gateway 192.168.11.1
     dns-domain example.com
     dns-nameservers 192.168.11.1

    iface pppoe inet manual
     pre-up /sbin/ifconfig eth0 up
     up ifup ppp0=dsl
     down ifdown ppp0=dsl
     post-down /sbin/ifconfig eth0 down

[31;1m    # The following is used internally only[;m
    iface dsl inet ppp
     provider dsl-provider

    iface pots inet ppp
     provider provider

    请注意，iface 后面标识的网络配置名称不用于标识网络接口名称。另外
    ，也没有 auto 或 allow-hotplug 节来根据事件自动启动网络接口 eth0
    。

    现在，你可以切换网络配置了。

    让我们通过 DHCP 将你的 PC 移动到局域网。你可以通过下列命令开启由
    网络配置名称（逻辑接口名称）config1 指定的网络接口（物理接口）
    eth0。

[32;1m    $ sudo ifup eth0=config1[;m
    Password:
    ...

    eth0 接口已开启，由 DHCP 配置并连接到了局域网。

[32;1m    $ sudo ifdown eth0=config1[;m
    ...

    eth0 接口已关闭并断开局域网连接。

    让我们通过静态 IP 使你的 PC 移动到局域网。你可以通过下列命令开启
    由网络配置名称 config2 指定的网络接口 eth0。

[32;1m    $ sudo ifup eth0=config2[;m
    ...

    开启 eth0 接口，使用静态 IP 配置并连接到局域网。像 dns-* 这样的额
    外参数会配置 [35;1m“/etc/resolv.conf”[;m 的内容。如果安装了 resolvconf，“/
    etc/resolv.conf” 会更容易管理。

[32;1m    $ sudo ifdown eth0=config2[;m
    ...

    eth0 接口再次关闭并断开局域网连接。

    让我们将你的 PC 移动到 PPPoE 服务器的 BB-modem 上的一个端口。你可
    以通过下列命令开启由网络配置名称 pppoe 指定的网络接口 eth0。

[32;1m    $ sudo ifup eth0=pppoe[;m
    ...

    eth0 接口已开启，由 PPPoE 配置直接连接到 ISP。

[32;1m    $ sudo ifdown eth0=pppoe[;m
    ...

    eth0 接口再次关闭并断开连接。

    让我们将你的 PC 移动到使用 POTS 和 modem 的位置，而非局域网或
    BB-modem。你可以通过下列命令开启由网络配置名称 ppp0 指定的网络接
    口 eth0。

[32;1m    $ sudo ifup ppp0=pots[;m
    ...

    开启 ppp0接口，并使用 PPP 连接到互联网。

[32;1m    $ sudo ifdown ppp0=pots[;m
    ...

    关闭 ppp0 接口并断开网络。

    你应该检查 [35;1m“/etc/network/run/ifstate”[;m 文件，查看ifupdown 系统当前
    网络配置的状态。

    [31;1m警告[m

    如果你有多个网络接口，你可能需要调整 eth*、ppp* 等的末尾数字。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.7.7. ifupdown 系统的脚本[;m

    ifupdown 系统会自动运行安装在 [35;1m“/etc/network/*/”[;m 中的脚本，而且会
    传递环境变量给脚本。

    表 5.14. ifupdown 系统传递的环境变量

    ┌───────────────────────────────────────────────────────────────┐
    │  环境变量  │                      传递值                      │
    ├────────────┼──────────────────────────────────────────────────┤
    │[35;1m"$IFACE"[;m    │处理中的接口的物理名称（接口名称）                │
    ├────────────┼──────────────────────────────────────────────────┤
    │[35;1m"$LOGICAL"[;m  │处理中的接口的逻辑名称（配置名称）                │
    ├────────────┼──────────────────────────────────────────────────┤
    │[35;1m"$ADDRFAM"[;m  │接口的 <address_family>                           │
    ├────────────┼──────────────────────────────────────────────────┤
    │[35;1m"$METHOD"[;m   │接口的 <method_name> （例如 [35;1m“static”[;m）            │
    ├────────────┼──────────────────────────────────────────────────┤
    │[35;1m"$MODE"[;m     │如果是 ifup 运行的，则值为 [35;1m“start”[;m；如果是 ifdown │
    │            │运行的，则值为 [35;1m“stop”[;m                             │
    ├────────────┼──────────────────────────────────────────────────┤
    │[35;1m"$PHASE"[;m    │根据 [35;1m“$MODE”[;m，但有更细致的区分，共分为 pre-up、   │
    │            │post-up、pre-down 和 post-down 阶段               │
    ├────────────┼──────────────────────────────────────────────────┤
[33m    │[35;1m"$VERBOSITY"[;m│指示是否使用了 [35;1m“--verbose”[;m；是为 1，否为 0        │[m
    ├────────────┼──────────────────────────────────────────────────┤
    │[35;1m"$PATH"[;m     │命令搜索路径：“/usr/local/sbin:/usr/local/bin:/usr│
    │            │/sbin:/usr/bin:/sbin:/bin”                        │
    ├────────────┼──────────────────────────────────────────────────┤
    │"$IF_       │位于 iface 这节的相应选项值                       │
    │<OPTION>"   │                                                  │
    └───────────────────────────────────────────────────────────────┘


    这里，每一个环境变量，[35;1m"$IF_<OPTION>"[;m,是在相应的选项名字 <option1>
    和 <option2> 前增加 [35;1m"$IF_"[;m 来创建, 把字母转换为大写字母，将中划线
    替换为下划线，忽略非字母数字的字符。

    [36;1m提示[m

    <address_family>, <method_name>, <option1> 和 <option2> 的说明，
    请参见第 5.6.2 节 [35;1m“[35;1m"/etc/network/interfaces"[;m 基本语法”[;m。

    ifupdown-extra 软件包 (参见第 5.6.14 节 [35;1m“ifupdown-extra 包”[;m)使用
    这些环境变量来扩展ifupdown 软件包的功能. ifmetric 软件包 (参见第
     5.7.2 节 [35;1m“ifmetric 软件包”[;m)安装 [35;1m"/etc/network/if-up.d/ifmetric"[;m
    脚本，这个脚本通过[35;1m"$IF_METRIC"[;m变量来设置 metric 路由度量值.
    guessnet 软件包 (参见第 5.7.8 节 [35;1m“guessnet Mapping 映射”[;m),提供简
    单和功能强大的框架，用于通过 mapping 映射机制自动选择网络配置，这
    个软件包也使用了这些环境变量。

    [33;1m注意[m

    使用这些环境变量进行个性化网络配置的列子，你可以查看"/usr/share/
    doc/ifupdown/examples/*"里的列子脚本，以及 ifscheme 和
    ifupdown-scripts-zg2 软件包使用的脚本.这些额外的脚本有部分功能和
    ifupdown-extra与guessnet 软件包的基本功能重叠. 如果你安装了这些额
    外脚本，你应当个性化这些脚本来避免互相影响。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.7.8. guessnet Mapping 映射[;m

    为了替代在第 5.7.6 节 [35;1m“手动的可切换网络配置”[;m 描述的手工选择配置，
    你可以使用在第 5.7.5 节 [35;1m“映射节 mapping stanza”[;m 描述的映射机制，
    自动选择个性化脚本来进行配置网络。

    guessnet 软件包提供的 [34;1mguessnet-ifupdown(8)[m 命令，是被设计作为映射
    脚本，并提供强力框架来增强ifupdown 系统.

[33;1m      *[;m 在 iface 节下的每一个网络配置，列出测试条件作为guessnet 选项
        的值。

[33;1m      *[;m 映射机制选择第一个没有错误结果的 iface 作为网络配置。

    guessnet-ifupdown 使用的映射脚本和 ifupdown的原始网络配置架构，这
    两种对 [35;1m"/etc/network/interfaces"[;m 文件的用法，不会造成负面的影响，
    因为 guessnet 选项仅仅只导出额外的环境变量到 ifupdown 系统运行的
    脚本。细节参见 [34;1mguessnet-ifupdown(8)[m.

    [33;1m注意[m

    当多个 guessnet 选项行需要在 [35;1m"/etc/network/interfaces"[;m 里出现时,
    选项行使用 guessnet1, guessnet2,这类的开头,因为 ifupdown 软件包不
    允许选项行开头字符串重复。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.8. 底层网络配置[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.8.1. Iproute2 命令[;m

    Iproute2 命令集提供完整的底层网络配置能力。有个从旧的 net-tools
    命令集到新的 iproute2 命令集的转换表。

    表 5.15. 从旧的 net-tools 命令集到新的 iproute2 命令集转换表

    ┌───────────────────────────────────────────────────────────────┐
    │旧的 net-tools│新的 iproute2│               操作               │
    ├──────────────┼─────────────┼──────────────────────────────────┤
    │[34;1mifconfig(8)[m   │ip addr      │一个设备上的协议（IP 或 IPv6）地址│
    ├──────────────┼─────────────┼──────────────────────────────────┤
    │[34;1mroute(8)[m      │ip route     │路由表条目                        │
    ├──────────────┼─────────────┼──────────────────────────────────┤
    │[34;1marp(8)[m        │ip neigh     │ARP 或 NDISC 缓存条目             │
    ├──────────────┼─────────────┼──────────────────────────────────┤
    │ipmaddr       │ip maddr     │多播地址                          │
    ├──────────────┼─────────────┼──────────────────────────────────┤
    │iptunnel      │ip tunnel    │IP 隧道                           │
    ├──────────────┼─────────────┼──────────────────────────────────┤
    │[34;1mnameif(8)[m     │[34;1mifrename(8)[m  │基于 MAC 地址的网络接口名         │
    ├──────────────┼─────────────┼──────────────────────────────────┤
    │[34;1mmii-tool(8)[m   │[34;1methtool(8)[m   │以太网设备设置                    │
    └───────────────────────────────────────────────────────────────┘


    参见 [34;1mip(8)[m 和 IPROUTE2 工具套件 Howto.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.8.2. 安全的底层网络操作[;m

    你可以按下面的方式安全的使用底层网络命令，这些命令不会改变网络配
    置。

    表 5.16. 底层网络命令列表

    ┌───────────────────────────────────────────────────────────────┐
    │        命令         │                  说明                   │
    ├─────────────────────┼─────────────────────────────────────────┤
    │ifconfig             │显示活动的网络接口连接和地址状态         │
    ├─────────────────────┼─────────────────────────────────────────┤
    │ip addr show         │显示活动的网络接口连接和地址状态         │
    ├─────────────────────┼─────────────────────────────────────────┤
    │route -n             │用数字地址显示全部路由表                 │
    ├─────────────────────┼─────────────────────────────────────────┤
    │ip route show        │用数字地址显示全部路由表                 │
    ├─────────────────────┼─────────────────────────────────────────┤
    │arp                  │显示当前 ARP 缓存表的内容                │
    ├─────────────────────┼─────────────────────────────────────────┤
    │ip neigh             │显示当前 ARP 缓存表的内容                │
    ├─────────────────────┼─────────────────────────────────────────┤
    │plog                 │显示 ppp 后台守护进程（daemon）日志      │
    ├─────────────────────┼─────────────────────────────────────────┤
    │ping yahoo.com       │检查到 [35;1m"yahoo.com"[;m 的因特网连接          │
    ├─────────────────────┼─────────────────────────────────────────┤
    │whois yahoo.com      │在域名数据库里面检查谁注册了 [35;1m"yahoo.com"[;m │
    ├─────────────────────┼─────────────────────────────────────────┤
    │traceroute yahoo.com │跟踪到 [35;1m"yahoo.com"[;m 的因特网连接          │
    ├─────────────────────┼─────────────────────────────────────────┤
    │tracepath yahoo.com  │跟踪到 [35;1m"yahoo.com"[;m 的因特网连接          │
    ├─────────────────────┼─────────────────────────────────────────┤
    │mtr yahoo.com        │跟踪到 [35;1m"yahoo.com"[;m 的因特网连接（重复的）│
    ├─────────────────────┼─────────────────────────────────────────┤
    │dig [@dns-server.com]│查询由 [35;1m"dns-server.com"[;m 提供服务的       │
    │example.com [{a│mx│  │[35;1m"example.com"[;m 域名的 DNS 记录： [35;1m"a"[;m, [35;1m"mx"[;m│
    │any}]                │或 [35;1m"any"[;m 记录                            │
    ├─────────────────────┼─────────────────────────────────────────┤
    │iptables -L -n       │查看包过滤                               │
    ├─────────────────────┼─────────────────────────────────────────┤
    │netstat -a           │找出所有打开的端口                       │
    ├─────────────────────┼─────────────────────────────────────────┤
[33m    │netstat -l --inet    │找出监听端口                             │[m
    ├─────────────────────┼─────────────────────────────────────────┤
[33m    │netstat -ln --tcp    │找出 TCP 监听端口（数字的）              │[m
    ├─────────────────────┼─────────────────────────────────────────┤
    │dlint example.com    │查询 [35;1m"example.com"[;m 的 DNS zone 信息      │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    部分底层网络配置工具放在 [35;1m"/sbin/"[;m 目录。你可以像 [35;1m"/sbin/ifconfig"[;m
    这样使用完整命令路径，或把 [35;1m"/sbin"[;m 加到 [35;1m"~/.bashrc"[;m 文件列出的
    [35;1m"$PATH"[;m 环境变量里。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.9. 网络优化[;m

    通用的网络优化超出了本文的范围。我提及消费等级连接相关的主题。

    表 5.17. 网络优化工具列表

    ┌──────────────────────────────────────────────────────────┐
    │ 软件包  │  流行度  │大小│              说明              │
    ├─────────┼──────────┼────┼────────────────────────────────┤
    │iftop    │V:9, I:114│94  │显示一个网络接口上的带宽使用信息│
    ├─────────┼──────────┼────┼────────────────────────────────┤
    │iperf    │V:4, I:56 │168 │互联网协议带宽测量工具          │
    ├─────────┼──────────┼────┼────────────────────────────────┤
    │ifstat   │V:0, I:10 │56  │接口统计监控                    │
    ├─────────┼──────────┼────┼────────────────────────────────┤
    │bmon     │V:1, I:14 │140 │便携式带宽监视器和网速估计工具  │
    ├─────────┼──────────┼────┼────────────────────────────────┤
    │ethstatus│V:0, I:5  │40  │快速测量网络设备吞吐的脚本      │
    ├─────────┼──────────┼────┼────────────────────────────────┤
    │bing     │V:0, I:1  │71  │实验性的随机带宽测试器          │
    ├─────────┼──────────┼────┼────────────────────────────────┤
    │bwm-ng   │V:1, I:17 │90  │小巧简单的控制台带宽监测器      │
    ├─────────┼──────────┼────┼────────────────────────────────┤
    │ethstats │V:0, I:1  │23  │基于控制台的以太网统计监视器    │
    ├─────────┼──────────┼────┼────────────────────────────────┤
    │ipfm     │V:0, I:0  │78  │带宽分析工具                    │
    └──────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.9.1. 找出最佳 MTU[;m

    最大传输单元 Maximum Transmission Unit (MTU) 的值能够通过加 "-M
    do" 选项的 [34;1mping(8)[m 实验来确定，它发送从 1500 字节（对于IP+ICMP 包
    头，有 28 字节的偏移）大小开始的 ICMP 包，来找出 IP 不分片的最大
    包大小。

    尝试下列例子

[32;1m    $ ping -c 1 -s $((1500-28)) -M do www.debian.org[;m
    PING www.debian.org (194.109.137.218) 1472(1500) bytes of data.
    From 192.168.11.2 icmp_seq=1 Frag needed and DF set (mtu = 1454)

[33m    --- www.debian.org ping statistics ---[m
    0 packets transmitted, 0 received, +1 errors

    尝试 1454 代替 1500

    你看到用 1454 [34;1mping(8)[m 成功了。

    这个过程是路径 MTU (PMTU) 发现 (RFC1191) ， [34;1mtracepath(8)[m 命令能够
    自动完成这个。

    [36;1m提示[m

    上面的列子，PMTU 的值是 1454，这是我先前的光纤到户提供商，使用了
    异步传输模式 Asynchronous Transfer Mode (ATM) 作为他们的骨干网络
    ，并使用 PPPoE 作为客户端。实际 PMTU 值依赖于你的环境，比如说，我
    新的光纤到户提供商是 1500。

    表 5.18. 最佳 MTU 值的基本指引方法

    ┌───────────────────────────────────────────────────────────────┐
    │     网络环境      │     MTU     │          基本原理           │
    ├───────────────────┼─────────────┼─────────────────────────────┤
    │拨号连接(IP: PPP)  │576          │标准的                       │
    ├───────────────────┼─────────────┼─────────────────────────────┤
    │以太网连接 (IP:    │1500         │默认标准值                   │
    │DHCP 或固定)       │             │                             │
    ├───────────────────┼─────────────┼─────────────────────────────┤
    │以太网连接 (IP:    │1492 (=      │PPP 头部 2 字节和 PPPOE 头部 │
    │PPPoE)             │1500-8)      │6 字节                       │
    ├───────────────────┼─────────────┼─────────────────────────────┤
    │以太网连接 (ISP 骨 │1462 (=      │作者推断：18 字节的以太网头，│
    │干网: ATM, IP: DHCP│48*31-18-8)  │8字节 SAR 尾（译注：SAR 为   │
    │或固定 IP)         │             │ATM 技术名词）               │
    ├───────────────────┼─────────────┼─────────────────────────────┤
    │以太网连接 (ISP 骨 │1454 (=      │参见 "Optimal MTU            │
    │干: ATM, IP: PPPoE)│48*31-8-18-8)│configuration for PPPoE ADSL │
    │                   │             │Connections" 来了解基本原理  │
    └───────────────────────────────────────────────────────────────┘


    除了这些基本的指引方法外，你还应当知道下面的信息。

[33;1m      *[;m 使用任何隧道方式(VPN 等.)的最佳 MTU 需要进一步减去它们上面的
        头部。

[33;1m      *[;m MTU 值不应当超过通过实验验证的 PMTU 值。

[33;1m      *[;m 当遇到其它限制的时候，较大的 MTU 值通常比较好。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.9.2. 设置 MTU[;m

    这里示例设置 MTU 值，从默认的 1500 设置到 1454.

    对于 DHCP (参见第 5.6.4 节 [35;1m“使用 DHCP 的网络接口”[;m), 你能够使用下
    面的方式替换 [35;1m"/etc/network/interfaces"[;m 文件里 iface 节相关的行.

    iface eth0 inet dhcp
     pre-up /sbin/ifconfig $IFACE mtu 1454

    对于静态 IP (参见第 5.6.5 节 [35;1m“使用静态 IP 地址的网络接口”[;m), 你能
    够使用下面的方式替换 [35;1m"/etc/network/interfaces"[;m 文件里 iface 节相
    关的行.

    iface eth0 inet static
     address 192.168.11.100
     netmask 255.255.255.0
     gateway 192.168.11.1
     mtu 1454
     dns-domain example.com
     dns-nameservers 192.168.11.1

    对于直接 PPPoE (参见第 5.5.5 节 “使用 pppoeconf 的 PPPoE 以太网连
    接”),你能够使用下面的方式替换 [35;1m"/etc/ppp/peers/dsl-provider"[;m 里
    [35;1m"mtu"[;m 相关的行.

    mtu 1454

    最大分片大小 (MSS) 是另外一种衡量包大小的方法。MSS 和 MTU 的关系
    如下.

[33;1m      *[;m 对于 IPv4， MSS = MTU - 40

[33;1m      *[;m 对于 IPv6，MSS = MTU - 60

    [33;1m注意[m

    基于 [34;1miptables(8)[m (参见第 5.10 节 [35;1m“Netfilter 网络过滤框架”[;m) 的优化
    ，能够通过 MSS 来压缩包大小，路由器会用到 MMS 。参见 [34;1miptables(8)[m
    中的[35;1m"TCPMSS"[;m .

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.9.3. WAN TCP 优化[;m

    TCP 吞吐量能够通过调整 TCP 缓冲大小的参数来最大化，对现代大带宽和
    高延时的 WAN，在 [35;1m"TCP Tuning Guide"[;m 和 [35;1m"TCP tuning"[;m里有描述. 到目
    前为止，当前 Debian 默认设置能够很好的服务好我的 1G bps 光纤到户
    LAN 连接。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m5.10. Netfilter 网络过滤框架[;m

    Netfilter 使用 Linux 内核模块 (参见第 3.3.1 节 [35;1m“内核模块初始化”[;m)
    提供状态防火墙和网络地址转换 (NAT) 框架。

    表 5.19. 防火墙工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包     │流行度│大小│               说明                │
    ├───────────────┼──────┼────┼───────────────────────────────────┤
    │iptables       │V:264,│1543│netfilter 管理工具([34;1miptables(8)[m 用于│
    │               │I:995 │    │IPv4, [34;1mip6tables(8)[m 用于 IPv6)      │
    ├───────────────┼──────┼────┼───────────────────────────────────┤
    │arptables      │V:0,  │86  │netfilter 管理工具([34;1marptables(8)[m 用 │
    │               │I:2   │    │于 ARP)                            │
    ├───────────────┼──────┼────┼───────────────────────────────────┤
    │ebtables       │V:39, │345 │netfilter 管理工具 ([34;1mebtables(8)[m 用 │
    │               │I:63  │    │于以太网桥)                        │
    ├───────────────┼──────┼────┼───────────────────────────────────┤
    │iptstate       │V:0,  │116 │持续性监控 netfilter 状态 (和 top  │
    │               │I:4   │    │(1) 相似)                          │
    ├───────────────┼──────┼────┼───────────────────────────────────┤
    │shorewall-init │V:0,  │79  │Shoreline 防火墙初始化             │
    │               │I:0   │    │                                   │
    ├───────────────┼──────┼────┼───────────────────────────────────┤
    │shorewall      │V:5,  │2448│Shoreline 防火墙, netfilter 配置文 │
    │               │I:14  │    │件生成器                           │
    ├───────────────┼──────┼────┼───────────────────────────────────┤
    │shorewall-lite │V:0,  │76  │Shoreline 防火墙, netfilter 配置文 │
    │               │I:0   │    │件生成器 (精简版)                  │
    ├───────────────┼──────┼────┼───────────────────────────────────┤
    │shorewall6     │V:0,  │782 │Shoreline 防火墙, netfilter 配置文 │
    │               │I:2   │    │件生成器(IPv6 版本)                │
    ├───────────────┼──────┼────┼───────────────────────────────────┤
    │shorewall6-lite│V:0,  │74  │Shoreline 防火墙, netfilter 配置文 │
    │               │I:0   │    │件生成器 (IPv6,精简版)             │
    └───────────────────────────────────────────────────────────────┘


    netfilter 主要的用户层程序是 [34;1miptables(8)[m.你能从 shell 手工交付式
    的配置 netfilter，使用 [34;1miptables-save(8)[m 保存当前状态,当系统重启时
    ，通过 init 脚本调用 [34;1miptables-restore(8)[m 来恢复。

    像 shorewall 这样的配置帮助脚本能够使这个过程变得更简单。

    参见 http://www.netfilter.org/documentation/ 上的文档(或在 "/usr/
    share/doc/iptables/html/" 里面的文档).

[33;1m      *[;m Linux Networking-concepts HOWTO

[33;1m      *[;m Linux 2.4 Packet Filtering HOWTO

[33;1m      *[;m Linux 2.4 NAT HOWTO

    [36;1m提示[m

    虽然这些是为 Linux 2.4 写的,[34;1miptables(8)[m 命令和 netfilter 内核功能
    都能够在 Linux2.6 和 3.x 内核系列实现.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 6 章 网络应用[;m

    建立网络连接后（参加第 5 章网络设置），你可以运行各种网络应用。

    [36;1m提示[m

    对于现代的 Debian 网络基础设施的具体说明，阅读 Debian 管理员手册
    —— 网络基础设施。

    [36;1m提示[m

    在某些 ISP 下，如果你启用[35;1m“两步验证”[;m，你可能需要获取一个应用密码以
    从你的程序访问 POP 和 SMTP 服务。你也可能需要事先允许你的主机 IP
    进行访问。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.1. 网页浏览器[;m

    有许多网页浏览器软件包，使用超文本传输协议（HTTP）访问远程内容。

    表 6.1. 网页浏览器列表

    ┌───────────────────────────────────────────────────────────────┐
    │     软件包     │流行度│ 大小 │类│       网络浏览器说明        │
    │                │      │      │型│                             │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │chromium        │V:70, │141861│X │Chromium，（来自 Google 的开 │
    │                │I:154 │      │  │源浏览器）                   │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │                │V:17, │      │同│Firefox，（来自 Mozilla 的开 │
    │firefox         │I:32  │153158│上│源浏览器，仅在 Debian        │
    │                │      │      │  │Unstable 中可用）            │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │firefox-esr     │V:215,│107172│同│Firefox ESR（Firefox 延长支持│
    │                │I:445 │      │上│版本）                       │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │epiphany-browser│V:7,  │1538  │同│GNOME，兼容 HIG，Epiphany    │
    │                │I:31  │      │上│                             │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │konqueror       │V:22, │20724 │同│KDE，Konqueror               │
    │                │I:111 │      │上│                             │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │dillo           │V:0,  │1500  │同│Dillo，（基于 FLTK 的轻量级浏│
    │                │I:5   │      │上│览器）                       │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │w3m             │V:114,│2303  │文│w3m                          │
    │                │I:528 │      │本│                             │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │lynx            │V:23, │1907  │同│Lynx                         │
    │                │I:107 │      │上│                             │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │elinks          │V:11, │1583  │同│ELinks                       │
    │                │I:31  │      │上│                             │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │links           │V:15, │2123  │同│Links（纯文本）              │
    │                │I:44  │      │上│                             │
    ├────────────────┼──────┼──────┼──┼─────────────────────────────┤
    │links2          │V:2,  │5366  │图│Links（没有 X 的控制台图像） │
    │                │I:16  │      │像│                             │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.1.1. 浏览器配置[;m

    在某些浏览器中，你可以使用下列特殊的 URL 来确认它们的设置。

[33;1m      *[;m [35;1m"about:"[;m

[33;1m      *[;m [35;1m"about:config"[;m

[33;1m      *[;m [35;1m"about:plugins"[;m

    Debian 提供了在 main 档案库中提供了许多自由的浏览器插件软件包，不
    仅可以处理 Java（软件平台）和 Flash，也可以处理 MPEG、MPEG2、
    MPEG4、DivX、Windows Media Video (.wmv)、QuickTime (.mov)、MP3
    (.mp3)、Ogg/Vorbis 文件、DVD、VCD 等等。Debian 也提供相关辅助程序
    ，可以用来安装来自 contrib 或 non-free 的 non-free 浏览器插件软件
    包。

    表 6.2. 浏览器插件软件包列表

    ┌───────────────────────────────────────────────────────────────┐
    │      软件包       │流行│大 │ 区域  │           说明           │
    │                   │ 度 │小 │       │                          │
    ├───────────────────┼────┼───┼───────┼──────────────────────────┤
    │icedtea-plugin     │I:22│19 │main   │基于 OpenJDK 和 IcedTea 的│
    │                   │    │   │       │Java 插件                 │
    ├───────────────────┼────┼───┼───────┼──────────────────────────┤
    │                   │V:3,│   │       │安装 Adobe Flash Player 的│
    │flashplugin-nonfree│I:80│71 │contrib│Flash 插件辅助程序（仅适用│
    │                   │    │   │       │i386、amd64）             │
    ├───────────────────┼────┼───┼───────┼──────────────────────────┤
    │browser-plugin-vlc │V:3,│202│main   │基于 VLC 媒体播放器的多媒 │
    │                   │I:15│   │       │体插件                    │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    尽管使用上述的 Debian 软件包会更容易，但你依旧可以手动启用插件，
    你需要将 [35;1m“*.so”[;m 文件安装到插件目录中（例如 “/usr/lib/iceweasel/
    plugins/”）并重启浏览器。

    有些网站拒绝基于你所使用浏览器的用户代理字符串的连接。你可以通过
    伪装用户代理字符串来解决这个问题。例如，你可以添加下面这行到用户
    配置文件中（例如 [35;1m“~/.gnome2/epiphany/mozilla/epiphany/user.js”[;m 或
    [35;1m“~/.mozilla/firefox/*.default/user.js”[;m）。

    user_pref{[35;1m"general.useragent.override"[;m,[35;1m"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"[;m};

    或者，你也可以通过输入 [35;1m“about:config”[;m 到 URL，并右击它所显示的内
    容，来添加并重置这个变量。

    [33;1m小心[m

    伪装的用户代理字符串可以会导致来自 Java 的不良副作用。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.2. 邮件系统[;m

    [33;1m小心[m

    如果你想设置邮件服务器来直接通过互联网交换邮件，你应该最好阅读一
    下这个基本文档。

    邮件系统涉及到运行在多个主机上的许多服务器程序和客户端程序。从功
    能来说，有3种类型的邮件代理程序：

[33;1m      *[;m 邮件传输代理（MTA，参见第 6.3 节 [35;1m“邮件传输代理 (MTA)”[;m），是不
        同主机之间传送邮件的程序。

[33;1m      *[;m 邮件投递代理（MDA，参见第 6.6 节 “带有过滤器的邮件投递代理
        (MDA)”），是传递信息到一台主机内的用户邮箱的程序。

[33;1m      *[;m 邮件用户代理（MUA，也被称为电子邮件客户端，参见第 6.4 节 “邮
        件用户代理 (MUA)”），是生成信息和访问传递的信息的程序。

    [33;1m注意[m

    对于那些消费者级网络连接的典型移动工作站，以下的配置例子是有效的
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.2.1. 电子邮件基础[;m

    电子邮件由三个部分组成，消息的信封，邮件标头及邮件正文。

    SMTP 用电子邮件信封上的 [35;1m"To"[;m 和 [35;1m"From"[;m 信息来投递邮件。(信封上的
    [35;1m"From"[;m 信息也被叫做退回地址, 例如 From_ 等等）。

    电子邮件头的[35;1m"To"[;m 和 [35;1m"From"[;m 信息，显示在电子邮件客户端上. (在大部
    分情况下，这些信息是跟电子邮件信封一致，但并不全是这样。）

    为了处理正文数据类型及其编码，电子邮件客户端 (MUA) 需要用多用途互
    联网邮件扩展 (MIME)来解释邮件标头和邮件正文。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.2.2. 现代邮件服务基础[;m

    为了尽可能减少垃圾邮件 (不想要的和未经请求的电子邮件) 的问题，许
    多提供消费者级互联网连接的 ISP 服务商正在采取应对措施。

[33;1m      *[;m 智能主机服务于 ISP 的客户，使用rfc4409里面规定的（587）端口发
        送邮件，并使用在rfc4954里面规定的密码(SMTP 认证服务).

[33;1m      *[;m 内部的网络主机 (除了 ISP 自己的发送邮件服务器) 连接到互联网的
        SMTP 25 端口已经被封锁了。

[33;1m      *[;m 从一些可疑的外部网络主机到 ISP 接收邮件服务器SMTP 25 端口的连
        接会被阻隔.(连接来自用于拨号和其它消费等级互联网连接的动态 IP
        地址范围,首先被阻隔.)

[33;1m      *[;m 像域名密钥识别邮件 (DKIM)、发信者策略框架 (SPF) 和基于域名的
        消息认证、报告和反应（DMARC）这样的反垃圾邮件技术广泛用于电子
        邮件过滤。

[33;1m      *[;m 域名密钥识别邮件服务可能会用于你的通过 smarthost 的电子邮件发
        送。

[33;1m      *[;m 智能主机可以在上面重写源电子邮件地址为你的邮件账户。

    当配置电子邮件系统或解决邮递问题时，你必须考虑这些新的限制。

    [33;1m小心[m

    在消费者级的网络上运行 SMTP 服务器来直接发送邮件到远端可信赖主机
    是不现实的。

    [33;1m小心[m

    期望单个智能主机可靠的发送不相关的源邮件地址到远程主机，这是不现
    实的。

    [33;1m小心[m

    一个邮件能够被任何主机静悄悄的拒绝，即使路由到了目的地。发送一个
    邮件到远程主机的可靠方法，就是使你的邮件尽可能的看起来是经过认证
    的。

    鉴于这些不利的互联网情况和限制，像 Yahoo.com 和 Gmail.com 这样的
    独立互联网邮件 ISP 提供了安全的邮件服务，使用传输层安全协议 (TLS)
    和它的前身，安全套接层协议 (SSL) 就可以在任何地方通过网络连接到这
    些邮件服务。

[33;1m      *[;m 智能主机上的 465 端口服务,是过时的在 SSL 上的 SMTP (SMTPS 协
        议).

[33;1m      *[;m 智能主机上的 587 端口服务使用 STARTTLS 协议。

[33;1m      *[;m TLS/POP3 端口 (995) 是用 POP3 协议来接受邮件的。

    为了简便起见，在接下来的文本中，我假定 smarthost 是
    [35;1m"smtp.hostname.dom"[;m, 需要 SMTP 认证并且使用带有STARTTLS 协议的信
    息发送端口 (587) 。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.2.3. 工作站的邮件配置策略[;m

    最简单的电子邮件配置是使用 MUA 发送邮件到 ISP 的 smarthost，然后
    从 ISP 的 POP3 服务器接收邮件 (参见第 6.4 节 [35;1m“邮件用户代理 (MUA)”[;m
    )。这种类型的配置流行使用全功能的基于 GUI 的 MUA，[34;1m例如icedove(1)[m
    ，[34;1mevolution(1)[m 等等。如果需要通过邮件的类型来过滤它们，你应该使用
    MUA 的过滤功能。对于这种情况，本地 MTA (参见第 6.3 节 “邮件传输代
    理 (MTA)”) 只需在本地投递 (当发送者和接收者在同一主机上)。

    请注意 Debian 是多用户系统。即使你是唯一的用户，这里仍然有许多以
    root 用户运行的程序并且它们会给你发送电子邮件。

    另外可选的邮件配置是通过本地 MTA 发送邮件到 ISP 的 smarthost，通
    过邮件检索 (参见第 6.5 节 [35;1m“远程邮件检索和转发实用工具”[;m) 从 ISP 的
    POP3 服务器接受邮件，并把邮件保存到本地邮箱。如果需要通过邮件的类
    型来过滤它们，你应该使用 MDA 的过滤功能 (参见第 6.6 节 “带有过滤
    器的邮件投递代理 (MDA)”) 来过滤邮件到单独的邮箱。这种类型的配置流
    行使用基于终端的简单 MUA，例如 [34;1mmutt(1)[m，[34;1mmew(1)[m等等，尽管使用任何
    MUA 都是可以的 (参见第 6.4 节 [35;1m“邮件用户代理 (MUA)”[;m)。对于这种情况
    ，本地 MTA (参见第 6.3 节 [35;1m“邮件传输代理 (MTA)”[;m) 需要做 smarthost
    投递和本地投递。因为移动工作站没有有效的 FQDN，你必须配置本地 MTA
    来隐藏和伪装外发邮件中的真实本地邮件名称，来避免邮件投递错误 (参
    见第 6.3.3 节 [35;1m“邮件地址配置”[;m)。

    [36;1m提示[m

    你可能想要配置 MUA/MDA 来使用 Maildir，以便存储邮件到你用户目录的
    某个位置。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.3. 邮件传输代理 (MTA)[;m

    对于一般的工作站而言，邮件传输代理 (MTA) 的主流选择是 exim4-* 或
    者 postfix 软件包，这由你决定。

    表 6.3. 用于工作站的基础的邮件传输代理相关的软件包列表

    ┌───────────────────────────────────────────────────────────────┐
    │      软件包      │ 流行度 │大小│             说明             │
    ├──────────────────┼────────┼────┼──────────────────────────────┤
    │exim4-daemon-light│V:465,  │1303│Exim4 邮件传输代理 (MTA :     │
    │                  │I:502   │    │Debian 默认的)                │
    ├──────────────────┼────────┼────┼──────────────────────────────┤
    │exim4-base        │V:474,  │1598│Exim4 文档 (文本) 和通用文件  │
    │                  │I:513   │    │                              │
    ├──────────────────┼────────┼────┼──────────────────────────────┤
    │exim4-doc-html    │I:1     │3525│Exim4 文档 (html)             │
    ├──────────────────┼────────┼────┼──────────────────────────────┤
    │exim4-doc-info    │I:1     │603 │Exim4 文档 (info)             │
    ├──────────────────┼────────┼────┼──────────────────────────────┤
    │postfix           │V:149,  │3967│Postfix 邮件传输代理 (MTA : 替│
    │                  │I:165   │    │代品)                         │
    ├──────────────────┼────────┼────┼──────────────────────────────┤
    │postfix-doc       │I:10    │4099│Postfix 文档 (html+text)      │
    ├──────────────────┼────────┼────┼──────────────────────────────┤
    │sasl2-bin         │V:6,    │414 │Cyrus SASL API 实现 (实现     │
    │                  │I:23    │    │postfix SMTP 认证)            │
    ├──────────────────┼────────┼────┼──────────────────────────────┤
    │cyrus-sasl2-doc   │I:1     │247 │Cyrus SASL - 文档             │
    └───────────────────────────────────────────────────────────────┘


    尽管在流行度投票数上，exim4-* 某些时候看起来要比 postfix 流行，但
    这并不意味着 postfix 在 Debian 开发者中不流行。Debian 服务器系统
    使用 exim4 和 postfix。著名的 Debian 开发者发到邮件列表的帖子的邮
    件标头分析的结果也表明这两种 MTA 一样受欢迎。

    exim4-* 软件包最为人所知的是，有着非常小的内存消耗和非常灵活的配
    置。postfix 软件包最为人所知的是，它的简洁、快速、简单和安全的特
    性。这两种工具都带有充足的文档，在质量和许可证上都同样是不错的。

    在 Debian 档案库里，有许多不同性能和不同关注点的邮件传输代理
    (MTA) 软件包可供选择。

    表 6.4. Debian 档案库中可供选择的邮件传输代理 (MTA) 软件包的列表

    ┌───────────────────────────────────────────────────────────────┐
    │      软件包      │  流行度   │大小│       性能和关注点        │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │exim4-daemon-light│V:465,     │1303│全功能                     │
    │                  │I:502      │    │                           │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │postfix           │V:149,     │3967│全功能 (安全)              │
    │                  │I:165      │    │                           │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │exim4-daemon-heavy│V:8, I:9   │1448│全功能 (灵活)              │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │sendmail-bin      │V:12, I:13 │1811│全功能(如果你已经对它熟悉) │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │nullmailer        │V:5, I:8   │435 │部分功能,没有本地邮件      │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │ssmtp             │V:13, I:20 │2   │部分功能,没有本地邮件      │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │courier-mta       │V:0, I:0   │2079│非常全功能(web 接口等.)    │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │masqmail          │V:0, I:0   │337 │轻量                       │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │esmtp             │V:0, I:0   │124 │轻量                       │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │esmtp-run         │V:0, I:0   │32  │轻量(sendmail 兼容扩展到   │
    │                  │           │    │esmtp)                     │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │msmtp             │V:2, I:7   │303 │轻量                       │
    ├──────────────────┼───────────┼────┼───────────────────────────┤
    │msmtp-mta         │V:1, I:1   │30  │轻量(sendmail 兼容扩展到   │
    │                  │           │    │msmtp)                     │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.3.1. exim4 的配置[;m

    [33;1m小心[m

    配置exim4 来发送互联网邮件，多个源电子邮件地址使用多个相应的智能
    主机，这是不寻常的。对于 popcon 和 cron 这样的系统程序，配置
    exim4 仅仅只使用一个电子邮件地址；对于mutt 这样的用户程序，配置
    msmtp 来使用多个源电子邮件地址。

    对于那些通过 smarthost 的网络邮件，你应该按如下所示的 (重新) 配置
    exim4-* 软件包。

[32;1m    $ sudo /etc/init.d/exim4 stop[;m
[32;1m    $ sudo dpkg-reconfigure exim4-config[;m

    配置 [35;1m"General type of mail configuration"[;m 时，选择 "mail sent by
    smarthost; received via SMTP or fetchmail"。

    设置 [35;1m"System mail name:"[;m 为默认的 FQDN (参见第 5.1.1 节 “主机名解
    析”)。

    设置 [35;1m"IP-addresses to listen on for incoming SMTP connections:"[;m
    为默认的 [35;1m"127.0.0.1; ::1"[;m。

    [35;1m"Other destinations for which mail is accepted:"[;m 选项留空。

    [35;1m"Machines to relay mail for:"[;m 选项留空。

    设置 [35;1m"IP address or host name of the outgoing smarthost:"[;m 为
    [35;1m"smtp.hostname.dom:587"[;m。

    设置 [35;1m"Hide local mail name in outgoing mail?"[;m 选项为 [35;1m"<No>"[;m。(或
    者像第 6.3.3 节 [35;1m“邮件地址配置”[;m描述的那样使用 /etc/
    email-addresses" 代替)

    选择如下所示的其中一个来回答 "Keep number of DNS-queries minimal
    (Dial-on-Demand)?"。

[33;1m      *[;m [35;1m"No"[;m 如果启动的时候，系统就连上了互联网。

[33;1m      *[;m [35;1m"Yes"[;m 如果启动的时候，系统没有连上互联网。

    设置 [35;1m"Delivery method for local mail:"[;m 选项为 "mbox format in /
    var/mail/"。

    [35;1m"Split configuration into small files?:"[;m 选项设为 [35;1m"<Yes>"[;m。

    通过修改 [35;1m"/etc/exim4/passwd.client"[;m 文件，来创建用于 smarthost 的
    密码条目。

[32;1m    $ sudo vim /etc/exim4/passwd.client[;m
     ...
[32;1m    $ cat /etc/exim4/passwd.client[;m
    ^smtp.*\.hostname\.dom:username@hostname.dom:password

    通过如下所示的启动 exim4。

[32;1m    $ sudo /etc/init.d/exim4 start[;m

    [35;1m"/etc/exim4/passwd.client"[;m 文件中的主机名不应该是别名，你应该按如
    下所示的检查真正的主机名。

[32;1m    $ host smtp.hostname.dom[;m
    smtp.hostname.dom is an alias for smtp99.hostname.dom.
    smtp99.hostname.dom has address 123.234.123.89

    我在 [35;1m"/etc/exim4/passwd.client"[;m 文件中使用正则表达式来绕过别名问
    题。即使 ISP 更改了别名所指向的主机名，SMTP AUTH 还是可能工作的。

    你能够通过如下所示的手动更新 exim4 配置:

[33;1m      *[;m 更新 [35;1m"/etc/exim4/"[;m 目录下的 exim4 配置文件。

[33;1m          +[;m 创建 [35;1m"/etc/exim4/exim4.conf.localmacros"[;m 来设置宏命令和修
            改 [35;1m"/etc/exim4/exim4.conf.template"[;m 文件。(没有分割的配置
            ）

[33;1m          +[;m 在 ”/etc/exim4/exim4.conf.d" 子目录中创建新文件或编辑已存
            在的文件。(分割的配置）

[33;1m      *[;m 运行 [35;1m"invoke-rc.d exim4 reload"[;m 命令。

    请阅读 [35;1m"/usr/share/doc/exim4-base/README.Debian.gz"[;m 官方指导和
    update-exim4.[34;1mconf(8)[m。

    [33;1m小心[m

    如果 debconf 询问 "Keep number of DNS-queries minimal
    (Dial-on-Demand)?[35;1m" 这个问题时，选择了 "[;mNo" (默认值)，那么启动
    exim4 会花很长时间并且系统在启动的时候不会连接到互联网。

    [31;1m警告[m

    虽然你的 ISP 允许，但是使用没有加密的明文密码是不安全的。

    [36;1m提示[m

    尽管推荐在 587 端口上使用 STARTTLS 的 SMTP 协议，但是有些 ISP 仍
    然使用废弃的 SMTPS 协议 (在 465 端口上的 SSL)。4.77 版本以后的
    Exim4 支持在客户端和服务器上的废弃 SMTPS 协议。

    [36;1m提示[m

    如果你正在为笔记本电脑寻找一个遵守 [35;1m"/etc/aliases"[;m 规则的轻量 MTA
    ，你应该考虑配置 [34;1mexim4(8)[m，在 [35;1m"/etc/default/exim4"[;m 文件中写入
    [35;1m"QUEUERUNNER=[35;1m'queueonly'[;m"[;m，[35;1m"QUEUERUNNER=[35;1m'nodaemon'[;m"[;m 等等。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.3.2. 带有 SASL 的 postfix 配置[;m

    对于通过 smarthost 的网络邮件，你应该首先阅读 postfix 文档和关键
    的手册页。

    表 6.5. 重要的 postfix 手册页列表

    ┌───────────────────────────────────┐
    │    命令    │         功能         │
    ├────────────┼──────────────────────┤
    │[34;1mpostfix(1)[m  │Postfix 控制程序      │
    ├────────────┼──────────────────────┤
    │[34;1mpostconf(1)[m │Postfix 配置工具      │
    ├────────────┼──────────────────────┤
    │[34;1mpostconf(5)[m │Postfix 配置参数      │
    ├────────────┼──────────────────────┤
    │[34;1mpostmap(1)[m  │Postfix 查找表维护    │
    ├────────────┼──────────────────────┤
    │[34;1mpostalias(1)[m│Postfix 别名数据库维护│
    └───────────────────────────────────┘


    你应该按如下所示的 (重新) 配置 postfix 和 sasl2-bin 软件包。

[32;1m    $ sudo /etc/init.d/postfix stop[;m
[32;1m    $ sudo dpkg-reconfigure postfix[;m

    选择 [35;1m"Internet with smarthost"[;m。

    设置 [35;1m"SMTP relay host (blank for none):"[;m 为 "
    [smtp.hostname.dom]:587" 并按如下所示配置。

[32;1m    $ sudo postconf -e 'smtp_sender_dependent_authentication = yes'[;m
[32;1m    $ sudo postconf -e 'smtp_sasl_auth_enable = yes'[;m
[32;1m    $ sudo postconf -e 'smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd'[;m
[32;1m    $ sudo postconf -e 'smtp_sasl_type = cyrus'[;m
[32;1m    $ sudo vim /etc/postfix/sasl_passwd[;m

    为 smarthost 创建密码条目。

[32;1m    $ cat /etc/postfix/sasl_passwd[;m
    [smtp.hostname.dom]:587     username:password
[32;1m    $ sudo postmap hush:/etc/postfix/sasl_passwd[;m

    通过如下所示的启动 postfix。

[32;1m    $ sudo /etc/init.d/postfix start[;m

    dpkg-reconfigure 会话中使用的 [35;1m"["[;m 和 [35;1m"]"[;m 和 "/etc/postfix/
    sasl_passwd" 确保不去检查 MX 记录而是直接使用指定的明确主机名。参
    见 [35;1m"/usr/share/doc/postfix/html/SASL_README.html"[;m 里面的
    [35;1m"Enabling SASL authentication in the Postfix SMTP client"[;m 条目。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.3.3. 邮件地址配置[;m

    这里有一些用于邮件传输、投递和用户代理的邮件地址配置文件。

    表 6.6. 与邮件地址相关的配置文件列表

    ┌───────────────────────────────────────────────────────────────┐
    │     文件      │      功能       │            应用             │
    ├───────────────┼─────────────────┼─────────────────────────────┤
    │/etc/mailname  │用于 (外发) 邮件 │Debian 专用的，[34;1mmailname(5)[m   │
    │               │的默认主机名     │                             │
    ├───────────────┼─────────────────┼─────────────────────────────┤
    │/etc/          │用于外发邮件的主 │[34;1mexim(8)[m 专用的，             │
    │email-addresses│机名伪装         │[34;1mexim4-config_files(5)[m        │
    ├───────────────┼─────────────────┼─────────────────────────────┤
    │/etc/postfix/  │用于外发邮件的主 │[34;1mpostfix(1)[m 专用的，[34;1mpostmap(1)[m│
    │generic        │机名伪装         │命令执行后激活。             │
    ├───────────────┼─────────────────┼─────────────────────────────┤
    │/etc/aliases   │用于接收邮件的账 │通用的，[34;1mnewaliases(1)[m 命令执 │
    │               │户别名           │行后激活。                   │
    └───────────────────────────────────────────────────────────────┘


    [35;1m"/etc/mailname"[;m 文件中的 mailname 通常是全称域名 (FQDN)，这个全程
    域名将会被解析成主机的 IP 地址。对于没有可解析成 IP 地址的主机名
    的移动工作站，设置 mailname 为 [35;1m"hostname -f"[;m 的值。(这对于
    exim4-* 和 postfix 都是安全有效的选择。)

    [36;1m提示[m

    [35;1m"/etc/mailname"[;m 中的内容被许多非 MTA 程序用作它们的默认行为。对于
    mutt, 在~/muttrc 文件中设置 [35;1m"hostname"[;m 和 [35;1m"from"[;m 变量来覆盖
    mailname 值。对于 devscripts 软件包的程序，例如 [34;1mbts(1)[m 和 [34;1mdch(1)[m
    ，导出环境变量 [35;1m"$DEBFULLNAME"[;m 和 [35;1m"$DEBEMAIL"[;m 的值来覆盖它。

    [36;1m提示[m

    popularity-contest 软件包一般以 FQDN 形式的 root 账户发送邮件。你
    需要像 /usr/share/popularity-contest/default.conf 文件中描述的那
    样去设置 /etc/popularity-contest.conf 文件中的 MAILFROM 值。否则
    ，你的邮件会被 smarthost SMTP 服务器拒绝。尽管这些过程很乏味，这
    种方法比为所有通过 MTA 并且是以 root 用户发送的邮件重写源地址更安
    全。这也可以被其他守护进程或者是 cron 脚本使用。

    当设置 mailname 为 [35;1m"hostname -f"[;m 的值时，通过 MTA 的源邮件地址的
    伪装可以通过如下所示的来实现。

[33;1m      *[;m 用于 [34;1mexim4(8)[m 的 [35;1m"/etc/email-addresses"[;m 文件，
        [34;1mexim4-config_files(5)[m 手册页中有关于它的解释

[33;1m      *[;m 用于 [34;1mpostfix(1)[m 的 [35;1m"/etc/postfix/generic"[;m 文件，[34;1mgeneric(5)[m 手
        册页中有关于它的解释

    对于 postfix，接下来的额外步骤需要执行。

[31;1m    # postmap hash:/etc/postfix/generic[;m
[31;1m    # postconf -e 'smtp_generic_maps = hash:/etc/postfix/generic'[;m
[31;1m    # postfix reload[;m

    你能够通过如下所示的来测试邮件地址配置。

[33;1m      *[;m [34;1mexim(8)[m 用 -brw, -bf, -bF, -bV, ... 选项

[33;1m      *[;m [34;1mpostmap(1)[m 用 -q 选项。

    [36;1m提示[m

    Exim 带有一些有用的程序，例如 [34;1mexiqgrep(8)[m 和 [34;1mexipick(8)[m。参见
    [35;1m"dpkg -L exim4-base|grep man8/"[;m 来获得可用的命令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.3.4. 基础 MTA 操作[;m

    这里有一些基础的 MTA 操作。有一些可能会通过 [34;1msendmail(1)[m 的兼容性
    接口来实现。

    表 6.7. 基础 MTA 操作列表

    ┌───────────────────────────────────────────────────────────────┐
    │ exim 命令  │      postfix 命令       │          说明          │
    ├────────────┼─────────────────────────┼────────────────────────┤
    │sendmail    │sendmail                 │从标准输入读取邮件并且安│
    │            │                         │排投递 (-bm)            │
    ├────────────┼─────────────────────────┼────────────────────────┤
    │mailq       │mailq                    │列出带有状态和队列 ID 的│
    │            │                         │邮件队列 (-bq)          │
    ├────────────┼─────────────────────────┼────────────────────────┤
    │newaliases  │newaliases               │初始化别名数据库 (-I)   │
    ├────────────┼─────────────────────────┼────────────────────────┤
    │exim4 -q    │postqueue -f             │刷新等待邮件 (-q)       │
    ├────────────┼─────────────────────────┼────────────────────────┤
    │exim4 -qf   │postsuper -r ALL         │刷新所有邮件            │
    │            │deferred; postqueue -f   │                        │
    ├────────────┼─────────────────────────┼────────────────────────┤
    │exim4 -qff  │postsuper -r ALL;        │刷新甚至已经冻结的邮件  │
    │            │postqueue -f             │                        │
    ├────────────┼─────────────────────────┼────────────────────────┤
    │exim4 -Mg   │postsuper -h queue_id    │通过邮件的队列 ID 来冻结│
    │queue_id    │                         │它                      │
    ├────────────┼─────────────────────────┼────────────────────────┤
    │exim4 -Mrm  │postsuper -d queue_id    │通过邮件的队列 ID 来移除│
    │queue_id    │                         │它                      │
    ├────────────┼─────────────────────────┼────────────────────────┤
    │N/A         │postsuper -d ALL         │移除所有邮件            │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    往 [35;1m"/etc/ppp/ip-up.d/*"[;m 里写一个刷新所有邮件的脚本会是个不错的主
    意。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.4. 邮件用户代理 (MUA)[;m

    如果你订阅了 Debian 相关的邮件列表，使用像 mutt 和 mew 这样的 MUA
    会是个不错主意，同时对用户来说，它们也是事实上的标准并且可以像预
    期的那样工作良好。

    表 6.8. 邮件用户代理列表 (MUA)

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包   │ 流行度 │ 大小 │               类型                │
    ├───────────┼────────┼──────┼───────────────────────────────────┤
    │evolution  │V:40,   │449   │X GUI 程序 (GNOME3, groupware 套件)│
    │           │I:270   │      │                                   │
    ├───────────┼────────┼──────┼───────────────────────────────────┤
    │thunderbird│V:64,   │107302│X GUI 程序 (GNOME2, 无品牌的       │
    │           │I:139   │      │Mozilla Thunderbird)               │
    ├───────────┼────────┼──────┼───────────────────────────────────┤
    │kmail      │V:44,   │17210 │X GUI 程序 (KDE)                   │
    │           │I:96    │      │                                   │
    ├───────────┼────────┼──────┼───────────────────────────────────┤
    │mutt       │V:122,  │5980  │很有可能与 vim 一起使用的字符终端程│
    │           │I:536   │      │序                                 │
    ├───────────┼────────┼──────┼───────────────────────────────────┤
    │mew        │V:0, I:0│2322  │(x)emacs 下的字符终端程序          │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.4.1. 基础 MUA — Mutt[;m

    按如下所示的自定义 [35;1m"~/.muttrc"[;m ，与 vim 结合使用邮件用户代理
    (MUA) 软件 mutt。

[31;1m    #[;m
[31;1m    # User configuration file to override /etc/Muttrc[;m
[31;1m    #[;m
[31;1m    # spoof source mail address[;m
    set use_from
    set hostname=example.dom
    set from=[35;1m"Name Surname <username@example.dom>"[;m
    set signature=[35;1m"~/.signature"[;m

[31;1m    # vim: "gq" to reformat quotes[;m
    set editor=[35;1m"vim -c [35;1m'set tw=72 et ft=mail'[;m"[;m

[31;1m    # "mutt" goes to Inbox, while "mutt -y" lists mailboxes[;m
    set mbox_type=Maildir           # use qmail Maildir format for creating mbox
    set mbox=~/Mail                 # keep all mail boxes in $HOME/Mail/
    set spoolfile=+Inbox            # mail delivered to $HOME/Mail/Inbox
    set record=+Outbox              # save fcc mail to $HOME/Mail/Outbox
    set postponed=+Postponed        # keep postponed in $HOME/Mail/postponed
    set move=no                     # do not move Inbox items to mbox
    set quit=ask-yes                # do not quit by [35;1m"q"[;m only
    set delete=yes                  # always delete w/o asking while exiting
    set fcc_clear                   # store fcc as non encrypted

[31;1m    # Mailboxes in Maildir (automatic update)[;m
    mailboxes `cd ~/Mail; /bin/ls -1|sed -e [35;1m's/^/+/'[;m | tr [35;1m"\n"[;m [35;1m" "[;m`
    unmailboxes Maillog *.ev-summary

[31;1m    ## Default[;m
[31;1m    #set index_format="%4C %Z %{%b %d} %-15.15L (%4l) %s"[;m
[31;1m    ## Thread index with senders (collapse)[;m
    set index_format=[35;1m"%4C %Z %{%b %d} %-15.15n %?M?(#%03M)&(%4l)? %s"[;m

[31;1m    ## Default[;m
[31;1m    #set folder_format="%2C %t %N %F %2l %-8.8u %-8.8g %8s %d %f"[;m
[31;1m    ## just folder names[;m
    set folder_format=[35;1m"%2C %t %N %f"[;m

    增加下面的内容到[35;1m"/etc/mailcap"[;m 或 [35;1m"~/.mailcap"[;m 来内镶显示 HTML 邮
    件和微软 Word 附件.

    text/html; lynx -force_html %s; needsterminal;
    application/msword; /usr/bin/antiword [35;1m'%s'[;m; copiousoutput; description=[35;1m"Microsoft Word Text"[;m; nametemplate=%s.doc

    [36;1m提示[m

    Mutt 能够作为 IMAP 客户端和 mailbox 格式转换器.你可以使用[35;1m"t"[;m, [35;1m"T"[;m
    等标识邮件.这些标识的邮件能够使用[35;1m";C"[;m在不同的邮箱之间拷贝,并可以
    使用[35;1m";d"[;m 来一次性删除.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.4.2. 高级 MUA — Mutt + msmtp[;m

    Mutt 能够使用 msmtp 来配置多个源电子邮件地址使用多个相应的智能主
    机。

    [36;1m提示[m

    Msmtp 是一个 sendmail 模拟器，它允许和其它提供 /usr/sbin/sendmail
    命令的 sendmail 模拟器一起安装。所以你可以保留你系统上的邮件系统
    为 exim4 或 postfix。

    让我们考虑支持 3 个电子邮件地址作为例子：

[33;1m      *[;m [35;1m"My Name1 <myaccount1@gmail.com>"[;m

[33;1m      *[;m [35;1m"My Name2 <myaccount2@gmail.com>"[;m

[33;1m      *[;m [35;1m"My Name3 <myaccount3@example.org>"[;m

    一个定制的 ~/.muttrc 例子，支持 3 个智能主机用于 3 个不同的源电子
    邮件地址。

    set use_from
    set from=[35;1m"My Name3 <myaccount3@example.org>"[;m
    set reverse_name
    alternates myaccount1@gmail\.com|myaccount1@gmail\.com|myaccount3@example\.org

[31;1m    # ...[;m

[31;1m    # MACRO[;m
    macro compose [35;1m"1"[;m [35;1m"<edit-from>^UMy Name1 \<myaccount1@gmail.com\>\n"[;m
    macro compose [35;1m"2"[;m [35;1m"<edit-from>^UMy Name2 \<myaccount2@gmail.com\>\n"[;m
    macro compose [35;1m"3"[;m [35;1m"<edit-from>^UMy Name3 \<myaccount3@example.org\>\n"[;m

[33m    send2-hook [35;1m'~f myaccount1@gmail.com'[;m [35;1m"set sendmail = [35;1m'/usr/bin/msmtp --read-envelope-from'[;m"[;m[m
[33m    send2-hook [35;1m'~f myaccount2@gmail.com'[;m [35;1m"set sendmail = [35;1m'/usr/bin/msmtp --read-envelope-from'[;m"[;m[m
[33m    send2-hook [35;1m'~f myaccount3@example.org'[;m [35;1m"set sendmail = [35;1m'/usr/bin/msmtp --read-envelope-from'[;m"[;m[m

[31;1m    # ...[;m

    让我们来安装 msmtp-gnome 并按下面的方式设置 ~/.msmtprc。

    defaults
    logfile ~/.msmtp.log
    domain myhostname.example.org
    tls on
    tls_starttls on
    tls_certcheck on
    tls_trust_file /etc/ssl/certs/ca-certificates.crt
    auth on
    port 587
    auto_from

    account myaccount1@gmail.com
    host smtp.gmail.com
    from  myaccount1@gmail.com
    user  myaccount1@gmail.com

    account myaccount2@gmail.com
    host smtp.gmail.com
    from  myaccount2@gmail.com
    user  myaccount2@gmail.com

    account myaccount3@example.org
    host mail.example.org
    from  myaccount3@example.org
    user  myaccount3@example.org

    account default : myaccount3@example.org

    然后，增加密码数据到 Gnome 钥匙环。例如：

[33m[32;1m     $ secret-tool store --label=msmtp \[;m[m
         host smtp.gmail.com \
         service smtp \
         user myaccount1@gmail.com
     ...

    [36;1m提示[m

    如果你不想使用 Gnome 钥匙环，你可以通过安装 msmtp 软件包来代替，
    在 ~/.msmtprc 文件里面，给每一个账号增加一个类似 "password
    secret123" 的条目。更多信息请参见 memtp 文档。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.5. 远程邮件检索和转发实用工具[;m

    而不是手动运行 MUA 去访问远程邮件并去处理它们，你可能希望自动化这
    些过程，然后把所有邮件都投递到本地。远程邮件检索和转发实用工具很
    适合你使用。

    尽管 [34;1mfetchmail(1)[m 已经成为 GNU/Linux 用于远程邮件检索的事实上的标
    准，作者现在还是喜欢 [34;1mgetmail(1)[m。如果你想要在下载邮件之前拒绝邮件
    来达到节省带宽的目的，mailfilter 或 mpop 工具可能是很有用的。不管
    使用哪种邮件检索实用程序，配置系统使之能够投递已检索的邮件到 MDA
    会是个不错的主意，例如通过管道的 maildrop。

    表 6.9. 远程邮件检索和转发实用程序列表

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包  │流行度 │大小│                 说明                  │
    ├──────────┼───────┼────┼───────────────────────────────────────┤
    │fetchmail │V:7,   │2343│邮件检索 (POP3, APOP, IMAP) (旧的)     │
    │          │I:19   │    │                                       │
    ├──────────┼───────┼────┼───────────────────────────────────────┤
    │getmail4  │V:4,   │32  │邮件检索 (POP3, IMAP4 和 SDPS) (简单、 │
    │          │I:11   │    │安全和可靠)                            │
    ├──────────┼───────┼────┼───────────────────────────────────────┤
    │mailfilter│V:0,   │271 │有正则表达式过滤功能的邮件检索 (POP3)  │
    │          │I:0    │    │                                       │
    ├──────────┼───────┼────┼───────────────────────────────────────┤
    │mpop      │V:0,   │226 │邮件检索 (POP3) 和带有过滤功能的 MDA   │
    │          │I:0    │    │                                       │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.5.1. getmail 配置[;m

    [34;1mgetmail(1)[m 的配置在getmail documentation里描述.这里是我作为用户搭
    建访问多个 POP3帐号.

    按如下所示的创建 [35;1m"/usr/local/bin/getmails"[;m。

[31;1m    #!/bin/sh[;m
    set -e
    if [ -f $HOME/.getmail/running ]; then
      echo [35;1m"getmail is already running ... (if not, remove $HOME/.getmail/running)"[;m >&2
      pgrep -l [35;1m"getmai[l]"[;m
      exit 1
    else
      echo [35;1m"getmail has not been running ... "[;m >&2
    fi
    if [ -f $HOME/.getmail/stop ]; then
      echo [35;1m"do not run getmail ... (if not, remove $HOME/.getmail/stop)"[;m >&2
      exit
    fi
    if [ [35;1m"x$1"[;m = [35;1m"x-l"[;m ]; then
      exit
    fi
    rcfiles=[35;1m"/usr/bin/getmail"[;m
    for file in $HOME/.getmail/config/* ; do
[33m      rcfiles=[35;1m"$rcfiles --rcfile $file"[;m[m
    done
    date -u > $HOME/.getmail/running
    eval [35;1m"$rcfiles $@"[;m
    rm $HOME/.getmail/running

    按如下所示的配置它。

[32;1m    $ sudo chmod 755 /usr/local/bin/getmails[;m
[32;1m    $ mkdir -m 0700 $HOME/.getmail[;m
[32;1m    $ mkdir -m 0700 $HOME/.getmail/config[;m
[32;1m    $ mkdir -m 0700 $HOME/.getmail/log[;m

    按如下所示的为每个 POP3 账户创建 "$HOME/.getmail/config/
    pop3_name" 配置文件。

    [retriever]
    type = SimplePOP3SSLRetriever
    server = pop.example.com
    username =  pop3_name@example.com
    password = <your-password>

    [destination]
    type = MDA_external
    path = /usr/bin/maildrop
    unixfrom = True

    [options]
    verbose = 0
    delete = True
    delivered_to = False
    message_log = ~/.getmail/log/pop3_name.log

    按如下所示的配置它。

[32;1m    $ chmod 0600 $HOME/.getmail/config/*[;m

    计划使用 [34;1mcron(8)[m 每 15 分钟运行一次 [35;1m"/usr/local/bin/getmails"[;m，通
    过执行 [35;1m"sudo crontab -e -u <user_name>"[;m 并把如下所示的命令添加到
    用户的 cron 条目中。

[33m    5,20,35,50 * * * * /usr/local/bin/getmails --quiet[m

    [36;1m提示[m

    POP3 访问的问题可能并不来自于 getmail。一些主流的免费 POP3 服务可
    能违反了 POP3 协议并且它们的垃圾邮件过滤机制可能不是非常完美。例
    如，它们可能在刚刚接收到 RETR 命令并且没有接收到 DELE 命令就可能
    删除了邮件并且可能隔离邮件到垃圾邮件信箱。你应该尽可能的减少损害
    ，通过配置它们使之成为可访问的归档文件并且不要删除它们。参见
    [35;1m"Some mail was not downloaded"[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.5.2. fetchmail 配置[;m

    [35;1m"/etc/default/fetchmail"[;m，[35;1m"/etc/fetchmailrc"[;m 和 "$HOME
    /.fetchmailrc[35;1m" 可以配置 [34;1mfetchmail(1)[m。参见 "[;m/usr/share/doc/
    fetchmail/examples/fetchmailrc.example" 配置例子。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.6. 带有过滤器的邮件投递代理 (MDA)[;m

    大多数 MTA 程序，例如 postfix 和 exim4，兼任 MDA (邮件投递代理)。
    这里有专门的带有过滤功能的 MDA。

    尽管 [34;1mprocmail(1)[m 已经成为 GUN/Linux 上关于带有过滤器的 MDA 的事实
    标准，作者现在还是喜欢 [34;1mmaildrop(1)[m。不管使用哪种过滤程序，配置系
    统使之能投递已过滤的邮件到 qmail 风格的 Maildir 都是一个好主意。

    表 6.10. 有过滤器的 MDA 列表

    ┌─────────────────────────────────────────────────┐
    │ 软件包  │  流行度   │大小│         说明         │
    ├─────────┼───────────┼────┼──────────────────────┤
    │procmail │V:62, I:531│300 │有过滤器的 MDA (旧的) │
    ├─────────┼───────────┼────┼──────────────────────┤
    │mailagent│V:0, I:10  │1283│带有 Perl 过滤器的 MDA│
    ├─────────┼───────────┼────┼──────────────────────┤
    │maildrop │V:1, I:3   │1140│有结构化过滤语言的 MDA│
    └─────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.6.1. maildrop 配置[;m

    [34;1mmaildrop(1)[m 配置在 maildropfilter documentation 中有说明。这里有
    一个关于 "$HOME/.mailfilter 文件的配置例子。

[31;1m    # Local configuration[;m
    MAILROOT=[35;1m"$HOME/Mail"[;m
[31;1m    # set this to /etc/mailname contents[;m
    MAILHOST=[35;1m"example.dom"[;m
    logfile $HOME/.maildroplog

[31;1m    # rules are made to override the earlier value by the later one.[;m

[31;1m    # mailing list mails ?[;m
    if (     /^Precedence:.*list/:h || /^Precedence:.*bulk/:h )
    {
[31;1m        # rules for mailing list mails[;m
[31;1m        # default mailbox for mails from mailing list[;m
        MAILBOX=[35;1m"Inbox-list"[;m
[31;1m        # default mailbox for mails from debian.org[;m
        if ( /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h )
        {
            MAILBOX=[35;1m"service.debian.org"[;m
        }
[31;1m        # default mailbox for mails from bugs.debian.org (BTS)[;m
        if ( /^(Sender|Resent-From|Resent-sender): .*@bugs.debian.org/:h )
        {
            MAILBOX=[35;1m"bugs.debian.org"[;m
        }
[31;1m        # mailbox for each properly maintained mailing list with "List-Id: foo" or "List-Id: ...<foo.bar>"[;m
        if ( /^List-Id: ([^<]*<)?([^<>]*)>?/:h )
        {
            MAILBOX=[35;1m"$MATCH2"[;m
        }
    }
    else
    {
[31;1m        # rules for non-mailing list mails[;m
[31;1m        # default incoming box[;m
        MAILBOX=[35;1m"Inbox-unusual"[;m
[31;1m        # local mails[;m
        if ( /Envelope-to: .*@$MAILHOST/:h )
        {
            MAILBOX=[35;1m"Inbox-local"[;m
        }
[31;1m        # html mails (99% spams)[;m
        if ( /DOCTYPE html/:b ||\
             /^Content-Type: text\/html/ )
        {
            MAILBOX=[35;1m"Inbox-html"[;m
        }
[31;1m        # blacklist rule for spams[;m
        if ( /^X-Advertisement/:h ||\
             /^Subject:.*BUSINESS PROPOSAL/:h ||\
             /^Subject:.*URGENT.*ASISSTANCE/:h ||\
             /^Subject: *I NEED YOUR ASSISTANCE/:h )
        {
            MAILBOX=[35;1m"Inbox-trash"[;m
        }
[31;1m        # whitelist rule for normal mails[;m
        if ( /^From: .*@debian.org/:h ||\
             /^(Sender|Resent-From|Resent-Sender): .*debian.org/:h ||\
             /^Subject: .*(debian|bug|PATCH)/:h )
        {
            MAILBOX=[35;1m"Inbox"[;m
        }
[31;1m        # whiltelist rule for BTS related mails[;m
        if ( /^Subject: .*Bug#.*/:h ||\
             /^(To|Cc): .*@bugs.debian.org/:h )
        {
            MAILBOX=[35;1m"bugs.debian.org"[;m
        }
[31;1m        # whitelist rule for getmails cron mails[;m
        if ( /^Subject: Cron .*getmails/:h )
        {
            MAILBOX=[35;1m"Inbox-getmails"[;m
        }
    }

[31;1m    # check existance of $MAILBOX[;m
    `test -d $MAILROOT/$MAILBOX`
    if ( $RETURNCODE == 1 )
    {
[31;1m        # create maildir mailbox for $MAILBOX[;m
        `maildirmake $MAILROOT/$MAILBOX`
    }
[31;1m    # deliver to maildir $MAILBOX[;m
    to [35;1m"$MAILROOT/$MAILBOX/"[;m
    exit

    [31;1m警告[m

    不像 procmail，maildrop 不会自动创建不存在的 maildir 目录。你必须
    提前使用 [34;1mmaildirmake(1)[m 手动创建它们，正如 [35;1m"$HOME/.mailfilter"[;m 例
    子里的那样。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.6.2. procmail 配置[;m

    这里有一个 [34;1mprocmail(1)[m 的 [35;1m"$HOME/.procmailrc"[;m 文件的类似配置例子
    。

    MAILDIR=$HOME/Maildir
    DEFAULT=$MAILDIR/Inbox/
    LOGFILE=$MAILDIR/Maillog
[31;1m    # clearly bad looking mails: drop them into X-trash and exit[;m
    :0
[33;1m    *[;m 1^0 ^X-Advertisement
[33;1m    *[;m 1^0 ^Subject:.*BUSINESS PROPOSAL
[33;1m    *[;m 1^0 ^Subject:.*URGENT.*ASISSTANCE
[33;1m    *[;m 1^0 ^Subject: *I NEED YOUR ASSISTANCE
    X-trash/

[31;1m    # Delivering mailinglist messages[;m
    :0
[33;1m    *[;m 1^0 ^Precedence:.*list
[33;1m    *[;m 1^0 ^Precedence:.*bulk
[33;1m    *[;m 1^0 ^List-
[33;1m    *[;m 1^0 ^X-Distribution:.*bulk
    {
    :0
[33;1m    *[;m 1^0 ^Return-path:.*debian-devel-admin@debian.or.jp
    jp-debian-devel/

    :0
[33;1m    *[;m ^Resent-Sender.*debian-user-request@lists.debian.org
    debian-user/

    :0
[33;1m    *[;m ^Resent-Sender.*debian-devel-request@lists.debian.org
    debian-devel/

    :0
[33;1m    *[;m ^Resent-Sender.*debian-announce-request@lists.debian.org
    debian-announce

    :0
    mailing-list/
    }

    :0
    Inbox/

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.6.3. 重新投递 mbox 内容[;m

    如果你的家目录已经满了并且 [34;1mprocmail(1)[m 失败了，你需要从 "/var/
    mail/<username>" 目录手动投递邮件到家目录下的已分类好的邮箱中。家
    目录有空闲空间以后，运行如下命令。

[31;1m    # /etc/init.d/${MAILDAEMON} stop[;m
[31;1m    # formail -s procmail </var/mail/<username>[;m
[31;1m    # /etc/init.d/${MAILDAEMON} start[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.7. POP3/IMAP4 服务器[;m

    如果将要在局域网上运行一个私有服务器，你应该考虑运行 POP3 / IMAP4
    服务器，用来投递邮件到局域网客户端。

    表 6.11. POP3/IMAP4 服务器列表

    ┌───────────────────────────────────────────────────────────────┐
    │   软件包   │流行 │大 │类型│               说明                │
    │            │ 度  │小 │    │                                   │
    ├────────────┼─────┼───┼────┼───────────────────────────────────┤
    │courier-pop │V:3, │240│POP3│Courier 邮件服务器 - POP3 服务器   │
    │            │I:4  │   │    │(只有 maildir 格式)                │
    ├────────────┼─────┼───┼────┼───────────────────────────────────┤
    │cyrus-pop3d │V:0, │147│POP3│Cyrus 邮件系统 (支持 POP3)         │
    │            │I:0  │   │    │                                   │
    ├────────────┼─────┼───┼────┼───────────────────────────────────┤
    │courier-imap│V:5, │545│IMAP│Courier 邮件服务器 - IMAP 服务器   │
    │            │I:6  │   │    │(只支持 maildir 格式)              │
    ├────────────┼─────┼───┼────┼───────────────────────────────────┤
    │cyrus-imapd │V:0, │332│IMAP│Cyrus 邮件系统 (支持 IMAP)         │
    │            │I:1  │   │    │                                   │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.8. 打印服务和工具[;m

    在老的类 Unix 系统，BSD Line printer daemon 行打印机后台守护是标
    准。因此，在类 Unix 系统中，自由软件的标准打印输出格式是
    PostScript，为了能够打印到非 PostScript 打印机，需要将一些过滤器
    系统和 Ghostscript 一道使用。

    近来, Common UNIX Printing System 通用 UNIX 打印系统 (CUPS) 是新
    的事实标准。CUPS 使用 Internet Printing Protocol 互联网打印协议
    (IPP). IPP 现在已经被其它操作系统，如 Windows XP 和 Mac OS X，支
    持。它已经变成新的具备双向通信能力的跨平台远程打印的事实标准。

    Debian 系统上的应用程序的标准打印数据格式是 PostScript (PS) ，它
    是一个页描述语言。PS 格式的数据被送到 Ghostscript PostScript 解释
    器来生成特定的打印机可打印的数据。参见第 11.4.1 节 [35;1m“Ghostscript”[;m.

    幸亏有 CUPS 系统的文件格式依赖自动转化特征，简单的发送任何数据到
    lpr 命令，都将产生期望的打印输出。(在 CUPS 里, lpr 能够通过安装
    cups-bsd 软件包来获取.)

    Debian 系统有一些不错的软件包用于打印服务和作为打印工具。

    表 6.12. 打印服务和工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │         软件包          │流行度│大小│ 端口  │      说明       │
    ├─────────────────────────┼──────┼────┼───────┼─────────────────┤
    │                         │V:6,  │    │printer│BSD lpr/lpd (线性│
    │lpr                      │I:7   │324 │(515)  │打印机后台守护进 │
    │                         │      │    │       │程 daemon)       │
    ├─────────────────────────┼──────┼────┼───────┼─────────────────┤
    │lprng                    │V:0,  │3852│同上   │, , (增强)       │
    │                         │I:1   │    │       │                 │
    ├─────────────────────────┼──────┼────┼───────┼─────────────────┤
    │cups                     │V:248,│767 │IPP    │互联网打印 CUPS  │
    │                         │I:439 │    │(631)  │服务器           │
    ├─────────────────────────┼──────┼────┼───────┼─────────────────┤
    │                         │      │    │       │用于 CUPS 的     │
    │                         │      │    │       │System V 打印机命│
    │                         │      │    │       │令: [34;1mlp(1)[m, lpstat│
    │cups-client              │V:60, │481 │同上   │(1), [34;1mlpoptions(1)[m│
    │                         │I:495 │    │       │, [34;1mcancel(1)[m,     │
    │                         │      │    │       │[34;1mlpmove(8)[m, lpinfo│
    │                         │      │    │       │(8), [34;1mlpadmin(8)[m, │
    │                         │      │    │       │…                │
    ├─────────────────────────┼──────┼────┼───────┼─────────────────┤
    │                         │      │    │       │用于 CUPS 的 BSD │
    │cups-bsd                 │V:38, │115 │同上   │打印机命令: lpr  │
    │                         │I:425 │    │       │(1), [34;1mlpq(1)[m, lprm│
    │                         │      │    │       │(1), [34;1mlpc(8)[m      │
    ├─────────────────────────┼──────┼────┼───────┼─────────────────┤
    │printer-driver-gutenprint│V:94, │882 │没有使 │CUPS 打印机驱动  │
    │                         │I:423 │    │用     │                 │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    你可以让你的 web 浏览器访问 [35;1m"http://localhost:631/"[;m 来配置 CUPS
    系统。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.9. 服务器远程访问和工具 (SSH)[;m

    Secure SHell (SSH) 是因特网上的安全连接方式。在 Debian 里面，有一
    个叫 OpenSSH 的免费 SSH 版本，在 openssh-client 和 openssh-server
    包里。

    表 6.13. 服务器远程访问和工具列表

    ┌──────────────────────────────────────────────────────────────────┐
    │        软件包        │流行度│大小│         工具         │  说明  │
    ├──────────────────────┼──────┼────┼──────────────────────┼────────┤
    │openssh-client        │V:839,│4034│[34;1mssh(1)[m                │SSH 客户│
    │                      │I:996 │    │                      │端      │
    ├──────────────────────┼──────┼────┼──────────────────────┼────────┤
    │openssh-server        │V:702,│881 │[34;1msshd(8)[m               │SSH 服务│
    │                      │I:816 │    │                      │端      │
    ├──────────────────────┼──────┼────┼──────────────────────┼────────┤
    │                      │      │    │                      │请求用户│
    │                      │V:0,  │    │ssh-askpass-fullscreen│输入密码│
    │ssh-askpass-fullscreen│I:1   │42  │(1)                   │的      │
    │                      │      │    │                      │ssh-add │
    │                      │      │    │                      │(GNOME2)│
    ├──────────────────────┼──────┼────┼──────────────────────┼────────┤
    │                      │      │    │                      │请求用户│
    │                      │      │    │                      │输入密码│
    │ssh-askpass           │V:3,  │101 │[34;1mssh-askpass(1)[m        │的      │
    │                      │I:42  │    │                      │ssh-add │
    │                      │      │    │                      │(plain  │
    │                      │      │    │                      │X)      │
    └──────────────────────────────────────────────────────────────────┘


    [33;1m小心[m

    如果你的 SSH 是从因特网来访问，参见第 4.7.3 节 “互联网额外的安全
    方式”。

    [36;1m提示[m

    请使用 [34;1mscreen(1)[m 程序来让远程 shell 在中断的连接上存活(参见第
     9.1 节 [35;1m“screen 程序”[;m).

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.9.1. SSH 基础[;m

    [31;1m警告[m

    如果想要运行 OpenSSH 服务，[35;1m"/etc/ssh/sshd_not_to_be_run"[;m必须不存
    在。

    SSH 有两个认证协议。

    表 6.14. SSH 认证协议和方式列表

    ┌───────────────────────────────────────────────────────────────┐
    │ SSH │            SSH 方式             │         说明          │
    │协议 │                                 │                       │
    ├─────┼─────────────────────────────────┼───────────────────────┤
    │SSH-1│[35;1m"RSAAuthentication"[;m              │基于 RSA 身份秘钥的用户│
    │     │                                 │认证                   │
    ├─────┼─────────────────────────────────┼───────────────────────┤
    │同上 │[35;1m"RhostsAuthentication"[;m           │[35;1m".rhosts"[;m 基于主机的认 │
    │     │                                 │证（不安全，禁用）     │
    ├─────┼─────────────────────────────────┼───────────────────────┤
    │同上 │[35;1m"RhostsRSAAuthentication"[;m        │[35;1m".rhosts"[;m 使用 RSA 主机│
    │     │                                 │秘钥的主机认证（禁用） │
    ├─────┼─────────────────────────────────┼───────────────────────┤
    │同上 │[35;1m"ChallengeResponseAuthentication"[;m│RSA 质疑-应答认证      │
    ├─────┼─────────────────────────────────┼───────────────────────┤
    │同上 │[35;1m"PasswordAuthentication"[;m         │基于密码的认证         │
    ├─────┼─────────────────────────────────┼───────────────────────┤
    │SSH-2│[35;1m"PubkeyAuthentication"[;m           │基于公钥的用户认证     │
    ├─────┼─────────────────────────────────┼───────────────────────┤
    │     │                                 │[35;1m"~/.rhosts"[;m or "/etc/  │
    │同上 │[35;1m"HostbasedAuthentication"[;m        │hosts.equiv" 使用客户端│
    │     │                                 │主机公钥的主机认证（禁 │
    │     │                                 │用）                   │
    ├─────┼─────────────────────────────────┼───────────────────────┤
    │同上 │[35;1m"ChallengeResponseAuthentication"[;m│质疑-应答认证          │
    ├─────┼─────────────────────────────────┼───────────────────────┤
    │同上 │[35;1m"PasswordAuthentication"[;m         │基于密码的认证         │
    └───────────────────────────────────────────────────────────────┘


    [33;1m小心[m

    如果你使用一个非 Debian 的系统，请小心注意这些不同。

    细节参见 [35;1m"/usr/share/doc/ssh/README.Debian.gz"[;m, [34;1mssh(1)[m, [34;1msshd(8)[m,
    [34;1mssh-agent(1)[m, and [34;1mssh-keygen(1)[m.

    下面是秘钥配置文件。

    表 6.15. SSH 配置文件列表

    ┌───────────────────────────────────────────────────────────────┐
    │     配置文件      │               配置文件描述                │
    ├───────────────────┼───────────────────────────────────────────┤
    │/etc/ssh/ssh_config│SSH 客户端默认, 参见 [34;1mssh_config(5)[m         │
    ├───────────────────┼───────────────────────────────────────────┤
    │/etc/ssh/          │SSH 服务端默认, 参见 [34;1msshd_config(5)[m        │
    │sshd_config        │                                           │
    ├───────────────────┼───────────────────────────────────────────┤
    │~/.ssh/            │该账户连接到这个服务器上的客户端使用的默认 │
    │authorized_keys    │SSH 公钥                                   │
    ├───────────────────┼───────────────────────────────────────────┤
    │~/.ssh/identity    │用户的 SSH-1 RSA 私钥                      │
    ├───────────────────┼───────────────────────────────────────────┤
    │~/.ssh/id_rsa      │用户的 SSH-2 RSA 私钥                      │
    ├───────────────────┼───────────────────────────────────────────┤
    │~/.ssh/id_dsa      │用户的 SSH-2 DSA 私钥                      │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    参见 [34;1mssh-keygen(1)[m, [34;1mssh-add(1)[m 和 [34;1mssh-agent(1)[m 来了解怎样使用 SSH
    公钥和私钥。

    [36;1m提示[m

    一定要通过连接测试来确认设置。有任何问题的连接，使用 [35;1m"ssh -v"[;m.

    [36;1m提示[m

    稍后可以使用 [35;1m"ssh-keygen -p"[;m 改变密码来加密本地 SSH 私钥.

    [36;1m提示[m

    你可以在 [35;1m"~/.ssh/authorized_keys"[;m 里给条目增加选项来限制主机和运
    行特定的命令。细节请参见 [34;1msshd(8)[m.

    从客户端启动一个 [34;1mssh(1)[m 连接.

    表 6.16. SSH 客户端启动例子列表

    ┌───────────────────────────────────────────────────────────────┐
    │                     命令                     │      说明      │
    ├──────────────────────────────────────────────┼────────────────┤
    │ssh username@hostname.domain.ext              │使用默认模式连接│
    ├──────────────────────────────────────────────┼────────────────┤
    │ssh -v username@hostname.domain.ext           │有详细信息的默认│
    │                                              │连接模式        │
    ├──────────────────────────────────────────────┼────────────────┤
    │ssh -1 username@hostname.domain.ext           │强制使用 SSH 1  │
    │                                              │版本连接        │
    ├──────────────────────────────────────────────┼────────────────┤
    │ssh -1 -o RSAAuthentication=no -l username    │SSH 1 版本，强制│
    │hostname.domain.ext                           │使用密码        │
    ├──────────────────────────────────────────────┼────────────────┤
    │ssh -o PreferredAuthentications=password -l   │SSH 2 版本，强制│
    │username hostname.domain.ext                  │使用密码        │
    └───────────────────────────────────────────────────────────────┘


    如果本地和远程主机，使用同样的用户名，你可以省略输入 [35;1m"username@"[;m.
    即使在本地和远程主机使用不同的用户名，你可以使用 [35;1m"~/.ssh/config"[;m
    来省略输入用户名.对于 Debian Salsa 服务器，使用账户名
    [35;1m"foo-guest"[;m,你可以设置 [35;1m"~/.ssh/config"[;m 包含下面的内容。

    Host salsa.debian.org people.debian.org
        User foo-guest

    对于用户来讲, [34;1mssh(1)[m [34;1m功能比telnet(1)[m 更加智能和安全. 不像 telnet
    命令, ssh 命令不会在遇到 telnet 的退出字符(初始默认是 CTRL-])时停
    止.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.9.2. SMTP/POP3 隧道的端口转发[;m

    通过 ssh 建立一个这样的管道连接，从 localhost 的 4025 端口到
    remote-server 的 25 端口，并从 localhost 的 4110 端口到
    remote-server 的 110 端口，请在本机执行如下命令.

[31;1m    # ssh -q -L 4025:remote-server:25 4110:remote-server:110 username@remote-server[;m

    这是跨越因特网建立 SMTP/POP3 服务连接的安全方法。在远程主机"/etc/
    ssh/sshd_config[35;1m"里设置"[;mAllowTcpForwarding[35;1m"条目为 "[;myes".

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.9.3. 免密码远程连接[;m

    使用 [35;1m"RSAAuthentication"[;m (SSH-1 协议) 或 [35;1m"PubkeyAuthentication"[;m
    (SSH-2 协议)，人们可以避免记住远程系统的密码.

    在远程系统的[35;1m"/etc/ssh/sshd_config"[;m里，设置相应的条目,
    [35;1m"RSAAuthentication yes"[;m 或 [35;1m"PubkeyAuthentication yes"[;m。

    在本地生成授权秘钥对，并安装公钥到远程系统。

[33;1m      *[;m [35;1m"RSAAuthentication"[;m: SSH-1 的 RSA key (不建议使用，因为已被废
        弃.)

[32;1m    $ ssh-keygen[;m
[32;1m    $ cat .ssh/identity.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"[;m

[33;1m      *[;m [35;1m"PubkeyAuthentication"[;m: SSH-2 的 RSA key

[32;1m    $ ssh-keygen -t rsa[;m
[32;1m    $ cat .ssh/id_rsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"[;m

[33;1m      *[;m [35;1m"PubkeyAuthentication"[;m: SSH-2 的 DSA key(不建议，因为慢.)

[32;1m    $ ssh-keygen -t dsa[;m
[32;1m    $ cat .ssh/id_dsa.pub | ssh user1@remote "cat - >>.ssh/authorized_keys"[;m

    [36;1m提示[m

    使用 SSH-2 的 DSA key 是不建议的，应为 key 较小并且慢。由于 RSA
    专利已经过期，没有理由使用 DSA 来作为规避 RSA 专利的临时措施。DSA
    表示 Digital Signature Algorithm，速度慢。同时参见 DSA-1571-1.

    [33;1m注意[m

    为了让 [35;1m"HostbasedAuthentication"[;m 在 SSH-2 下运行,你必须同时调整服
    务端主机 [35;1m"/etc/ssh/sshd_config"[;m 和客户机 [35;1m"/etc/ssh/ssh_config"[;m 或
    [35;1m"~/.ssh/config"[;m 的 [35;1m"HostbasedAuthentication"[;m 配置为 [35;1m"yes"[;m 。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.9.4. 处理其它 SSH 客户端[;m

    其它平台上有一些免费的 SSH 客户端。

    表 6.17. 其它平台上免费 SSH 客户端列表

    ┌───────────────────────────────────────────────────────────────┐
    │    环境    │                  免费 SSH 程序                   │
    ├────────────┼──────────────────────────────────────────────────┤
    │Windows     │puTTY (http://www.chiark.greenend.org.uk/~sgtatham│
    │            │/putty/) (GPL)                                    │
    ├────────────┼──────────────────────────────────────────────────┤
    │Windows     │cygwin 里的 SSH (http://www.cygwin.com/) (GPL)    │
    │(cygwin)    │                                                  │
    ├────────────┼──────────────────────────────────────────────────┤
    │Macintosh 类│macSSH (http://www.macssh.com/) (GPL)             │
    ├────────────┼──────────────────────────────────────────────────┤
    │Mac OS X    │OpenSSH;在终端应用中使用 ssh (GPL)                │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.9.5. 建立 ssh 代理[;m

    用密码来保护你的 SSH 认证私钥是安全的。如果密码没有设置，使用
    [35;1m"ssh-keygen -p"[;m 来设置。

    把你的公钥 (比如：[35;1m"~/.ssh/id_rsa.pub"[;m) 放到远程主机的"~/.ssh/
    authorized_keys"，这个远程主机使用上面描述的基于密码的连接方式。

[32;1m    $ ssh-agent bash[;m
[32;1m    $ ssh-add ~/.ssh/id_rsa[;m
    Enter passphrase for /home/<username>/.ssh/id_rsa:
    Identity added: /home/<username>/.ssh/id_rsa (/home/<username>/.ssh/id_rsa)

    从这里执行接下来的命令，就不再需要密码。

[32;1m    $ scp foo <username>@remote.host:foo[;m

    按 ^D 来终结 ssh 代理会话。

    对于 X 服务端，通常的 Debian 启动脚本会作为父进程执行 ssh-agent。
    所以你只需要执行一次 ssh-add。进一步的信息，请阅读 [34;1mssh-agent(1)[m
    和 [34;1mssh-add(1)[m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.9.6. 怎样通过 SSH 关闭远程系统[;m

    你可以使用 [34;1mat(1)[m 命令 (参见第 9.3.13 节 [35;1m“单次任务时间安排”[;m)来从
    SSH 终端里保护[35;1m"shutdown -h now"[;m (参见第 1.1.8 节 [35;1m“怎样关闭系统”[;m)
    操作过程。

[31;1m    # echo "shutdown -h now" | at now[;m

    在 [34;1mscreen(1)[m (参见第 9.1 节 [35;1m“screen 程序”[;m) 会话里运行 "shutdown
    -h now"，是另外一个方法来做这同样的事情。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.9.7. SSH 故障排查[;m

    如果你遇到问题，检查配置文件的权限并用 [35;1m"-v"[;m 选项运行 ssh。

    如果你是 root 账户，并有使用防火墙，使用 [35;1m"-p"[;m 选项; 这可以避免使
    用1 — 1023 之间的服务端口.

    如果 ssh 连接到远程站点突然停止工作，这也许是系统管理员胡乱操作的
    结果，可能是在系统维护时改变了 [35;1m"host_key"[;m. 在确认这个情况后，并且
    没有人试图用聪明的黑客技术来篡改远程主机，你可以在本机 "~/.ssh/
    known_hosts[35;1m" 里删除 "[;mhost_key" 条目来重新获得连接。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.10. 其它网络应用服务[;m

    这里是其它网络应用服务。

    表 6.18. 其它网络应用服务列表

    ┌───────────────────────────────────────────────────────────────┐
    │     软件包      │ 流行度 │大小 │ 协议 │         说明          │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │telnetd          │V:1, I:3│103  │TELNET│TELNET 服务            │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │telnetd-ssl      │V:0, I:0│154  │同上  │TELNET 服务( 支持SSL)  │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │nfs-kernel-server│V:33,   │321  │NFS   │Unix 文件共享          │
    │                 │I:89    │     │      │                       │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │samba            │V:109,  │15787│SMB   │Windows 文件和打印共享 │
    │                 │I:183   │     │      │                       │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │netatalk         │V:2, I:5│3923 │ATP   │Apple/Mac 文件和打印共 │
    │                 │        │     │      │享(AppleTalk)          │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │proftpd-basic    │V:32,   │5028 │FTP   │通用文件下载           │
    │                 │I:41    │     │      │                       │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │apache2          │V:242,  │593  │HTTP  │通用 web 服务器        │
    │                 │I:349   │     │      │                       │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │squid            │V:14,   │7112 │同上  │通用 web 代理服务器    │
    │                 │I:16    │     │      │                       │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │squid3           │V:10,   │163  │同上  │同上                   │
    │                 │I:17    │     │      │                       │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │bind9            │V:56,   │2075 │DNS   │其它主机的 IP 地址     │
    │                 │I:79    │     │      │                       │
    ├─────────────────┼────────┼─────┼──────┼───────────────────────┤
    │isc-dhcp-server  │V:23,   │1388 │DHCP  │客户端自身的 IP 地址   │
    │                 │I:62    │     │      │                       │
    └───────────────────────────────────────────────────────────────┘


    通用互联网文件系统协议(CIFS) 和服务消息块(SMB) 协议一样，被微软
    Windows 广泛应用。

    [36;1m提示[m

    参见第 4.5.2 节 [35;1m“现代的集中式系统管理”[;m 服务系统集成。

    [36;1m提示[m

    主机名解析通常由 DNS 服务提供. 对于由 DHCP 动态分配的主机 IP 地
    址, 动态 DNS 能够使用 bind9 和isc-dhcp-server 建立主机名解析，
    Debian wiki 的 DDNS 页有说明.

    [36;1m提示[m

    使用 squid 之类的代理服务器，和使用 Debian 文档库的完全本地镜像服
    务器相比，能够大量节省带宽。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.11. 其它网络应用客户端[;m

    这里是其它网络应用客户端。

    表 6.19. 网络应用客户端列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包     │流行度 │大小│ 协议  │           说明           │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │netcat         │I:34   │16  │TCP/IP │TCP/IP 瑞士军刀           │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │openssl        │V:806, │1306│SSL    │安全套接字层 (SSL)二进制和│
    │               │I:991  │    │       │相关的加密工具            │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │stunnel4       │V:4,   │472 │同上   │通用 SSL 封装             │
    │               │I:19   │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │telnet         │V:66,  │157 │TELNET │TELNET 客户端             │
    │               │I:906  │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │telnet-ssl     │V:1,   │208 │同上   │TELNET 服务( 支持SSL)     │
    │               │I:6    │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │nfs-common     │V:283, │722 │NFS    │Unix 文件共享             │
    │               │I:534  │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │smbclient      │V:18,  │1711│SMB    │微软 Windows 文件和打印共 │
    │               │I:203  │    │       │享客户端                  │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │cifs-utils     │V:34,  │231 │同上   │远程微软 Windows 文件系统 │
    │               │I:122  │    │       │挂载和卸载命令            │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │ftp            │V:28,  │132 │FTP    │FTP 客户端                │
    │               │I:524  │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │lftp           │V:6,   │2199│同上   │同上                      │
    │               │I:41   │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │ncftp          │V:4,   │1486│同上   │全屏 FTP 客户端           │
    │               │I:28   │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │wget           │V:351, │3044│HTTP 和│web 下载工具              │
    │               │I:997  │    │FTP    │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │curl           │V:123, │385 │同上   │同上                      │
    │               │I:469  │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │axel           │V:0,   │186 │同上   │下载加速器                │
    │               │I:5    │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │aria2          │V:2,   │4562│同上   │BitTorrent 和 Metalink 支 │
    │               │I:17   │    │       │持的下载加速器            │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │bind9-host     │V:439, │349 │DNS    │来自 bind9 的 [34;1mhost(1)[m,    │
    │               │I:949  │    │       │[35;1m"Priority: standard"[;m      │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │dnsutils       │V:70,  │673 │同上   │来自 bind 的 [34;1mdig(1)[m,      │
    │               │I:683  │    │       │[35;1m"Priority: standard"[;m      │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │isc-dhcp-client│V:275, │649 │DHCP   │获得 IP 地址              │
    │               │I:970  │    │       │                          │
    ├───────────────┼───────┼────┼───────┼──────────────────────────┤
    │ldap-utils     │V:17,  │687 │LDAP   │从 LDAP 服务获取数据      │
    │               │I:78   │    │       │                          │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m6.12. 系统后台守护进程（daemon）诊断[;m

    telnet 程序能够手工连接到系统后台守护进程（daemon），并进行诊断。

    测试纯 POP3 服务，尝试用下面的操作

[32;1m    $ telnet mail.ispname.net pop3[;m

    部分 ISP 提供 TLS/SSL 加密的POP3 服务，为了测试它，你需要用到
    telnet-ssl 包里支持 TLS/SSL 的 telnet 客户端，或 openssl 软件包。

[32;1m    $ telnet -z ssl pop.gmail.com 995[;m

[32;1m    $ openssl s_client -connect pop.gmail.com:995[;m

    下面的 RFCs 提供每一个系统后台守护进程（daemon）所需要的知识。

    表 6.20. 常用 RFC 列表

    ┌──────────────────────────────────────────────┐
    │       RFC        │           说明            │
    ├──────────────────┼───────────────────────────┤
    │rfc1939 和 rfc2449│POP3 服务                  │
    ├──────────────────┼───────────────────────────┤
    │rfc3501           │IMAP4 服务                 │
    ├──────────────────┼───────────────────────────┤
    │rfc2821 (rfc821)  │SMTP 服务                  │
    ├──────────────────┼───────────────────────────┤
    │rfc2822 (rfc822)  │邮件文件格式               │
    ├──────────────────┼───────────────────────────┤
    │rfc2045           │多用途互联网邮件扩展 (MIME)│
    ├──────────────────┼───────────────────────────┤
    │rfc819            │DNS 服务                   │
    ├──────────────────┼───────────────────────────┤
    │rfc2616           │HTTP 服务                  │
    ├──────────────────┼───────────────────────────┤
    │rfc2396           │URI 定义                   │
    └──────────────────────────────────────────────┘


    在 [35;1m"/etc/services"[;m 里，描述了端口用途.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 7 章 X 窗口系统[;m

    [31;1m警告[m

    本章是基于 2013 年发布的 Debian 7.0 (Wheezy) 编写的，所以其内容正
    在变得过时。

    Debian 上的 X 窗口系统基于 X.Org 的源代码。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.1. 关键软件包[;m

    这里有一些用于简易安装的（元）软件包。

    表 7.1. X 窗口的关键（元）软件包列表

    ┌───────────────────────────────────────────────────────────────┐
    │   （元）软件包   │流行度│大小│              说明              │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │                  │      │    │X 库、一个 X 服务器、一系列字体 │
    │xorg              │I:499 │52  │以及一组基础的 X 客户端和工具（ │
    │                  │      │    │元软件包）                      │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │xserver-xorg      │V:94, │238 │X 服务器的全部套件及其配置      │
    │                  │I:539 │    │                                │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │xbase-clients     │I:46  │46  │各种 X 客户端（元软件包）       │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │x11-common        │V:408,│305 │X 窗口系统的文件系统的基础设施  │
    │                  │I:795 │    │                                │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │xorg-docs         │I:7   │2032│X.Org 软件套件的各种文档        │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │menu              │V:91, │1435│为理解菜单的应用生成Debian菜单  │
    │                  │I:268 │    │                                │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │menu-xdg          │V:34, │76  │将 Debian 菜单结构转换为        │
    │                  │I:135 │    │freedesktop.org xdg 菜单结构    │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │xdg-utils         │V:257,│327 │freedesktop.org 提供的集成桌面环│
    │                  │I:559 │    │境的工具                        │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │task-gnome-desktop│I:202 │6   │标准 GNOME 桌面环境（元软件包） │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │task-kde-desktop  │I:69  │6   │核心 KDE 桌面环境（元软件包）   │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │task-xfce-desktop │I:105 │6   │Xfce 轻量级桌面环境（元软件包） │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │task-lxde-desktop │I:45  │6   │LXDE 轻量级桌面环境（元软件包） │
    ├──────────────────┼──────┼────┼────────────────────────────────┤
    │fluxbox           │V:2,  │3860│Fluxbox：可配置度高且资源耗费低 │
    │                  │I:11  │    │的 X 窗口管理器                 │
    └───────────────────────────────────────────────────────────────┘


    关于 X 基础知识，请参考 [34;1mX(7)[m 和 the LDP XWindow-User-HOWTO。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.2. 设置桌面环境[;m

    一个桌面环境通常是一个 X 窗口管理器、一个文件管理器和一套兼容的实
    用程序组合而成。

    你能够在 aptitude 的任务菜单下安装全部的桌面环境，例如 GNOME，KDE
    ，Xfce 或者 LXDE。

    [36;1m提示[m

    在Debian unstable/testing下，任务菜单可能与最新的软件包过渡状态不
    同步。在这种情况下，[34;1m您需要取消选择aptitude(8)[m任务菜单下列出的一些
    （元)包。当取消选择（元）软件包时，您必须选择那些提供依赖项手动操
    作的软件包，避免它们被自动删除。

    你也可以手动只建立一个 X 窗口管理器，例如 Fluxbox。

    关于 X 窗口管理器和桌面环境的介绍，参见 Window Managers for X。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.2.1. Debian 菜单[;m

    Debian 菜单系统从 menu 软件包中为带有 [34;1mupdate-menus(1)[m 的文本和 X
    程序提供了一个通用接口。每个软件包都会将它的菜单数据安装到 “/usr/
    share/menu/” 目录。参见 [35;1m“/usr/share/menu/README”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.2.2. Freedesktop.org 菜单[;m

    每个遵从 Freedesktop.org xdg 菜单的软件包都会将由 [35;1m“*.desktop”[;m 提
    供的菜单数据安装到 [35;1m“/usr/share/applications/”[;m 下。符合
    Freedesktop.org 标准的现代桌面环境会利用它们的数据使用 xdg-utils
    软件包生成菜单。参见 [35;1m“/usr/share/doc/xdg-utils/README”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.2.3. 从 Freedesktop.org 菜单到 Debian 菜单[;m

    为了从遵从 Freedesktop.org 菜单的窗口管理器环境（例如 GNOME 和
    KDE）访问传统的 Debian 菜单，你必须安装 menu-xdg 软件包。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.3. 服务器/客户端关系[;m

    X Window系统作为服务和客户端程序的组合被启动. 在这里，server 和
    client的意义需要和local和remote区分开来.

    表 7.2. 服务器/客户端术语表

    ┌───────────────────────────────────────────────────────────────┐
    │   类型    │                       说明                        │
    ├───────────┼───────────────────────────────────────────────────┤
    │X 服务器   │一个运行在本地主机上的程序，连接了使用者的显示和输 │
    │           │入设备。                                           │
    ├───────────┼───────────────────────────────────────────────────┤
    │X 客户端   │一个运行在远程主机上的程序，它会与 X 服务器进行数据│
    │           │的处理和传输。                                     │
    ├───────────┼───────────────────────────────────────────────────┤
    │应用程序服 │一个运行在远程主机上的程序，会与应用程序客户端进行 │
    │务器       │数据处理和传输。                                   │
    ├───────────┼───────────────────────────────────────────────────┤
    │应用程序客 │一个运行在本地主机上的程序，连接了使用者的显示和输 │
    │户端       │入设备。                                           │
    └───────────────────────────────────────────────────────────────┘


    现代X服务器具有 MIT 共享内存扩展，他们和本地X客户端通过本地共享内
    存进行通讯. 这就绕过了网络透明的Xlib进程间通讯通道，提升了大型图
    像的处理性能.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.4. X 服务器[;m

    关于 X 服务器的信息，[34;1m参见xorg(1)[m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.4.1. X 服务器的（重新）配置[;m

    使用下面命令（重新）配置一个 X 服务器。

[33m[31;1m    # dpkg-reconfigure --priority=low x11-common[;m[m

    [33;1m注意[m

    新的 Linux 内核使用 DRM、KMS 和 udev，对图形和输入设备进行了良好
    的支持。X 服务器被重写以使用它们。因此 [35;1m“/etc/X11/xorg.conf”[;m 通常
    不存在于你的系统中。这些参数由内核进行配置。参见 Linux 内核文档中
    的 [35;1m“fb/modedb.txt”[;m。

    对于高分辨率的 CRT 大显示器，最好将将刷新率设置为显示器支持的最高
    值（85 Hz 不错，75 Hz 也行）以减少闪烁。对于 LCD 显示器，较慢的标
    准刷新率（60 Hz）就可以了，因为它的反应较慢。

    [33;1m注意[m

    当心，别使用过高的刷新率，这可能会导致你的显示器系统发生重大的硬
    件故障。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.4.2. 连接到 X 服务器的方式[;m

    这里有一些方式，可以使 [35;1m“X 服务器”[;m（显示端）接受来自 [35;1m“X 客户端”[;m（
    应用端）的连接。

    表 7.3. 连接到 X 服务器的方式

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包    │流行度│大小│用 │加密 │   方式    │   相关使用   │
    │              │      │    │户 │     │           │              │
    ├──────────────┼──────┼────┼───┼─────┼───────────┼──────────────┤
    │              │      │    │不 │     │           │              │
    │xbase-clients │I:46  │46  │检 │无   │xhost 命令 │弃用          │
    │              │      │    │查 │     │           │              │
    ├──────────────┼──────┼────┼───┼─────┼───────────┼──────────────┤
    │xbase-clients │I:46  │46  │检 │无   │xauth 命令 │通过管道进行本│
    │              │      │    │查 │     │           │地连接        │
    ├──────────────┼──────┼────┼───┼─────┼───────────┼──────────────┤
    │openssh-client│V:839,│4034│检 │有   │ssh -X 命令│远程网络连接  │
    │              │I:996 │    │查 │     │           │              │
    ├──────────────┼──────┼────┼───┼─────┼───────────┼──────────────┤
    │              │V:183,│    │检 │无（ │GNOME 显示 │通过管道进行本│
    │gdm3          │I:269 │4715│查 │XDMCP│管理器     │地连接        │
    │              │      │    │   │）   │           │              │
    ├──────────────┼──────┼────┼───┼─────┼───────────┼──────────────┤
    │              │V:40, │    │检 │无（ │KDE 显示管 │通过管道进行本│
    │sddm          │I:75  │1823│查 │XDMCP│理器       │地连接        │
    │              │      │    │   │）   │           │              │
    ├──────────────┼──────┼────┼───┼─────┼───────────┼──────────────┤
    │              │V:3,  │    │检 │无（ │X 显示管理 │通过管道进行本│
    │xdm           │I:8   │665 │查 │XDMCP│器         │地连接        │
    │              │      │    │   │）   │           │              │
    ├──────────────┼──────┼────┼───┼─────┼───────────┼──────────────┤
    │              │V:114,│    │检 │无（ │WindowMaker│通过管道进行本│
    │wdm           │I:528 │2303│查 │XDMCP│显示管理器 │地连接        │
    │              │      │    │   │）   │           │              │
    ├──────────────┼──────┼────┼───┼─────┼───────────┼──────────────┤
    │              │V:0,  │    │检 │     │LTSP 显示管│远程 SSH 网络 │
    │ldm           │I:1   │414 │查 │有   │理器       │连接（瘦客户端│
    │              │      │    │   │     │           │）            │
    └───────────────────────────────────────────────────────────────┘


    [31;1m警告[m

    不要在不安全的网络中使用远程 TCP/IP 进行 X 连接，除非你有非常好的
    理由，例如使用了加密。未加密的远程 TCP/IP socket 连接容易遭到窃听
    攻击并且 Debian 系统默认禁用了它。请使用 [35;1m“ssh -X”[;m。

    [31;1m警告[m

    也不要在不安全的网络中使用 XDMCP 连接。它通过未加密的 UDP/IP 传输
    数据，很容易遭到窃听攻击。

    [36;1m提示[m

    LTSP 代表 Linux 终端服务器项目（Linux Terminal Server Project）。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.5. 启动 X 窗口系统[;m

    X 窗口系统通常是作为 X 会话启动的，X 会话是由 X 服务器和连接客户
    端组成的。对于常规的桌面系统，它们两个都是在一个工作站上运行的。

    X 会话由以下方式之一启动。

[33;1m      *[;m 从命令行用 startx 命令启动

[33;1m      *[;m 基于[35;1m"graphical.target"[;m的依赖关系，一个 X 图形显示管理器的后台
        守护程序*dm 通过 systemd 启动。

    [36;1m提示[m

    显示管理器后台守护进程（daemon）的启动脚本在实际执行它们自己时会
    检查 [35;1m“/etc/X11/default-display-manager”[;m 文件的内容。这可以确保只
    有一个 X 显示管理器后台守护进程（daemon）程序被激活。

    [36;1m提示[m

    关于 X 显示管理器的初始环境变量，参见第 8.4.5 节 “只用于 X 窗口的
    特定语言环境”。

    本质上，所有的这些程序都是执行 [35;1m“/etc/X11/Xsession”[;m 脚本。之后 “/
    etc/X11/Xsession” 脚本通过 [34;1mrun-parts(8)[m 执行 “/etc/X11/Xsession.d
    /” 目录中的脚本。这本质上是通过内建的 exec 命令执行按下面顺序第一
    个被找到的程序。

     1. X显示管理器调用[35;1m"/etc/X11/Xsession"[;m 的参数中指定的脚本, 如果他
        被定义了。

     2. [35;1m“~/.xsession”[;m 或 [35;1m“~/.Xsession”[;m 脚本，如果它被定义。

     3. [35;1m“/usr/bin/x-session-manager”[;m 命令，如果它被定义。

     4. [35;1m“/usr/bin/x-window-manager”[;m 命令，如果它被定义。

     5. [35;1m“/usr/bin/x-terminal-emulator”[;m 命令，如果它被定义。

    这个过程会受 [35;1m“/etc/X11/Xsession.options”[;m 的影响。[35;1m“/usr/bin/x-*”[;m
    命令所指向的准确程序，是由 Debian 选择系统决定的，并且可以通过
[33m    [35;1m“update-alternatives --config x-session-manager”[;m 修改。[m

    细节参见 [34;1mXsession(5)[m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.5.1. 使用 gdm3 启动 X 会话[;m

    [34;1mgdm3(1)[m 让你从它的菜单中选择会话类型（或桌面环境：第 7.2 节 “设置
    桌面环境”），还有 X 会话的语言（或语言环境：第 8.4 节 [35;1m“语言环境”[;m
    ）。它在 [35;1m“~/.dmrc”[;m 中像下面那样设定选择的默认值。

    [Desktop]
    Session=default
    Language=ja_JP.UTF-8

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.5.2. 自定义 X 会话（经典方式）[;m

    系统中的 [35;1m“/etc/X11/Xsession.options”[;m 包含没有前置 [35;1m“#”[;m 字符的
    [35;1m“allow-user-xsession”[;m 行，则定义了 [35;1m“~/.xsession”[;m 或 [35;1m“~/.Xsession”[;m
    的任何用户都能够通过完全覆盖系统代码来自定义 [35;1m“/etc/X11/Xsession”[;m
    的动作。在 [35;1m“~/.xsession”[;m 文件中的最后一个命令应该使用 “exec
    some-window/session-manager” 这样的形式来启动你最喜欢的 X 窗口/会
    话管理器。

    如果使用了这个特性，系统实用程序选择的显示 (或登录) 管理器 (DM),
    会话管理器或者窗口管理器 (WM) 会被忽略。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.5.3. 自定义 X 会话（新方式）[;m

    以下是自定义 X 会话的新方式，它不会像上面那样完全覆盖系统代码。

[33;1m      *[;m 显示管理器 gdm3 可以选择一个特定的会话并将它设置为 “/etc/X11/
        Xsession” 的参数。

[33;1m          +[;m [35;1m"/etc/profile"[;m, [35;1m"~/.profile"[;m, [35;1m"/etc/xprofile"[;m, 和 "~
            /.xprofile" 文件会被作为 gdm3 启动进程的一部分来执行。

[33;1m      *[;m [35;1m“~/.xsessionrc”[;m 文件作为启动进程的一部分被执行。（独立桌面）

[33;1m          +[;m [35;1m"/etc/X11/Xsession.options"[;m 中的 [35;1m"#allow-user-xsession"[;m
            不会限制 [35;1m"~/.xsessionrc"[;m 文件的执行。

[33;1m      *[;m [35;1m“~/.gnomerc”[;m 文件作为启动进程的一部分被执行。（仅 GNOME 桌面
        ）

    系统实用程序选择的显示 (或登录) 管理器 (DM), 会话管理器或者窗口管
    理器 (WM) 是相当不错的。

    在这些配置文件里面，不应当有 [35;1m"exec …"[;m 或 [35;1m"exit"[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.5.4. 通过 SSH 连接一个远程 X 客户端[;m

    使用 [35;1m“ssh -X”[;m 可以启用一个来自本地 X 服务器到远程应用程序服务器的
    安全连接。

    如果你想避免命令行选项 [35;1m“-X”[;m，你需要将远程主机的 “/etc/ssh/
    sshd_config” 文件中的 [35;1m“X11Forwarding”[;m 设置为 [35;1m“yes”[;m。

    在本地主机上启动 X 服务器。

    在本地主机中打开一个 xterm。

    通过下列命令，运行 [34;1mssh(1)[m 建立与远程站点的连接。

    localname @ localhost $ ssh -q -X loginname@remotehost.domain
    Password:

    通过下列命令，在远程站点运行一个 X 应用程序，例如 [35;1m“gimp”[;m。

    loginname @ remotehost $ gimp &

    这个方法可以显示来自远程 X 客户端的输出，相当于它是通过一个本地
    UNIX 域名 socket 进行本地的连接。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.5.5. 连接互联网的安全 X 终端[;m

    连接互联网的 X 安全终端，并且会显示在远程运行的整个 X 桌面环境，
    这可以通过使用特定软件包（例如 ldm）轻松地做到。通过 SSH，你的本
    地机器会变成连接到远程应用程序服务器的一个安全瘦客户端。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.6. X 窗口中的字体[;m

    在2002年，人们创建了发行版独立的库Fontconfig 2.0用于配置和定制字
    体访问. squeeze 以后的Debian使用 Fontconfig 2.0 进行字体配置.

    X 窗口系统中的字体支持可以概括如下。

[33;1m      *[;m 传统的 X 服务器端的字体支持系统

[33;1m          +[;m 原始的核心 X11 字体系统为旧版本的 X 客户端应用提供了向后
            兼容。

[33;1m          +[;m 原始的核心 X11 字体被安装到了 X 服务器上。

[33;1m      *[;m 现代 X 客户端的字体支持系统

[33;1m          +[;m 现代 X 系统支持下列带有高级功能（例如抗锯齿）的所有字体（
            第 7.6.1 节 [35;1m“基础字体”[;m，第 7.6.2 节 [35;1m“其它字体”[;m 和第
             7.6.3 节 [35;1m“CJK 字体”[;m）。

[33;1m          +[;m Xft 2.0 连接现代 X 应用，例如来自 GNOME、KDE 和带有
            FreeType 2.0 库的LibreOffice 的应用。

[33;1m          +[;m FreeType 2.0 提供字体栅格化的库。

[33;1m          +[;m Fontconfig 为 Xft 2.0 解决了字体规范的问题。配置参见
            fonts.[34;1mconf(5)[m。

[33;1m          +[;m 所有使用 Xft 2.0 的现代 X 应用都可以与使用 X 渲染扩展的现
            代 X 服务器进行交流。

[33;1m          +[;m X渲染扩展将字体访问和glyph图像生成从X服务器移动到了X客户
            端.

    表 7.4. 支持 X 窗口字体系统的软件包

    ┌───────────────────────────────────────────────────────────────┐
    │     软件包      │流行度 │大 │              说明               │
    │                 │       │小 │                                 │
    ├─────────────────┼───────┼───┼─────────────────────────────────┤
    │xfonts-utils     │V:35,  │415│X 窗口系统字体实用程序           │
    │                 │I:598  │   │                                 │
    ├─────────────────┼───────┼───┼─────────────────────────────────┤
    │libxft2          │V:113, │122│Xft 的，一个库，连接到了带有     │
    │                 │I:722  │   │FreeType 字体栅格化库的 X 应用   │
    ├─────────────────┼───────┼───┼─────────────────────────────────┤
    │libfreetype6     │V:434, │920│FreeType 2.0 字体栅格化库        │
    │                 │I:994  │   │                                 │
    ├─────────────────┼───────┼───┼─────────────────────────────────┤
    │fontconfig       │V:404, │542│Fontconfig 的，一个通用的字体配置│
    │                 │I:849  │   │库——支持二进制                   │
    ├─────────────────┼───────┼───┼─────────────────────────────────┤
    │fontconfig-config│V:375, │441│Fontconfig 的，一个通用的字体配置│
    │                 │I:912  │   │库——配置数据                     │
    └───────────────────────────────────────────────────────────────┘


    你可以通过下列方法查看字体配置信息。

[33;1m      *[;m 使用 [35;1m“xset q”[;m 查看核心 X11 字体路径

[33;1m      *[;m 使用 [35;1m“fc-match”[;m 查看 fontconfig 的字体默认

[33;1m      *[;m 使用 [35;1m“fc-list”[;m 查看所有可用的 fontconfig 字体

    [36;1m提示[m

    [35;1m“The Penguin and Unicode”[;m 很好地概述了现代的 X 窗口系统。在 http:
    //unifont.org/ 中的其它文档提供了关于 Unicode 字体、支持 Unicode
    的软件以及国际化的相关信息，还有免费/自由/开源（free/libre/open
    source，FLOSS）操作系统中的 Unicode 可用性问题。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.6.1. 基础字体[;m

    计算机字体有两种主要的类型。

[33;1m      *[;m 点阵字体（低分辨率栅格化下表现良好）

[33;1m      *[;m 轮廓/笔画字体（高分辨率栅格化下表现良好）

    缩放点阵字体会导致图像产生锯齿，而缩放轮廓/笔画字体则生成平滑的图
    像。

    Debian 系统中的点阵字体通常由压缩的 X11 pcf 点阵字体文件提供，它
    带有 [35;1m“.pcf.gz”[;m 文件后缀名。

    Debian 系统中的轮廓字体由以下提供。

[33;1m      *[;m PostScript Type 1 字体文件，它带有 [35;1m“.pfb”[;m（二进制字体文件）和
        [35;1m“.afm”[;m（字体规格文件）文件后缀名。

[33;1m      *[;m TrueType（或 OpenType）字体文件，通常带有 “.ttf 文件后缀名。

    [36;1m提示[m

    OpenType 是为了取代 TrueType 和 PostScript Type 1。

    表 7.5. 相应的 PostScript Type 1 字体

    ┌───────────────────────────────────────────────────────────────────┐
    │字体软件包 │流行 │大小 │无衬线字 │衬线字体│  等宽字体   │ 字体来源 │
    │           │ 度  │     │   体    │        │             │          │
    ├───────────┼─────┼─────┼─────────┼────────┼─────────────┼──────────┤
    │PostScript │N/A  │N/A  │Helvetica│Times   │Courier      │Adobe     │
    ├───────────┼─────┼─────┼─────────┼────────┼─────────────┼──────────┤
    │           │     │     │Nimbus   │Nimbus  │             │URW （    │
    │gsfonts    │I:683│4439 │Sans L   │Roman   │Nimbus Mono L│Adobe 兼容│
    │           │     │     │         │No9 L   │             │的大小）  │
    ├───────────┼─────┼─────┼─────────┼────────┼─────────────┼──────────┤
    │           │     │     │         │Nimbus  │             │PostScript│
    │gsfonts-x11│I:119│96   │Nimbus   │Roman   │Nimbus Mono L│Type 1 字 │
    │           │     │     │Sans L   │No9 L   │             │体支持的 X│
    │           │     │     │         │        │             │字体。    │
    ├───────────┼─────┼─────┼─────────┼────────┼─────────────┼──────────┤
    │           │     │     │Free     │Free    │             │URW 扩展（│
    │t1-cyrillic│I:22 │4884 │Helvetian│Times   │Free Courier │Adobe 兼容│
    │           │     │     │         │        │             │的大小）  │
    ├───────────┼─────┼─────┼─────────┼────────┼─────────────┼──────────┤
    │           │     │     │         │        │             │基于现代计│
    │           │     │     │         │        │             │算机的可缩│
    │           │     │     │         │        │             │放        │
    │lmodern    │I:139│33270│LMSans*  │LMRoman*│LMTypewriter*│PostScript│
    │           │     │     │         │        │             │和        │
    │           │     │     │         │        │             │OpenType  │
    │           │     │     │         │        │             │字体（来自│
    │           │     │     │         │        │             │Tex）     │
    └───────────────────────────────────────────────────────────────────┘


    表 7.6. 对应的 TrueType 字体

    ┌────────────────────────────────────────────────────────────────────────────────────┐
    │       字体软件包        │流行度│大小 │无衬线字体│ 衬线字体 │ 等宽字体 │  字体来源  │
    ├─────────────────────────┼──────┼─────┼──────────┼──────────┼──────────┼────────────┤
    │                         │      │     │          │          │          │微软（Adobe │
    │                         │V:1,  │     │          │Times New │Courier   │兼容的大小）│
    │ttf-mscorefonts-installer│I:82  │92   │Arial     │Roman     │New       │（这会安装  │
    │                         │      │     │          │          │          │non-free 数 │
    │                         │      │     │          │          │          │据）        │
    ├─────────────────────────┼──────┼─────┼──────────┼──────────┼──────────┼────────────┤
    │                         │      │     │          │          │          │Liberation  │
    │fonts-liberation         │I:562 │2093 │Liberation│Liberation│Liberation│字体项目（微│
    │                         │      │     │Sans      │Serif     │Mono      │软兼容的大小│
    │                         │      │     │          │          │          │）          │
    ├─────────────────────────┼──────┼─────┼──────────┼──────────┼──────────┼────────────┤
    │                         │V:43, │     │          │          │          │GNU 自由字体│
    │fonts-freefont-ttf       │I:356 │10750│FreeSans  │FreeSerif │FreeMono  │（微软兼容的│
    │                         │      │     │          │          │          │大小）      │
    ├─────────────────────────┼──────┼─────┼──────────┼──────────┼──────────┼────────────┤
    │                         │      │     │          │          │          │覆盖了      │
    │                         │      │     │DejaVu    │DejaVu    │DejaVu    │Unicode 的  │
    │fonts-dejavu             │I:506 │39   │Sans      │Serif     │Sans Mono │DejaVu、    │
    │                         │      │     │          │          │          │Bitstream   │
    │                         │      │     │          │          │          │Vera        │
    ├─────────────────────────┼──────┼─────┼──────────┼──────────┼──────────┼────────────┤
    │                         │      │     │          │          │          │覆盖了      │
    │                         │      │     │          │          │          │Unicode 的  │
    │                         │      │     │          │          │          │DejaVu、    │
    │                         │      │     │          │          │          │Bitstream   │
    │fonts-dejavu-core        │V:278,│2954 │DejaVu    │DejaVu    │DejaVu    │Vera（sans、│
    │                         │I:775 │     │Sans      │Serif     │Sans Mono │sans-bold、 │
    │                         │      │     │          │          │          │serif、     │
    │                         │      │     │          │          │          │serif-bold、│
    │                         │      │     │          │          │          │mono、      │
    │                         │      │     │          │          │          │mono-bold） │
    ├─────────────────────────┼──────┼─────┼──────────┼──────────┼──────────┼────────────┤
    │                         │      │     │          │          │          │覆盖了      │
    │                         │      │     │          │          │          │Unicode 的  │
    │                         │      │     │          │          │          │DejaVu、    │
    │                         │      │     │          │          │          │Bitstream   │
    │                         │      │     │          │          │          │Vera（      │
    │fonts-dejavu-extra       │I:533 │7217 │N/A       │N/A       │N/A       │oblique、   │
    │                         │      │     │          │          │          │italic、    │
    │                         │      │     │          │          │          │bold-oblique│
    │                         │      │     │          │          │          │、          │
    │                         │      │     │          │          │          │bold-italic │
    │                         │      │     │          │          │          │、condensed │
    │                         │      │     │          │          │          │）          │
    ├─────────────────────────┼──────┼─────┼──────────┼──────────┼──────────┼────────────┤
    │                         │      │     │          │          │          │GNU Unifont │
    │                         │      │     │          │          │          │，带有      │
    │                         │      │     │          │          │          │Unicode 5.1 │
    │ttf-unifont              │I:23  │17016│N/A       │N/A       │unifont   │基本多文种平│
    │                         │      │     │          │          │          │面（BMP）中 │
    │                         │      │     │          │          │          │所有的可打印│
    │                         │      │     │          │          │          │字符        │
    └────────────────────────────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    DejaVu 字体基于 Bitstream Vera 字体，并对其进行了扩充。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.6.2. 其它字体[;m

    [34;1maptitude(8)[m 可以帮你轻松找到其它的字体。

[33;1m      *[;m 简单的软件包列表位于 [35;1m“软件集”[;m → [35;1m“本地化”[;m

[33;1m      *[;m 平面软件包列表可以使用 debtag 正则表达式来过滤字体数据：
        [35;1m“~Gmade-of::data:font”[;m

[33;1m      *[;m 在软件包名称里采用下面的正则表达式来过滤得到BDF（位图）字体包
        列表: [35;1m"~nxfonts-"[;m

[33;1m      *[;m 在软件包名称里采用下面的正则表达式来得到TrueType字体包列表:
        [35;1m"~nttf-|~nfonts-"[;m

    因为自由字体有时会受限，因此对于 Debian 用户而言，可以选择安装或
    分享一些商业的 TrueType 字体。为了简化该过程，建立一些方便的软件
    包。

[33;1m      *[;m mathematica-fonts

[33;1m      *[;m fonts-mscorefonts-installer

    当你付出使用非自由字体污染你自由系统的代价后，你会得到一些相当不
    错的 trueType 字体。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.6.3. CJK 字体[;m

    下面是一些主要关注 CJK 字符的字体。

    表 7.7. CJK 字体名称中所使用的暗示字体类型的关键词

    ┌───────────────────────────────────────────────────────────┐
    │字体类型│  日文字体名称  │中文字体名称│    韩文字体名称    │
    ├────────┼────────────────┼────────────┼────────────────────┤
    │无衬线  │gothic、ゴチック│hei、gothic │dodum、gulim、gothic│
    ├────────┼────────────────┼────────────┼────────────────────┤
    │衬线    │mincho、明朝    │song、ming  │batang              │
    └───────────────────────────────────────────────────────────┘


    像 [35;1m“VL PGothic”[;m 这样带有 [35;1m“P”[;m 的字体名称是对应的 [35;1m“VL Gothic”[;m 字体
    修改宽度后的比例字体。

    举个例子，Shift_JIS 的码表包含了 7070 个字符。它们可以像下面那样
    分类。

[33;1m      *[;m JIS X 0201 单字节字符（191 个字符，又名半角字符）

[33;1m      *[;m JIS X 0208 双字节字符（6879 个字符，又名全角字符）

    使用修复宽度的 CJK 字体的双字节字符占用控制台终端的双倍宽度。为了
    应对这种情况，带有 [35;1m“.hbf”[;m 文件后缀名的汉字点阵字体（Hanzi Bitmap
    Font，HBF）文件被设计为包含了单字节和双字节字符的字体。

    为了节省 TrueType 字体文件的空间，可以使用带有 [35;1m“.ttc”[;m 文件后缀名
    的 TrueType 字体集合文件。

    为了覆盖复杂的编码字体空间, CID采用[35;1m"%!PS-Adobe-3.0 Resource-CMap"[;m
    开头的CMap文件作为PostScript类型1字体的关键字。这个几乎很少用在普
    通的X显示上，更多用于PDF等格式的文件渲染上。(参考第 7.7.2 节 “X
    实用应用”).

    [36;1m提示[m

    对于Han unification，一些Unicode编码点阵期望能够有多样化的glyphs
    。其中最令人讨厌的在中日韩三个国家[35;1m“U + 3001顿号”[;m和“U + 3002表意的
    句号”的字符位置各不相同。配置日文中心字体的优先级，中文用的是" 7~
    /.fonts.conf 8"能够让日本感到有所平衡。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.7. X 应用[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.7.1. X 办公应用[;m

    下面是一些基础的办公应用（LO 是 LibreOffice）。

    表 7.8. 基础的 X 办公应用

    ┌───────────────────────────────────────────────────────────────┐
    │      软件包       │ 流行度  │软件包大│类型 │       说明       │
    │                   │         │   小   │     │                  │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │libreoffice-writer │V:326,   │31679   │LO   │文字处理软件      │
    │                   │I:477    │        │     │                  │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │libreoffice-calc   │V:322,   │28669   │LO   │电子表格          │
    │                   │I:472    │        │     │                  │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │libreoffice-impress│V:319,   │3799    │LO   │演示文稿          │
    │                   │I:468    │        │     │                  │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │libreoffice-base   │V:307,   │8930    │LO   │数据库管理        │
    │                   │I:449    │        │     │                  │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │libreoffice-draw   │V:320,   │9896    │LO   │矢量图形编辑器（绘│
    │                   │I:469    │        │     │图）              │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │libreoffice-math   │V:322,   │1626    │LO   │数学方程/公式编辑 │
    │                   │I:474    │        │     │器                │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │abiword            │V:3, I:16│4749    │GNOME│文字处理软件      │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │gnumeric           │V:14,    │7737    │GNOME│电子表格          │
    │                   │I:25     │        │     │                  │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │gimp               │V:86,    │17769   │GTK  │位图图形编辑器 (绘│
    │                   │I:491    │        │     │图)               │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │inkscape           │V:153,   │77572   │GNOME│矢量图形编辑器（绘│
    │                   │I:336    │        │     │图）              │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │dia                │V:20,    │3916    │GTK  │流程图和示意图编辑│
    │                   │I:39     │        │     │器                │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │planner            │V:3, I:7 │1178    │GNOME│项目管理          │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │calligrawords      │V:0, I:8 │5570    │KDE  │文字处理软件      │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │calligrasheets     │V:0, I:6 │10789   │KDE  │电子表格          │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │calligrastage      │V:0, I:6 │4833    │KDE  │演示文稿          │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │calligraplan       │V:0, I:6 │15222   │KDE  │项目管理          │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │kexi               │V:0, I:6 │7475    │KDE  │数据库管理        │
    ├───────────────────┼─────────┼────────┼─────┼──────────────────┤
    │karbon             │V:0, I:7 │4187    │KDE  │矢量图形编辑器（绘│
    │                   │         │        │     │图）              │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.7.2. X 实用应用[;m

    下面是一些引起我注意的基础实用应用。

    表 7.9. 基础的实用应用

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包  │  流行度  │软件包大│类型 │           说明            │
    │         │          │   小   │     │                           │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │evince   │V:176,    │1466    │GNOME│文档（pdf）阅读器          │
    │         │I:401     │        │     │                           │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │okular   │V:74,     │13100   │KDE  │文档（pdf）阅读器          │
    │         │I:123     │        │     │                           │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │calibre  │V:7, I:40 │51519   │KDE  │电子书转换器和库管理       │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │fbreader │V:2, I:17 │3035    │GTK  │电子书阅读器               │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │evolution│V:40,     │449     │GNOME│个人信息管理（群组软体和电 │
    │         │I:270     │        │     │子邮件）                   │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │kontact  │V:2, I:21 │2047    │KDE  │个人信息管理（群组软体和电 │
    │         │          │        │     │子邮件）                   │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │scribus  │V:5, I:28 │19090   │KDE  │桌面页面布局编辑器         │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │glabels  │V:0, I:5  │1385    │GNOME│标签编辑器                 │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │gnucash  │V:4, I:14 │9664    │GNOME│个人会计                   │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │homebank │V:0, I:3  │895     │GTK  │个人会计                   │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │kmymoney │V:0, I:3  │12342   │KDE  │个人会计                   │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │shotwell │V:19,     │6635    │GTK  │数码照片管理器             │
    │         │I:205     │        │     │                           │
    ├─────────┼──────────┼────────┼─────┼───────────────────────────┤
    │xsane    │V:20,     │909     │GTK  │扫描仪前段                 │
    │         │I:192     │        │     │                           │
    └───────────────────────────────────────────────────────────────┘


    [33;1m小心[m

    为了让 evince 和 okular 使用 Cmap 数据（第 7.6.3 节 [35;1m“CJK 字体”[;m）
    来显示 CJK PDF 文档，必须要安装 poppler-data 软件包（之前为
    non-free，参见第 11.4.1 节 [35;1m“Ghostscript”[;m）。

    [33;1m注意[m

    如果在 GNOME 桌面环境中没有相应功能的软件，那么安装例如 scribus（
    KDE）这样的软件包是完全可以接受的。但别安装过多功能重复的软件包，
    这会使你的菜单凌乱。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.8. X 琐事[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.8.1. 剪贴板[;m

    使用鼠标的 3 个按键来进行 X 选择是 X 原生的剪贴板（参见第 1.4.4
    节 [35;1m“Unix类型的鼠标操作”[;m）。

    [36;1m提示[m

    Shift-Insert 等同于单击鼠标中键。

    表 7.10. 基础的 X 选择程序

    ┌────────────────────────────────────────────────────┐
    │软件包│  流行度  │软件包大小│类型│       说明       │
    ├──────┼──────────┼──────────┼────┼──────────────────┤
    │xsel  │V:11, I:44│51        │X   │X 选择的命令行接口│
    ├──────┼──────────┼──────────┼────┼──────────────────┤
    │xclip │V:8, I:39 │55        │X   │X 选择的命令行接口│
    └────────────────────────────────────────────────────┘


    现代的桌面环境（GNOME、KDE……）提供了不同的剪贴板系统用于剪切、复
    制和粘贴，它们使用鼠标左键和关键键（CTRL-X、CRTL-C 和 CTRL-V）。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.8.2. X 中的键盘和鼠标按钮映射[;m

    [34;1mxmodmap(1)[m 是 X 窗口系统中用来修改键盘和鼠标按钮映射的工具。为了
    获得 keycode，你需要在 X 中运行 [34;1mxev(1)[m 并按下对应按键。为了获得
    keysym 的含义，你需要查看 [35;1m“/usr/include/X11/keysymdef.h”[;m 文件（
    x11proto-core-dev 软件包）中 MACRO 的定义。文件中所有的 [35;1m“#define”[;m
    语句后面都是以 [35;1m“XK_”[;m 开头，后接 keysym 名称。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.8.3. 典型的 X 客户端[;m

    大多数传统的 X 客户端程序，例如 [34;1mxterm(1)[m，可以用一组标准的命令行
    选项来启动，从而指定大小、字体和显示。

    它们还使用 X 资源数据库来配置它们的外观。系统默认的 X 资源保存在
    [35;1m“/etc/X11/Xresources/*”[;m 中，应用默认的 X 资源保存在 “/etc/X11/
    app-defaults/*” 中。使用这些设置作为起点。

    [35;1m“~/.Xresources”[;m 文件被用来保存用户资源设定。这个文件在登陆时会自
    动合并到默认的 X 资源。要更改这些设置并使其立即生效，使用下列命令
    将它们合并到数据库中。

[32;1m    $ xrdb -merge ~/.Xresources[;m

    参见 [34;1mx(7)[m 和 [34;1mxrdb(1)[m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.8.4. X 终端模拟器 —— xterm[;m

    在 http://dickey.his.com/xterm/xterm.faq.html 可以了解到关于
    [34;1mxterm(1)[m 的一切信息。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m7.8.5. 以 root 运行 X 客户端[;m

    [31;1m警告[m

    不要通过在显示管理器（例如 gdm3）的提示符后输入 root 来以 root 身
    份启动 X 显示/会话管理器，因为这是不安全的，即使你打算进行管理员
    操作。以 root 运行整个 X 架构被认为是不安全的。你必须总是使用尽可
    能低权限的账号，例如普通的用户账号。

    运行一个特殊的 X 客户端（例如使 [35;1m“foo”[;m 取得 root 权限）的简单方法
    是像下面那样使用 [34;1msudo(8)[m 等。

[32;1m    $ sudo foo &[;m

[32;1m    $ sudo -s[;m
[31;1m    # foo &[;m

[32;1m    $ ssh -X root@localhost[;m
[31;1m    # foo &[;m

    [33;1m小心[m

    为了该目的像上面那样使用 [34;1mssh(1)[m 会浪费资源。

    为了使 X 客户端链接到 X 服务器，请注意以下几点。

[33;1m      *[;m 旧用户 [35;1m“$XAUTHORITY”[;m 和 [35;1m“$DISPLAY”[;m 环境变量的值必须复制给新用
        户。

[33;1m      *[;m [35;1m“$XAUTHORITY”[;m 环境变量的值所指向的文件必须对新用户可读。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 8 章 国际化和本地化[;m

    一个应用软件的多语言化 (M17N)或本地语言支持，通过 2 个步骤完成。

[33;1m      *[;m 国际化 (I18N): 使一个软件能够处理多个语言环境。

[33;1m      *[;m 本地化 (L10N)：使一个软件处理一个特定的语言环境。

    [36;1m提示[m

    在 multilingualization（多语言化）、internationalization（国际化
    ）和 localization（本地化）中，有17, 18, 或 10 个字母在[35;1m"m"[;m 和
    [35;1m"n"[;m, [35;1m"i"[;m 和 [35;1m"n"[;m, 或 [35;1m"l"[;m 和 [35;1m"n"[;m中间，它们相应表示为 M17N, I18N 和
    L10N.

    GNOME 和 KDE 等现代软件是多语言的。他们通过处理 UTF-8 数据来实现
    国际化，并通过 [34;1mgettext(1)[m 架构提供翻译信息来本地化。翻译信息可以
    由独立的本地化软件包来提供。翻译信息易于选择使用，通过给相关的环
    境变量设置适当的语言环境即可。

    最简单的文本数据表示方法是 ASCII，使用少于 127 个字符 (用 7 位表
    示)，这对英语足够了。为了支持用于国际化的更多字符，人们发明了许多
    字符编码系统。现代知名的编码系统是 UTF-8，它可以处理人类所知的几
    乎所有字符(参见第 8.4.1 节 [35;1m“编码的基础知识”[;m).

    细节请参见 i18n 介绍.

    有本地化硬件配置数据便能支持国际化硬件。

    [31;1m警告[m

    本章是基于 2013 年发布的 Debian 7.0 (Wheezy) 编写的，所以其内容正
    在变得过时。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.1. 键盘输入[;m

    Debian 系统可以使用 keyboard-configuration 和 console-setup 软件
    包配置多个国际化键盘布局。

[31;1m    # dpkg-reconfigure keyboard-configuration[;m
[31;1m    # dpkg-reconfigure console-setup[;m

    这将配置 Linux 控制台和 X 窗口的键盘，并更新 “/etc/default/
    keyboard” 和 [35;1m“/etc/default/console-setup”[;m 中的配置参数。这也可以
    用来配置 Linux 控制台的字体。

    许多非 ASCII 字符，包括许多欧洲语言使用的重音字符，可以使用死键、
    AltGr 键和组合键来输入它们。

    对于亚洲语言，你需要更复杂的输入法支持，例如下面将要讨论的 IBus。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.1.1. IBus 支持的输入法[;m

    输入多种语言到应用程序的处理流程如下：

    键盘                               应用程序
       |                                        ^
       │                                        │
[33;1m       +[;m-> Linux 内核 -> 输入法 -> Gtk、Qt、或 X

    通过 im-config 使用 IBus 家族的软件包可以简单地为 Debian 系统建立
    多语种的输入。下面列出了一些 IBus 软件包。

    表 8.1. IBus 支持的输入法

    ┌─────────────────────────────────────────────────────────────┐
    │    软件包     │ 流行度 │大小 │        支持的语言环境        │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus           │V:6, I:9│45177│使用 dbus 的输入方式框架      │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-mozc      │V:0, I:2│927  │日文                          │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-anthy     │V:1, I:2│8450 │同上                          │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-kkc       │V:0, I:0│205  │同上                          │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-skk       │V:0, I:0│234  │同上                          │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-pinyin    │V:0, I:1│1425 │中文（zh_CN）                 │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-chewing   │V:0, I:0│400  │中文 (zh_TW)                  │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-hangul    │V:0, I:1│214  │韩文                          │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-table     │V:0, I:1│908  │IBus 表引擎                   │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-table-thai│I:0     │45   │泰文                          │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-unikey    │V:0, I:0│256  │越南语                        │
    ├───────────────┼────────┼─────┼──────────────────────────────┤
    │ibus-m17n      │V:0, I:0│121  │多语言：印度语、阿拉伯语和其它│
    └─────────────────────────────────────────────────────────────┘


    kinput2 方式和其它本地独立的亚洲经典输入法依旧存在，但不推荐在现
    代的 UTF-8 X 环境中使用。SCIM 和 uim 工具链是用于现代的 UTF-8 X
    环境下的国际化输入法的较旧的方法。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.1.2. 一个日语的例子[;m

    我发现在英语环境([35;1m"en_US.UTF-8"[;m)下启动日文输入法非常有用. 下面是在
    GNOME3下使用IBus的做法:

     1. 安装日文输入法软件包 ibus-anthy ，以及im-config等推荐的软件
        包.

     2. 从用户Shell中执行[35;1m"im-config"[;m，然后选择[35;1m"ibus"[;m作为输入法.

     3. 选择 [35;1m"Settings"[;m → [35;1m"Keyboard"[;m → [35;1m"Input Sources"[;m → 在"Input
        Sources[35;1m"中单击 "[;m+[35;1m" → "[;mJapanese[35;1m" → "[;mJapanese (anthy)"，然后单
        击[35;1m"Add"[;m.

     4. 选择[35;1m"日语"[;m并[35;1m"添加"[;m到支持日语键盘，就不需要字符转换。(你可能会
        选择更多的输入源)

     5. 重新登录用户账户。

     6. 使用[35;1m"im-config"[;m验证设置.

     7. 右键单击 GUI 工具条图标，设置输入源。

     8. 使用SUPER-SPACE在安装的输入法之间进行切换. (SUPER键通常是
        Windows键.)

    请注意以下几点。

[33;1m      *[;m [34;1mim-config(8)[m如果命令是从root账户执行的表现会有所不同。

[33;1m      *[;m [34;1mim-config(8)[m 让最佳的输入法作为系统默认而不需要用户干预。

[33;1m      *[;m [34;1m用户界面菜单入口im-config(8)[m 默认会被禁用，以免造成混乱。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.1.3. 禁用输入法[;m

    如果你不想通过 XIM（X 所使用的机制）来进行输入，你可以在启动程序
    时将 [35;1m“$XMODIFIERS”[;m 的值设置为 [35;1m“none”[;m。这可能会是这种情况，你想在
    [34;1memacs(1)[m 中使用日文输入基础设施 egg 同时禁用 ibus。你可以从 shell
    中执行如下命令。

[32;1m    $ XMODIFIERS=none emacs[;m

    为了调整 Debian 菜单执行的命令，请根据 [35;1m“/usr/share/doc/menu/html”[;m
    中描述的方法定制 [35;1m“/etc/menu/”[;m 中的配置。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.2. 显示输出[;m

    Linux 控制台只能显示有限的字符。（你需要使用特殊的终端程序，例如
    [34;1mjfbterm(1)[m，从而在非 X 控制台中显示非欧洲语言。）

    只要需要的字库数据存在X窗口可以通过UTF-8编码显示任意字符。（X窗口
    系统能够维护好原始字体数据编码，这对用户来说是透明的）

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.3. 东亚环境下宽度有歧义的字符[;m

    在东亚语言环境下，方框绘制、希腊字符和西里尔字符可能会显示得比你
    预期的样子更宽，这样会导致终端输出排列不再整齐（参见 Unicode 标准
    附录 #11）。

    您可以绕过这个问题：

[33;1m      *[;m gnome-terminal：编辑 → 首选项 → 配置文件 → 编辑 → 兼容性 → 宽
        度有歧义的字符 → 窄

[33;1m      *[;m ncurses：设置环境变量 export NCURSES_NO_UTF8_ACS=0。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.4. 语言环境[;m

    下面重点介绍在从 [34;1mgdm3(1)[m 启动的 X 窗口环境下运行的应用程序的语言
    设置。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.4.1. 编码的基础知识[;m

    环境变量 [35;1m“LANG=xx_YY.ZZZZ”[;m 将语言环境设置为语言代码 [35;1m“xx”[;m、国家代
    码 [35;1m“YY”[;m 和编码 [35;1m“ZZZZ”[;m（参见第 1.5.2 节 [35;1m““$LANG”[;m变量”）。

    现在的 Debian 系统一般将语言环境设置为 [35;1m“LANG=xx_YY.UTF-8”[;m。这将会
    使用带有 Unicode 字符集的 UTF-8 编码。UTF-8 编码系统是多字节的代
    码系统并且码点的使用更加智能。ASCII 数据（只包含了7位二进制代码）
    总是合法的 UTF-8 数据（每个字符使用1个字节）。

    之前的 Debian 系统曾经将语言环境设置为 [35;1m“LANG=C”[;m 或 [35;1m“LANG=xx_YY”[;m（
    没有 [35;1m“.UTF-8”[;m）。

[33;1m      *[;m [35;1m“LANG=C”[;m 或 [35;1m“LANG=POSIX”[;m 使用 ASCII 字符集。

[33;1m      *[;m [35;1m“LANG=xx_YY”[;m 使用 Unix 的传统编码系统。

    [35;1m“LANG=xx_YY”[;m 所使用的确切传统编码系统可以通过 “/usr/share/i18n/
    SUPPORTED” 来确认。例如，[35;1m“en_US”[;m 使用 [35;1m“ISO-8859-1”[;m 编码，
    [35;1m“fr_FR@euro”[;m 使用 [35;1m“ISO-8859-15”[;m 编码。

    [36;1m提示[m

    编码值的含义，参见表 11.2 [35;1m“编码值和用法的列表”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.4.2. UTF-8 语言环境的基本原理[;m

    Unicode 字符集可以用从 0 到 10FFFF （十六进制）范围的码点来显示几
    乎所有人类已知的字符。它的存储至少需要 21 位。

    文本编码系统 UTF-8 将 Unicode 码点适配到一个合理的 8 位数据流，并
    兼容 ASCII 数据处理系统。UTF 表示 Unicode 转换格式（Unicode
    Transformation Format）。

    我建议在你的桌面使用 UTF-8 语言环境，例如 [35;1m“LANG=zh_CN.UTF-8”[;m。语
    言环境的第一部分决定了应用程序中显示的信息。例如，“LANG=
    fr_FR.UTF-8” 语言环境下的 [34;1mgedit(1)[m（GNOME 桌面的文本编辑器），菜
    单是用法语显示的，但只要安装所需的字体和输入法就可以显示和编辑中
    文字符文本数据。

    我还建议只使用 [35;1m“$LANG”[;m 环境变量来设置语言环境。我没有看到在 UTF-8
    语言环境下设置复杂的 [35;1m“LC_*”[;m 变量组合有什么好处（参见 [34;1mlocale(1)[m）
    。

    即使纯英文文本也可能包含非 ASCII 字符，例如微微卷曲的左右引号在
    ASCII 中是不可用的。

    [35;1m“双引号的文本”[;m 并非 [35;1m“双引号的 ASCII”[;m
    ‘单引号的文本’ 并非 ‘单引号的 ASCII’

    当纯 ASCII 文本数据转换为 UTF-8 后，它会具有与原本完全相同的内容
    和大小。因此使用 UTF-8 语言环境并不会使你损失什么。

    一些程序在支持 I8N 后会消耗更多的内存。这是因为它们为了速度优化，
    而在内部使用 UTF-32(UCS4) 来支持 Unicode，并且每个独立于语言环境
    所选的 ASCII 字符数据都会消耗 4 个字节。再一次地，使用 UTF-8 语言
    环境并不会使你损失什么。

    供应商指定的旧的非 UTF-8 编码系统在一些字符上往往有较小但恼人的不
    同，例如许多国家使用的字形。而使用了 UTF-8 系统的现代操作系统基本
    上能解决这行编码冲突问题。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.4.3. 语言环境的重新配置[;m

    为了使系统访问特定的语言环境，必须从语言环境数据库编译相应语言环
    境数据。（Debian 系统不带有所有提前编译的可用语言环境，除非你安装
    locales-all 软件包。）所支持的可编译语言环境的完整列表位于 “/usr/
    share/i18n/SUPPORTED”，它列出了所有准确的语言环境名称。下列命令列
    出已编译成二进制形式的所有可用的 UTF-8 语言环境。

[32;1m    $ locale -a | grep utf8[;m

    下列的命令会重新配置 locales 软件包。

[31;1m    # dpkg-reconfigure locales[;m

    该过程包含 3 个步骤。

     1. 更新可用的语言环境列表

     2. 将它们编译为二进制形式

     3. 在 [35;1m“/etc/default/locale”[;m 设置系统默认的语言环境值给 PAM 使用
        （参见第 4.5 节 [35;1m“PAM 和 NSS”[;m）

    可用的语言环境列表应该包含 [35;1m“en_US.UTF-8”[;m 和所有你感兴趣的带有
    [35;1m“UTF-8”[;m 的语言。

    对于美式英语，推荐默认的语言环境为 [35;1m“en_US.UTF-8”[;m。对于其它语言，
    请确保所选的语言环境带有 [35;1m“UTF-8”[;m。这些设置中的任何一个都能够处理
    任何国际字符。

    [33;1m注意[m

    虽然将语言环境设置为 [35;1m“C”[;m 会使用美式英语，但它只处理 ASCII 字符。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.4.4. “$LANG” 环境变量的值[;m

    [35;1m“$LANG”[;m 环境变量的值由许多应用程序设置和改变。

[33;1m      *[;m [34;1mlogin(1)[m 的 PAM 机制为本地 Linux 控制台程序进行了最初的设置

[33;1m      *[;m 显示管理器的 PAM 机制为所有的 X 程序进行了最初的设置

[33;1m      *[;m [34;1mssh(1)[m 的 PAM 机制为远程控制台程序进行了最初的设置

[33;1m      *[;m 一些显示管理器，例如 [34;1mgdm3(1)[m 会为所有 X 程序改变设置

[33;1m      *[;m 通过 [35;1m“~/.xsessionrc”[;m，X 会话启动码会为所有 X 程序改变设置

[33;1m      *[;m shell 启动码，例如 [35;1m“~/.bashrc”[;m，会为所有控制台程序改变设置

    [36;1m提示[m

    将系统默认语言环境设置为 [35;1m“en_US.UTF-8”[;m 能够获得最大的兼容性。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.4.5. 只用于 X 窗口的特定语言环境[;m

    你可以像下面那样选择只用于 X 窗口的特定语言环境，而不管你的系统使
    用 PAM 定制（参见第 4.5 节 [35;1m“PAM 和 NSS”[;m）的默认语言环境。

    这个环境能够给你提供最好的桌面体验，并保持稳定。即使 X 窗口系统不
    工作，你也可以访问带有可读信息的多功能字符终端。这对于使用非罗马
    字符（如中文，日语和韩语）的语言来说是必不可少的。

    [33;1m注意[m

    改善 X 会话管理软件包可能会使另一种可用的方法，但请阅读下面的内容
    作为设置语言环境的通用和基础的方法。对于 [34;1mgdm3(1)[m，我们知道你能够
    通过它的菜单来选择 X 会话的语言环境。

    在 PAM 配置文件中的下面这行定义了语言环境的文件位置，例如 “/etc/
    pam.d/gdm3”。

    auth    required        pam_env.so read_env=1 envfile=/etc/default/locale

    将这行改成下面那样。

    auth    required        pam_env.so read_env=1 envfile=/etc/default/locale-x

[33m    对于中文，建立一个带有 [35;1m“-rw-r--r-- 1 root root”[;m 权限的 “/etc/[m
    default/locale-x” 文件，并包含下面这行。

    LANG=[35;1m"zh_CN.UTF-8"[;m

    保持用于其它程序的默认 [35;1m“/etc/default/locale”[;m 文件有下面这行。

    LANG=[35;1m"en_US.UTF-8"[;m

    这是定制语言环境最通用的技术，并且会使 [34;1mgdm3(1)[m 本身的菜单选择对话
    框被本地化。

    对于该情况的另一种解决方法是使用 [35;1m“~/.xsessionrc”[;m 文件来改变语言环
    境。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.4.6. 文件名编码[;m

    对于跨平台的数据交换(参见第 10.1.7 节 [35;1m“可移动存储设备”[;m),你需要使
    用特殊的编码挂载文件系统.举个例子，不使用选项时，[34;1mmount(8)[m 假设
    vfat 文件系统使用 CP437. 你需要给文件名提供明确的挂载选项来使用
    UTF-8 或 CP932.

    [33;1m注意[m

    在 GNOME 这类的现代桌面环境下，当自动挂载一个热拔插 U 盘时，你可
    以提供这样的挂载选项。右击桌面上的图标，点击 [35;1m"Drive"[;m , [35;1m"Setting"[;m,
    输入 [35;1m"utf8"[;m 到 [35;1m"Mount options:"[;m. 当这个 U 盘下次挂载时，UTF-8 就
    可以了。

    [33;1m注意[m

    如果你在升级一个系统，或者从老的非 UTF-8 系统迁移磁盘，非 ASCII
    字符的文件名也许是使用老旧的 ISO-8859-1 或 eucJP 来编码. 请寻求文
    本转换工具把他们转换到 UTF-8. 参见第 11.1 节 [35;1m“文本数据转换工具”[;m.

    在默认情况下，Samba 对新的客户端(Windows NT, 200x, XP)使用
    Unicode，但对老的客户端(DOS 和 Windows 9x/Me)使用 CP850.可以在 "/
    etc/samba/smb.conf[35;1m" 文件里面，使用"[;mdos charset" 来改变老客户端的
    这个默认编码。比如说，CP932 表示为日语。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.4.7. 本地化信息和翻译文档[;m

    在 Debian 系统中显示的许多文档和文本信息有翻译存在，比如错误信息
    、标准程序输出、菜单和手册页。GNU [34;1mgettext(1)[m 命令工具链是大部分翻
    译活动的后端工具。

    [34;1maptitude(8)[m 里，[35;1m"Tasks"[;m → [35;1m"Localization"[;m 提供一个有用的二进制包扩
    展列表，给应用程序增加本地化信息和提供翻译文档。

    举个例子，你可以安装 manpages-<LANG> 包来获得本地化 man 手册页信
    息。从 [35;1m"/usr/share/man/it/"[;m 来读取 <programname> 意大利语的 man
    手册页 ,执行下面的操作。

    LANG=it_IT.UTF-8 man <programname>

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m8.4.8. 语言环境的影响[;m

    [34;1msort(1)[m 的字符排序，受语言环境的影响. 西班牙语和英语语言环境排序
    是不一样的。

    [34;1mls(1)[m 的日期格式受语言环境影响. [35;1m"LANG=C ls -l"[;m 和 "LANG=
    en_US.UTF-8" 的日期格式是不一样的(参见第 9.2.5 节 “定制时间和日期
    的显示”).

    不同语言环境的数字标点不一样.比如说，英语语言环境中, 一千点一显示
    为 [35;1m"1,000.1"[;m，而在德语语言环境中,它显示为 [35;1m"1.000,1"[;m. 你可以在电子
    表格程序里面看到这个不同。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 9 章 系统技巧[;m

    这里，描述配置和管理系统的基本技巧，大部分在控制台操作。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.1. screen 程序[;m

    对通过不可靠或断断续续的连接访问远程主机的人们而言，[34;1mscreen(1)[m 是
    一个非常有用的工具，因为它支持可中断的网络连接。

    表 9.1. 支持可中断网络连接的程序列表

    ┌───────────────────────────────────────────────────────────────┐
    │软件包│  流行度   │大小│                 说明                  │
    ├──────┼───────────┼────┼───────────────────────────────────────┤
    │screen│V:192,     │988 │VT100/ANSI 终端模拟器混合复用的终端    │
    │      │I:292      │    │                                       │
    ├──────┼───────────┼────┼───────────────────────────────────────┤
    │tmux  │V:29, I:113│673 │终端复用的备选方案（使用 [35;1m“Control-B”[;m代 │
    │      │           │    │替）                                   │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.1.1. screen(1) 的使用场景[;m

    [34;1mscreen(1)[m 不但允许一个终端窗口运行多个进程，还允许远程 shell 进程
    支持中断的连接.这里是一个典型的 [34;1mscreen(1)[m 使用场景.

     1. 登录到一个远程机器。

     2. 在单个控制台上启动 screen。

     3. 使用 ^A c ([35;1m"Control-A"[;m 接着 [35;1m"c"[;m)在 screen 中创建的窗口执行多
        个程序.

     4. 按 ^A n ([35;1m"Control-A"[;m 接着[35;1m"n"[;m)来在多个 screen 窗口间转换.

     5. 突然，你需要离开你的终端，但你不想丢掉正在做的工作，而这些工
        作需要连接来保持。

     6. 你可以通过任何方式分离 screen 会话。

[33;1m          +[;m 残忍地拔掉你的网络连接

[33;1m          +[;m 输入 ^A d ([35;1m"Control-A"[;m 接着 [35;1m"d"[;m) 并手工从远程连接退出登录

[33;1m          +[;m 输入 ^A DD ([35;1m"Control-A"[;m 接着 [35;1m"DD"[;m) 分离 screen 并退出登录

     7. 你重新登录到同一个远处主机（即使从不同的终端）。

     8. 使用 [35;1m"screen -r"[;m 启动 screen.

     9. screen 魔术般的重新附上先前所有的 screen 窗口和所有在活动运行
        的程序.

    [36;1m提示[m

    对于拨号或者按包计费的网络连接，你可以通过 screen 节省连接费用，
    应为你可以在断开连接时让一个进程继续运行，当你稍后再次连接时重新
    附上它。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.1.2. screen 命令的键绑定[;m

    在 screen 会话里,除了命令按键外的所有键盘输入都会被发送到当前窗口
    。 screen 所有命令按键是通过 ^A ([35;1m"Control-A"[;m) 加单个键[加任何参
    数] 来输入.这里有一些重要的命令按键需要记住。

    表 9.2. screen 键绑定列表

    ┌─────────────────────────────────────────────┐
    │键绑定功能│               说明               │
    ├──────────┼──────────────────────────────────┤
    │^A ?      │显示帮助屏幕（显示键绑定）        │
    ├──────────┼──────────────────────────────────┤
    │^A c      │创建一个新的窗口并切换到该窗口    │
    ├──────────┼──────────────────────────────────┤
    │^A n      │到下一个窗口                      │
    ├──────────┼──────────────────────────────────┤
    │^A p      │到前一个窗口                      │
    ├──────────┼──────────────────────────────────┤
    │^A 0      │到 0 号窗口                       │
    ├──────────┼──────────────────────────────────┤
    │^A 1      │到 1 号窗口                       │
    ├──────────┼──────────────────────────────────┤
    │^A w      │显示窗口列表                      │
    ├──────────┼──────────────────────────────────┤
    │^A a      │作为键盘输入发送 Ctrl-A 到当前窗口│
    ├──────────┼──────────────────────────────────┤
    │^A h      │把当前窗口的硬拷贝写到一个文件    │
    ├──────────┼──────────────────────────────────┤
    │^A H      │开始/结束当前窗口到文件的记录     │
    ├──────────┼──────────────────────────────────┤
    │^A ^X     │锁定终端(密码保护)                │
    ├──────────┼──────────────────────────────────┤
    │^A d      │从终端分离 screen 会话            │
    ├──────────┼──────────────────────────────────┤
    │^A DD     │分离 screen 会话并退出登录        │
    └─────────────────────────────────────────────┘


    细节参见 [34;1mscreen(1)[m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2. 数据记录和展示[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.1. 日志后台守护进程（daemon）[;m

    许多程序在[35;1m"/var/log/"[;m 目录下记录它们的活动.

[33;1m      *[;m 系统日志后台守护进程（daemon）: [34;1mrsyslogd(8)[m

    参见第 3.2.5 节 [35;1m“系统消息”[;m 和第 3.2.4 节 [35;1m“内核消息”[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.2. 日志分析[;m

    这里是主要的日志分析软件 ([35;1m"~Gsecurity::log-analyzer"[;m 在 aptitude
    (8) 中).

    表 9.3. 系统日志分析软件列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包    │ 流行度 │大小│               说明               │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │logwatch      │V:18,   │2214│用 Perl 写的日志分析软件，有好的输│
    │              │I:20    │    │出                                │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │fail2ban      │V:102,  │1735│禁用造成多个认证错误的 IP         │
    │              │I:113   │    │                                  │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │analog        │V:4,    │3529│web 服务器日志分析                │
    │              │I:123   │    │                                  │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │awstats       │V:11,   │6799│强大和特性全面的 web 服务器日志分 │
    │              │I:19    │    │析                                │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │sarg          │V:5, I:5│429 │生成 squid 分析报告               │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │pflogsumm     │V:1, I:4│111 │Postfix 日志条目概要              │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │syslog-summary│V:1, I:4│30  │总结 syslog 日志文件内容          │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │fwlogwatch    │V:0, I:0│474 │防火墙日志分析软件                │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │squidview     │V:0, I:1│189 │监控和分析 squid access.log 文件  │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │swatch        │V:0, I:0│100 │有正则表达式、高亮和曲线的日志文件│
    │              │        │    │查看器                            │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │crm114        │V:0, I:0│1099│Controllable Regex Mutilator 和垃 │
    │              │        │    │圾邮件过滤 (CRM114)               │
    ├──────────────┼────────┼────┼──────────────────────────────────┤
    │icmpinfo      │V:0, I:0│39  │解释 ICMP 信息                    │
    └───────────────────────────────────────────────────────────────┘


    [33;1m注意[m

    CRM114 提供语言架构来写模糊过滤器，使用了 TRE 正则表达式库。它主
    要在垃圾邮件过滤器中使用，但也能够用于日志分析。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.3. 清晰的记录 shell 活动[;m

    简单地使用 [34;1mscript(1)[m （参见第 1.4.9 节 [35;1m“记录 shell 活动”[;m）记录
    shell 活动会产生一个有控制字符的文件。这些控制字符可以按下面的方
    式，使用 [34;1mcol(1)[m 去掉。

[32;1m    $ script[;m
    Script started, file is typescript

    做些操作……按 Ctrl-D 退出 script.

[32;1m    $ col -bx <typescript >cleanedfile[;m
[32;1m    $ vim cleanedfile[;m

    如果你没有 script (例如：在 initramfs 里的启动过程中），你可以使
    用下面的方式代替。

[32;1m    $ sh -i 2>&1 | tee typescript[;m

    [36;1m提示[m

    像 gnome-terminal 之类的x-terminal-emulator 也能够记录。你也许需
    要增加行缓冲来用滚动条查看。

    [36;1m提示[m

    你可以使用 [34;1mscreen(1)[m 和 [35;1m"^A H"[;m (参见第 9.1.2 节 “screen 命令的键
    绑定”)来进行控制台记录。

    [36;1m提示[m

    你可以使用 [34;1memacs(1)[m 和 [35;1m"M-x shell"[;m, [35;1m"M-x eshell"[;m, 或 [35;1m"M-x term"[;m
    来进行控制台记录。你稍后可以使用 [35;1m"C-x C-w"[;m 将缓冲写到文件。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.4. 定制文本数据的显示[;m

    尽管例如 [34;1mmore(1)[m 和 [34;1mless(1)[m 这样的分页程序（参见第 1.4.5 节 “分页
    程序”）和用于高亮和格式的自定义工具（参见第 11.1.8 节 “高亮并格式
    化纯文本数据”）可以漂亮地显示文本数据，但通用的编辑器（参见第
     1.4.6 节 [35;1m“文本编辑器”[;m）是用途最广的，且可定制性最高。

    [36;1m提示[m

    对于 [34;1mvim(1)[m 和它的分页模式别名 [34;1mview(1)[m，[35;1m“:set hls”[;m 可以启用高亮搜
    索。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.5. 定制时间和日期的显示[;m

    [35;1m“ls -l”[;m 命令默认的时间和日期显示格式取决于语言环境（相关的值参见
    第 1.2.6 节 [35;1m“时间戳”[;m）。[35;1m“$LANG”[;m 变量将被首先考虑，但它会被
    [35;1m“$LC_TIME”[;m 变量覆盖。

    每个语言环境实际的默认显示格式取决于所使用的 C 标准库的版本（
    libc6 软件包），也就是说，不同的 Debian 发行版有不同的默认情况。

    如果你真的想自定义超出语言环境的时间和日期显示格式，你应该通过
[33m    [35;1m“--time-style”[;m 参数或 [35;1m“$TIME_STYLE”[;m 的值来设置时间样式值（参见ls[m
    (1)、[34;1mdate(1)[m、[35;1m“info coreutils [35;1m'ls invocation'[;m”[;m）。

    表 9.4. wheezy 中 [35;1m“ls -l”[;m 命令时间和日期的显示案例

    ┌───────────────────────────────────────────────────────────────┐
    │  时间样式值  │   语言环境    │         时间和日期显示         │
    ├──────────────┼───────────────┼────────────────────────────────┤
    │iso           │任何值         │01-19 00:15                     │
    ├──────────────┼───────────────┼────────────────────────────────┤
    │long-iso      │任何值         │2009-01-19 00:15                │
    ├──────────────┼───────────────┼────────────────────────────────┤
    │full-iso      │任何值         │2009-01-19 00:15:16.000000000   │
    │              │               │+0900                           │
    ├──────────────┼───────────────┼────────────────────────────────┤
    │语言环境      │C              │Jan 19 00:15                    │
    ├──────────────┼───────────────┼────────────────────────────────┤
    │语言环境      │en_US.UTF-8    │Jan 19 00:15                    │
    ├──────────────┼───────────────┼────────────────────────────────┤
    │语言环境      │es_ES.UTF-8    │ene 19 00:15                    │
    ├──────────────┼───────────────┼────────────────────────────────┤
    │+%d.%m.%y     │任何值         │19.01.09 00:15                  │
    │%H:%M         │               │                                │
    ├──────────────┼───────────────┼────────────────────────────────┤
    │+%d.%b.%y     │C 或           │19.Jan.09 00:15                 │
    │%H:%M         │en_US.UTF-8    │                                │
    ├──────────────┼───────────────┼────────────────────────────────┤
    │+%d.%b.%y     │es_ES.UTF-8    │19.ene.09 00:15                 │
    │%H:%M         │               │                                │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    你可以使用命令别名以避免在命令行中输入长的选项，例如 “alias ls=
[33m    [35;1m'ls --time-style=+%d.%m.%y\ %H:%M'[;m”（参见第 1.5.9 节 [35;1m“命令别名”[;m）[m
    。

    [36;1m提示[m

    ISO 8601 遵循这些 iso 格式。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.6. shell 中 echo 的颜色[;m

    大部分现代终端的 shell 中 echo 能够使用 ANSI 转义字符来显示颜色（
    参见 [35;1m“/usr/share/doc/xterm/ctlseqs.txt.gz”[;m）。

    尝试下列例子

[32;1m    $ RED=$(printf "\x1b[31m")[;m
[32;1m    $ NORMAL=$(printf "\x1b[0m")[;m
[32;1m    $ REVERSE=$(printf "\x1b[7m")[;m
[32;1m    $ echo "${RED}RED-TEXT${NORMAL} ${REVERSE}REVERSE-TEXT${NORMAL}"[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.7. 有颜色输出的命令[;m

    在交互式的环境下，命令的输出带颜色，能够给检查命令的输出带来便利
    。我在我的[35;1m"~/.bashrc"[;m里加入了下面内容.

    if [ [35;1m"$TERM"[;m != [35;1m"dumb"[;m ]; then
        eval [35;1m"`dircolors -b`"[;m
[33m        alias ls=[35;1m'ls --color=always'[;m[m
[33m        alias ll=[35;1m'ls --color=always -l'[;m[m
[33m        alias la=[35;1m'ls --color=always -A'[;m[m
        alias less=[35;1m'less -R'[;m
[33m        alias ls=[35;1m'ls --color=always'[;m[m
[33m        alias grep=[35;1m'grep --color=always'[;m[m
[33m        alias egrep=[35;1m'egrep --color=always'[;m[m
[33m        alias fgrep=[35;1m'fgrep --color=always'[;m[m
[33m        alias zgrep=[35;1m'zgrep --color=always'[;m[m
    else
        alias ll=[35;1m'ls -l'[;m
        alias la=[35;1m'ls -A'[;m
    fi

    在交互式命令中，使用别名来限制颜色的影响范围。导出环境变量
[33m    [35;1m"export GREP_OPTIONS=[35;1m'--color=auto'[;m"[;m 也有好处，这样能够让 [34;1mless(1)[m[m
    之类的页面程序看到颜色。当使用管道到其它命令时，你想去掉颜色，上
[33m    面列子 [35;1m"~/.bashrc"[;m 中的内容，可以使用 [35;1m"--color=auto"[;m 代替.[m

    [36;1m提示[m

    在交互式的环境中，通过[35;1m"TERM=dumb bash"[;m调用 shell ，你能够关闭这些
    颜色别名。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.8. 记录编辑器复杂的重复操作动作[;m

    你能够记录编辑器复杂的重复操作动作。

    对于 Vim,请按下面操作。

[33;1m      *[;m [35;1m"qa"[;m: 开始记录输入字符到有名字的寄存器 [35;1m"a"[;m.

[33;1m      *[;m … 编辑器操作

[33;1m      *[;m [35;1m"q"[;m: 结束记录输入的字符。

[33;1m      *[;m [35;1m"@a"[;m:执行寄存器 [35;1m"a 的内容"[;m.

    对于 Emacs, 请按下面操作。

[33;1m      *[;m [35;1m"C-x ("[;m: 开始定义一个键盘宏.

[33;1m      *[;m … 编辑器操作

[33;1m      *[;m [35;1m"C-x )"[;m:结束定义一个键盘宏.

[33;1m      *[;m [35;1m"C-x e"[;m: 执行一个键盘宏.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.9. 记录 X 应用程序的图形[;m

    有少量方法可以记录 X 应用程序的图像，包括xterm 显示。

    表 9.5. 图形图像处理工具列表

    ┌─────────────────────────────────────────┐
    │   软件包    │  流行度   │大小 │  命令   │
    ├─────────────┼───────────┼─────┼─────────┤
    │xbase-clients│I:46       │46   │[34;1mxwd(1)[m   │
    ├─────────────┼───────────┼─────┼─────────┤
    │gimp         │V:86, I:491│17769│GUI 菜单 │
    ├─────────────┼───────────┼─────┼─────────┤
    │imagemagick  │V:49, I:552│207  │[34;1mimport(1)[m│
    ├─────────────┼───────────┼─────┼─────────┤
    │scrot        │V:8, I:93  │50   │[34;1mscrot(1)[m │
    └─────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.2.10. 记录配置文件的变更[;m

    有特定的工具可以通过 DVCS 系统的帮助来记录配置文件的变更。

    表 9.6. 在 VCS 中记录配置历史的软件包

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包   │流行度│大 │                  说明                  │
    │           │      │小 │                                        │
    ├───────────┼──────┼───┼────────────────────────────────────────┤
    │etckeeper  │V:26, │153│使用 Git（默认）、Mercurial 或 Bazaar（ │
    │           │I:31  │   │新）来保存配置文件和它们的元数据        │
    ├───────────┼──────┼───┼────────────────────────────────────────┤
    │changetrack│V:0,  │62 │使用 RCS（旧）保存配置文件              │
    │           │I:0   │   │                                        │
    └───────────────────────────────────────────────────────────────┘


    我建议使用带有 [34;1mgit(1)[m 的 etckeeper 软件包，它将整个 [35;1m“/etc”[;m 置于
    VCS 控制之下。它的安装指南和教程参见 “/usr/share/doc/etckeeper/
    README.gz”。

    从本质上讲，运行 [35;1m“sudo etckeeper init”[;m 来为 [35;1m“/etc”[;m 初始化 git 仓
    库，与第 10.6.5 节 [35;1m“记录配置历史的 Git”[;m 中所解释的过程相似，但需
    要特殊的 hook 脚本来进行更全面的设置。

    当你改变你的配置时，你可以使用 [34;1mgit(1)[m 来正常地记录它们。你每次运
    行软件包管理命令时，它也会自动记录变更。

    [36;1m提示[m

    你可以通过执行 [35;1m“sudo GIT_DIR=/etc/.git gitk”[;m 来浏览 [35;1m“/etc”[;m 的变更
    记录，你可以清晰地看到新的已安装软件包、已移除软件包和软件包版本
    的变更。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3. 监控、控制和启动程序活动[;m

    程序活动能够使用特殊的工具监控和控制。

    表 9.7. 监控和控制程序活动工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包  │流行度 │大小 │                 说明                  │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │coreutils│V:892, │15016│[34;1mnice(1)[m: 用指定的调度优先权运行一个程序│
    │         │I:999  │     │                                       │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │bsdutils │V:866, │256  │[34;1mrenice(1)[m: 调整一个目前在运行的进程的调│
    │         │I:999  │     │度优先权值                             │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │procps   │V:816, │729  │[35;1m"/proc"[;m 文件系统工具: [34;1mps(1)[m, [34;1mtop(1)[m,   │
    │         │I:998  │     │[34;1mkill(1)[m, [34;1mwatch(1)[m, …                   │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │psmisc   │V:391, │527  │[35;1m"/proc"[;m 文件系统工具: [34;1mkillall(1)[m, fuser│
    │         │I:919  │     │(1), [34;1mpeekfd(1)[m, [34;1mpstree(1)[m              │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │time     │V:26,  │82   │[34;1mtime(1)[m:运行一个程序，并从时间消耗方面 │
    │         │I:526  │     │来报告系统资源的使用                   │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │sysstat  │V:135, │1463 │[34;1msar(1)[m, [34;1miostat(1)[m, [34;1mmpstat(1)[m, …: linux │
    │         │I:156  │     │系统性能工具                           │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │isag     │V:0,   │110  │sysstat 的交互式的系统活动图           │
    │         │I:4    │     │                                       │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │lsof     │V:200, │440  │[34;1mlsof(8)[m: 使用 [35;1m"-p"[;m 选项列出被一个系统进│
    │         │I:945  │     │程打开的文件                           │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │strace   │V:20,  │1399 │[34;1mstrace(1)[m:跟踪系统调用和信号           │
    │         │I:163  │     │                                       │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │ltrace   │V:1,   │360  │[34;1mltrace(1)[m: 跟踪库调用                  │
    │         │I:21   │     │                                       │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │xtrace   │V:0,   │333  │[34;1mxtrace(1)[m:跟踪 X11 客户端和服务器端之间│
    │         │I:1    │     │的通信                                 │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │powertop │V:6,   │604  │[34;1mpowertop(1)[m:系统能耗使用信息           │
    │         │I:229  │     │                                       │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │cron     │V:887, │252  │根据 [34;1mcron(8)[m 后台守护进程（daemon）的调│
    │         │I:997  │     │度运行一个进程                         │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │anacron  │V:452, │106  │用于非整天 24 小时运行系统的命令计划， │
    │         │I:524  │     │类 cron                                │
    ├─────────┼───────┼─────┼───────────────────────────────────────┤
    │at       │V:301, │149  │[34;1mat(1)[m 或 [34;1mbatch(1)[m: 在一个特定的时间运行│
    │         │I:546  │     │任务或在某一系统负载下运行             │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    procps 包提供了非常基础的监控、控制程序活动功能和启动程序功能。你
    应当把他们全部学会。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.1. 进程耗时[;m

    显示命令调用进程的时间消耗。

[31;1m    # time some_command >/dev/null[;m
    real    0m0.035s       # 执行时间 (占用的真实时间)
    user    0m0.000s      # 用户模式时间
    sys     0m0.020s       # 内核模式时间

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.2. 调度优先级[;m

    进程的调度优先级是被一个进程优先级值控制。

    表 9.8. 调度优先级值列表

    ┌────────────────────────────────────────┐
    │进程优先级值│        调度优先级         │
    ├────────────┼───────────────────────────┤
    │19          │最低优先级进程             │
    ├────────────┼───────────────────────────┤
    │0           │非常高的普通用户优先级进程 │
    ├────────────┼───────────────────────────┤
    │-20         │root 用户非常高的优先级进程│
    └────────────────────────────────────────┘


[31;1m    # nice  -19 top                                      # 非常优先[;m
[33m[31;1m    # nice --20 wodim -v -eject speed=2 dev=0,0 disk.img # 非常快[;m[m

    在某些情况下，极端的进程优先级值会对系统造成伤害。小心使用这个命
    令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.3. ps 命令[;m

    在 Debian 系统上的 [34;1mps(1)[m 命令同时支持 BSD 和 SystemV 特征，有助于
    识别静态的进程活动。

    表 9.9. ps 命令样式列表

    ┌──────────────────────────────────┐
    │  样式  │典型的命令│     特征     │
    ├────────┼──────────┼──────────────┤
    │BSD     │ps aux    │显示 %CPU %MEM│
    ├────────┼──────────┼──────────────┤
    │System V│ps -efH   │显示 PPID     │
    └──────────────────────────────────┘


    对于僵尸（死了的）子进程，你能够通过 [35;1m"PPID"[;m 字段的父进程 ID 来杀
    死它们。

    [34;1mpstree(1)[m 命令显示进程树。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.4. top 命令[;m

    Debian 系统上的 [34;1mtop(1)[m 拥有丰富的特征，有助于识别进程有趣的动态行
    为。

    它是一个交互式的全屏程序。你可以通过按[35;1m"h"[;m键来得到它的使用帮助，按
    [35;1m"q"[;m键来终止该程序。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.5. 列出被一个进程打开的文件[;m

    你能够通过一个进程 ID(PID)来列出该进程所有打开的文件，例如，PID
    为 1 的进程，使用下面的方式。

[32;1m    $ sudo lsof -p 1[;m

    PID=1 通常用于 init 程序.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.6. 跟踪程序活动[;m

    你能够跟踪程序活动，[34;1m使用strace(1)[m, [34;1mltrace(1)[m, [34;1mxtrace(1)[m 来跟踪系
    统调用和信号、库调用、X11 客户端和服务器端之间的通信。

    跟踪 ls 命令的系统调用。

[32;1m    $ sudo strace ls[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.7. 识别使用文件和套接字的进程[;m

    你可以通过 [34;1mfuser(1)[m 来识别出使用文件的进程，例如，用下面的方式识
    别出 [35;1m"/var/log/mail.log"[;m 由哪个进程打开。

[32;1m    $ sudo fuser -v /var/log/mail.log[;m
                         USER        PID ACCESS COMMAND
    /var/log/mail.log:   root       2946 F.... rsyslogd

    你可以看到 [35;1m"/var/log/mail.log"[;m 是由 [34;1mrsyslogd(8)[m 命令打开并写入。

    你可以通过 [34;1mfuser(1)[m 来识别出使用套接字的进程，例如，用下面的方式
    识别出 [35;1m"smtp/tcp"[;m 由哪个进程打开。

[32;1m    $ sudo fuser -v smtp/tcp[;m
                         USER        PID ACCESS COMMAND
    smtp/tcp:            Debian-exim   3379 F.... exim4

    现在你知道你的系统运行 [34;1mexim4(8)[m 来处理连接到 SMTP 端口 (25)的 TCP
    连接.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.8. 使用固定间隔重复一个命令[;m

    [34;1mwatch(1)[m 使用固定间隔重新执行一个命令，并全屏显示输出。

[32;1m    $ watch w[;m

    显示哪些人登录到系统，每 2 秒钟更新一次。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.9. 使用文件循环来重复一个命令[;m

    通过匹配某些条件的文件来循环重复一个命令，有几种方法，例如，匹配
    全局模式[35;1m"*.ext"[;m.

[33;1m      *[;m Shell 循环方式(参见第 12.1.4 节 [35;1m“shell 循环”[;m):

    for x in *.ext; do if [ -f [35;1m"$x"[;m]; then command [35;1m"$x"[;m ; fi; done

[33;1m      *[;m [34;1mfind(1)[m 和 [34;1mxargs(1)[m 联合:

    find . -type f -maxdepth 1 -name [35;1m'*.ext'[;m -print0 | xargs -0 -n 1 command

[33;1m      *[;m [34;1mfind(1)[m 使用 [35;1m"-exec"[;m 选项并执行命令:

    find . -type f -maxdepth 1 -name [35;1m'*.ext'[;m -exec command [35;1m'{}'[;m \;

[33;1m      *[;m [34;1mfind(1)[m 使用 [35;1m"-exec"[;m 选项并执行一个短的 shell 脚本:

    find . -type f -maxdepth 1 -name [35;1m'*.ext'[;m -exec sh -c [35;1m"command [35;1m'{}'[;m && echo [35;1m'successful'[;m"[;m \;

    上面的列子确保适当处理怪异的文件名（如包含空格）。 [34;1mfind(1)[m 更多高
    级的用法，参见第 10.1.5 节 [35;1m“查找文件的语法”[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.10. 从 GUI 启动一个程序[;m

    对于命令行界面（command-line interface，CLI），$PATH 环境变量所指
    定的目录中第一个匹配相应名称的程序会被执行。参见第 1.5.3 节
    [35;1m“[35;1m"$PATH"[;m 变量”[;m。

    对于遵从 freedesktop.org 标准的图形用户界面（graphical user
    interface，GUI），/usr/share/applications/ 目录中的 *.desktop 文
    件给每个程序的 GUI 菜单显示提供了必要的属性。参见第 7.2.2 节
    [35;1m“Freedesktop.org 菜单”[;m。

    举个例子，chromium.desktop 文件中为 [35;1m“Chromium 网络浏览器”[;m 定义了
    相关属性，例如程序名 [35;1m“Name”[;m，程序执行路径和参数 [35;1m“Exec”[;m，所使用的
    图标 [35;1m“Icon”[;m 等等（参见桌面配置项规范）。文件内容如下：

    [Desktop Entry]
    Version=1.0
    Name=Chromium Web Browser
    GenericName=Web Browser
    Comment=Access the Internet
    Comment[fr]=Explorer le Web
    Exec=/usr/bin/chromium %U
    Terminal=false
    X-MultipleArgs=false
    Type=Application
    Icon=chromium
    Categories=Network;WebBrowser;
    MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https;
    StartupWMClass=Chromium
    StartupNotify=true

    这是一个较为简单的说明。*.desktop 文件像下面那样被搜寻。

    桌面环境设置 $XDG_DATA_HOME 和 $XDG_DATA_DIR 环境变量。举个例子，
    在 GNOME 3 中：

[33;1m      *[;m 未设置 $XDG_DATA_HOME。（将使用默认值 $HOME/.local/share。）

[33;1m      *[;m $XDG_DATA_DIRS 被设置为 /usr/share/gnome:/usr/local/share/:/
        usr/share/。

    基准目录（参见 XDG Base Directory Specification）和应用程序目录如
    下所示。

[33;1m      *[;m $HOME/.local/share/ → $HOME/.local/share/applications/

[33;1m      *[;m /usr/share/gnome/ → /usr/share/gnome/applications/

[33;1m      *[;m /usr/local/share/ → /usr/local/share/applications/

[33;1m      *[;m /usr/share/ → /usr/share/applications/

[33;1m    *[;m.desktop 文件将按照这个顺序在这些 applications 目录中进行搜寻。

    [36;1m提示[m

    要建立一个用户自定义的 GUI 菜单项，需要在 $HOME/.local/share/
    applications/ 目录中添加一个 *.desktop 文件。

    [36;1m提示[m

    相似地，如果在这些基准目录下的 autostart 目录中建立了一个
[33;1m    *[;m.desktop 文件，则 *.desktop 文件中指定的程序会在桌面环境启动时自
    动执行。参见 Desktop Application Autostart Specification。

    [36;1m提示[m

    相似地，如果在 $HOME/Desktop 目录中建立了一个 *.desktop 文件并且
    桌面环境被配置为支持桌面图标启动器功能，则点击图标时指定的程序会
    被执行。请注意，$HOME/Desktop 目录的实际名称与语言环境有关。参见
    [34;1mxdg-user-dirs-update(1)[m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.11. 自定义被启动的程序[;m

    一些程序会被另一个程序自动启动。下面是自定义该过程的方法。

[33;1m      *[;m 应用程序配置菜单：

[33;1m          +[;m GNOME3 桌面：[35;1m“设置”[;m → [35;1m“系统”[;m → [35;1m“详细信息”[;m → “默认应用程序
            ”

[33;1m          +[;m KDE 桌面: [35;1m"K"[;m → [35;1m"Control Center 控制中心"[;m → "KDE
            Components 组件[35;1m" → "[;mComponent Chooser 组件选择器"

[33;1m          +[;m Iceweasel 浏览器：[35;1m“编辑”[;m → [35;1m“首选项”[;m → [35;1m“应用程序”[;m

[33;1m          +[;m [34;1mmc(1)[m：[35;1m“/etc/mc/mc.ext”[;m

[33;1m      *[;m 例如 [35;1m“$BROWSER”[;m、[35;1m“$EDITOR”[;m、[35;1m“$VISUAL”[;m 和 [35;1m“$PAGER”[;m 这样的环境
        变量（参见 [34;1meviron(7)[m）

[33;1m      *[;m 用于例如 [35;1m“editor”[;m、[35;1m“view”[;m、[35;1m“x-www-browser”[;m、
        [35;1m“gnome-www-browser”[;m 和 [35;1m“www-browser”[;m 这样的程序的
        [34;1mupdate-alternatives(1)[m 系统（参见第 1.4.7 节 “设置默认文本编
        辑器”）

[33;1m      *[;m [35;1m“~/.mailcap”[;m 和 [35;1m“/etc/mailcap”[;m 文件的内容关联了程序的 MIME 类
        型（参见 [34;1mmailcap(5)[m）

[33;1m      *[;m [35;1m“~/.mime.types”[;m 和 [35;1m“/etc/mime.types”[;m 文件的内容关联了 MIME 类
        型的文件扩展名（参见 [34;1mrun-mailcap(1)[m）

    [36;1m提示[m

    [34;1mupdate-mime(8)[m 会更新 [35;1m"/etc/mailcap"[;m 文件，期间会用到 "/etc/
    mailcap.order" 文件 (参见 mailcap.[34;1morder(5)[m).

    [36;1m提示[m

    debianutils 软件包提供 [34;1msensible-browser(1)[m、[34;1msensible-editor(1)[m 和
    [34;1msensible-pager(1)[m，它们可以分别对要调用的编辑器、分页程序和网络浏
    览器作出明智的选择。我建议你阅读那些 shell 脚本。

    [36;1m提示[m

    为了在 X 下运行例如 mutt 这样的控制台应用程序来作为你的首选应用程
    序，你应该像下面那样建立一个 X 应用程序并设置 “/usr/local/bin/
    mutt-term” 为你想要启动的首选应用程序。

[31;1m    # cat /usr/local/bin/mutt-term <<EOF[;m
[31;1m    #!/bin/sh[;m
    gnome-terminal -e [35;1m"mutt \$@"[;m
    EOF
    chmod 755 /usr/local/bin/mutt-term

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.12. 杀死一个进程[;m

    使用 [34;1mkill(1)[m 通过进程 ID 来杀死（发送一个信号）一个进程。

    使用 [34;1mkillall(1)[m 或 [34;1mpkill(1)[m 通过进程命令的名字或其它属性来做同样
    的事情。

    表 9.10. kill 命令常用信号列表

    ┌────────────────────────────────────────┐
    │信号值│信号名│           功能           │
    ├──────┼──────┼──────────────────────────┤
    │1     │HUP   │重启后台守护进程（daemon）│
    ├──────┼──────┼──────────────────────────┤
    │15    │TERM  │普通 kill                 │
    ├──────┼──────┼──────────────────────────┤
    │9     │KILL  │硬 kill                   │
    └────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.13. 单次任务时间安排[;m

    运行 [34;1mat(1)[m 命令来安排一次性的工作。

[32;1m    $ echo 'command -args'| at 3:40 monday[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.14. 定时任务安排[;m

    使用 [34;1mcron(8)[m 来进行定时任务安排。参见 [34;1mcrontab(1)[m 和 [34;1mcrontab(5)[m.

    你能够作为一个普通用户定时运行一个进程，比如， foo 使用 "crontab
    -e[35;1m" 命令创建一个 [34;1mcrontab(5)[m 的文件 "[;m/var/spool/cron/crontabs/foo"
    。

    这里是一个 [34;1mcrontab(5)[m 文件的列子。

[31;1m    # use /bin/sh to run commands, no matter what /etc/passwd says[;m
    SHELL=/bin/sh
[31;1m    # mail any output to paul, no matter whose crontab this is[;m
    MAILTO=paul
[31;1m    # Min Hour DayOfMonth Month DayOfWeek command (Day... are OR'ed)[;m
[31;1m    # run at 00:05, every day[;m
    5  0  *  * *   $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
[33m[31;1m    # run at 14:15 on the first of every month -- output mailed to paul[;m[m
    15 14 1  * *   $HOME/bin/monthly
[31;1m    # run at 22:00 on weekdays(1-5), annoy Joe. % for newline, last % for cc:[;m
    0 22 *   * 1-5 mail -s [35;1m"It's 10pm"[;m joe%Joe,%%Where are your kids?%.%%
    23 */2 1 2 *   echo [35;1m"run 23 minutes after 0am, 2am, 4am ..., on Feb 1"[;m
    5  4 *   * sun echo [35;1m"run at 04:05 every Sunday"[;m
[31;1m    # run at 03:40 on the first Monday of each month[;m
    40 3 1-7 * *   [ [35;1m"$(date +%a)"[;m == [35;1m"Mon"[;m ] && command -args

    [36;1m提示[m

    对那些非连续运行的系统，安装 anacron 软件包来定时执行周期性的命令
    ，命令在接近机器启动的时间运行，并允许有特定的时间间隔。参见
    [34;1manacron(8)[m 和 [34;1manacrontab(5)[m.

    [36;1m提示[m

    对于定时系统维护脚本，你能够以root 账户定时运行，把这类脚本放入 "
    /etc/cron.hourly/[35;1m", "[;m/etc/cron.daily/[35;1m", "[;m/etc/cron.weekly/[35;1m", 或 "[;m
    /etc/cron.monthly/[35;1m". 这些脚本的执行时间，可以通过 "[;m/etc/crontab"
    和 [35;1m"/etc/anacrontab"[;m 来定制。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.3.15. Alt-SysRq 键[;m

    内核编译选项 [35;1m"Magic SysRq key"[;m (SAK 键)提供预防系统故障的措施，该
    选项现在是 Debian 内核的默认值。按 Alt-SysRq 键，接着按下面键中的
    一个键，会做拯救系统的神奇事情。

    表 9.11. SAK命令键列表

    ┌───────────────────────────────────────────────────────────────┐
    │Alt-SysRq 之后的 │                  行为描述                   │
    │       键        │                                             │
    ├─────────────────┼─────────────────────────────────────────────┤
    │r                │在 X 崩溃后，从 raw 模式恢复键盘             │
    ├─────────────────┼─────────────────────────────────────────────┤
    │0                │把控制台日志级别改变到 0 来减少错误信息      │
    ├─────────────────┼─────────────────────────────────────────────┤
    │k                │kill 在当前虚拟控制台上的所有进程            │
    ├─────────────────┼─────────────────────────────────────────────┤
    │e                │发送 SIGTERM 到所有进程，除开 [34;1minit(8)[m        │
    ├─────────────────┼─────────────────────────────────────────────┤
    │i                │发送 SIGKILL 到所有进程，除开 [34;1minit(8)[m        │
    ├─────────────────┼─────────────────────────────────────────────┤
    │s                │sync 所有已经挂载的文件系统来避免数据损坏    │
    ├─────────────────┼─────────────────────────────────────────────┤
    │u                │重新以只读方式挂载所有已挂载的文件系统 (u    │
    │                 │mount)                                       │
    ├─────────────────┼─────────────────────────────────────────────┤
    │b                │reboot 系统，不同步或卸载                    │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    阅读 [34;1msignal(7)[m, [34;1mkill(1)[m 和 [34;1msync(1)[m 手册页来理解上面的描述。

    [35;1m"Alt-SysRq s"[;m, [35;1m"Alt-SysRq u"[;m 和 [35;1m"Alt-SysRq r"[;m 组合，有助于跳出真
    正坏的情形，并可以在不停止系统的情况下获得可用的键盘。

    参见 [35;1m"/usr/share/doc/linux-doc-3.*/Documentation/sysrq.txt.gz"[;m.

    [33;1m小心[m

    由于允许用户访问 root 权限的功能，Alt-SysRq 特性可能被认为是安全
    风险。在 [35;1m"/etc/rc.local"[;m 里面放入[35;1m"echo 0 >/proc/sys/kernel/sysrq"[;m
    或在 [35;1m"/etc/sysctl.conf"[;m 里放入 [35;1m"kernel.sysrq = 0"[;m来禁用 Alt-SysRq
    特性。

    [36;1m提示[m

    从 SSH 终端等，你能够通过向 [35;1m"/proc/sysrq-trigger"[;m 写入内容来使用
    Alt-SysRq 特性。例如，从 root shell 提示符运行 "echo s > /proc/
    sysrq-trigger; echo u > /proc/sysrq-trigger" 来 syncs 和 umounts
    所有已挂载的文件系统。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4. 系统维护技巧[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.1. 谁在系统里？[;m

    你可以通过下面的方法检查谁登录在系统里。

[33;1m      *[;m [34;1mwho(1)[m 显示谁登录在系统里面。

[33;1m      *[;m [34;1mw(1)[m 显示谁登录在系统里面，他们在做什么。

[33;1m      *[;m [34;1mlast(1)[m 显示用户最后登录的列表。

[33;1m      *[;m [34;1mlastb(1)[m 显示用户最后错误登录的列表。

    [36;1m提示[m

    [35;1m"/var/run/utmp"[;m 和 [35;1m"/var/log/wtmp"[;m 存储这样的用户信息。参见 login
    (1) 和 [34;1mutmp(5)[m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.2. 警告所有人[;m

    你可以通过下面的方式使用 [34;1mwall(1)[m 给登录系统的每一个人发送信息。

[32;1m    $ echo "We are shutting down in 1 hour" | wall[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.3. 硬件识别[;m

    对于 PCI 类设备(AGP, PCI-Express, CardBus, ExpressCard 等), 一开
    始就使用 [34;1mlspci(8)[m (也许加上 [35;1m"-nn"[;m 选项) 进行硬件识别比较好。

    此外，你可以通过阅读 [35;1m"/proc/bus/pci/devices"[;m 里面的内容或浏览"/
    sys/bus/pci" 下面的目录树来进行硬件识别(参见第 1.2.12 节 “procfs
    和 sysfs”).

    表 9.12. 硬件识别工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包   │   流行度   │大小│              说明               │
    ├───────────┼────────────┼────┼─────────────────────────────────┤
    │pciutils   │V:176, I:993│1220│Linux PCI 工具: [34;1mlspci(8)[m         │
    ├───────────┼────────────┼────┼─────────────────────────────────┤
    │usbutils   │V:99, I:863 │721 │Linux USB 工具: [34;1mlsusb(8)[m         │
    ├───────────┼────────────┼────┼─────────────────────────────────┤
    │pcmciautils│V:20, I:36  │90  │Linux PCMCIA 工具: [34;1mpccardctl(8)[m  │
    ├───────────┼────────────┼────┼─────────────────────────────────┤
    │scsitools  │V:0, I:4    │365 │SCSI 硬件管理工具集: [34;1mlsscsi(8)[m   │
    ├───────────┼────────────┼────┼─────────────────────────────────┤
    │procinfo   │V:1, I:15   │123 │从 [35;1m"/proc"[;m: [34;1mlsdev(8)[m 获得系统信息│
    ├───────────┼────────────┼────┼─────────────────────────────────┤
    │lshw       │V:9, I:89   │671 │硬件配置信息: [34;1mlshw(1)[m            │
    ├───────────┼────────────┼────┼─────────────────────────────────┤
    │discover   │V:38, I:938 │90  │硬件识别系统: [34;1mdiscover(8)[m        │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.4. 硬件配置[;m

    像 GNOME 和 KDE 这类现代图形桌面系统，虽然大部分硬件的配置都能够
    通过相应的图形配置工具来管理，但知道一些配置它们的基础方式，也是
    一个好的主意。

    表 9.13. 硬件配置工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │     软件包      │流行度│大小│              说明               │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │console-setup    │V:304,│385 │Linux 控制台字体和键盘表工具     │
    │                 │I:946 │    │                                 │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │x11-xserver-utils│V:356,│511 │X 服务端工具: [34;1mxset(1)[m, [34;1mxmodmap(1)[m│
    │                 │I:576 │    │                                 │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │acpid            │V:313,│143 │管理高级可配置和电源接口(ACPI)事 │
    │                 │I:590 │    │件分发的后台守护进程（daemon）   │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │acpi             │V:26, │45  │显示 ACPI 设备信息的工具         │
    │                 │I:566 │    │                                 │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │apmd             │V:0,  │132 │管理高级电源管理(APM)事件分发的后│
    │                 │I:6   │    │台守护进程（daemon）             │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │sleepd           │V:0,  │79  │在笔记本空闲时，使其进入休眠状态 │
    │                 │I:0   │    │的后台守护进程（daemon）         │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │hdparm           │V:362,│248 │硬盘访问优化 (参见第 9.5.9 节 “硬│
    │                 │I:588 │    │盘优化”)                         │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │smartmontools    │V:121,│1716│使用 S.M.A.R.T. 控制和监控存储系 │
    │                 │I:196 │    │统                               │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │setserial        │V:6,  │113 │串口管理工具集                   │
    │                 │I:11  │    │                                 │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │memtest86+       │V:1,  │2391│内存硬件管理工具集               │
    │                 │I:35  │    │                                 │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │scsitools        │V:0,  │365 │SCSI 硬件管理工具集              │
    │                 │I:4   │    │                                 │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │setcd            │V:0,  │35  │光驱访问优化                     │
    │                 │I:1   │    │                                 │
    ├─────────────────┼──────┼────┼─────────────────────────────────┤
    │big-cursor       │I:0   │27  │X 系统的大鼠标光标               │
    └───────────────────────────────────────────────────────────────┘


    这里, ACPI 是一个比 APM 新的电源管理系统框架。

    [36;1m提示[m

    现代系统的 CPU 频率调整功能，是由内核模块 acpi_cpufreq 管理的。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.5. 系统时间和硬件时间[;m

    下面设置系统的硬件时间为：MM/DD hh:mm, CCYY.

[31;1m    # date MMDDhhmmCCYY[;m
[33m[31;1m    # hwclock --utc --systohc[;m[m
[33m[31;1m    # hwclock --show[;m[m

    Debian 系统的时间通常显示为本地时间，但硬件时间通常使用 UTC(GMT)
    时间。

    如果硬件（BIOS）时间设置为 UTC 时间，请在[35;1m“/etc/default/rcS”[;m里面设
    置[35;1m“UTC=yes”[;m。

    下面是重新配置 Debian 系统使用的时区。

[31;1m    # dpkg-reconfigure tzdata[;m

    如果你希望通过网络来更新系统时间，考虑使用 ntp, ntpdate 和 chrony
    这类包提供的 NTP 服务。

    [36;1m提示[m

    在 systemd 下，是使用 systemd-timesyncd 来替代进行网络时间同步。
    参见 [34;1msystemd-timesyncd(8)[m.

    参见下面内容。

[33;1m      *[;m 精确时间和日期管理 HOWTO

[33;1m      *[;m NTP 公共服务项目

[33;1m      *[;m ntp-doc 包

    [36;1m提示[m

    在 ntp 包里面的 [34;1mntptrace(8)[m 能够跟踪 NTP 服务链至原始源。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.6. 终端配置[;m

    有几个组件可以用来配置字符控制台和 [34;1mncurses(3)[m 系统功能。

[33;1m      *[;m [35;1m“/etc/terminfo/*/*”[;m 文件（[34;1mterminfo(5)[m）

[33;1m      *[;m [35;1m“$TERM”[;m 环境变量（[34;1mterm(7)[m）

[33;1m      *[;m [34;1msetterm(1)[m、[34;1mstty(1)[m、[34;1mtic(1)[m 和 [34;1mtoe(1)[m

    如果 xterm 的 terminfo 对非 Debian 的 xterm 不起作用，则当你从远
    程登陆到 Debian 系统时，你需要改变你的终端类型 [35;1m“$TERM”[;m，从
    [35;1m“xterm”[;m 更改为功能受限的版本（例如 [35;1m“xterm-r6”[;m）。更多内容参见 “/
    usr/share/doc/libncurses5/FAQ”。[35;1m“dumb”[;m 是 [35;1m“$TERM”[;m 中最通用的。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.7. 声音基础设施[;m

    用于现在的 Linux 的声卡设备驱动程序由高级 Linux 声音体系（
    Advanced Linux Sound Architecture，ALSA）提供。ALSA 提供了兼容之
    前的开放声音系统（Open Sound System，OSS）的模拟模式。

    [36;1m提示[m

    使用 [35;1m“cat /dev/urandom > /dev/audio”[;m 或 [34;1mspeaker-test(1)[m 来测试扬
    声器（^C 停止）。

    [36;1m提示[m

    如果你无法听到声音，那你的扬声器可能连接到了一个静音输出。现代的
    声音系统有许多输出。alsa-utils 软件包中的 [34;1malsamixer(1)[m 可以很好地
    配置声音和静音设置。

    应用软件可被配置为不仅直接访问声音设备，也可以通过一些标准化声音
    服务器系统来访问它们。

    表 9.14. 声音软件包

    ┌───────────────────────────────────────────────────────────────┐
    │     软件包      │ 流行度 │大小│             说明              │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │alsa-utils       │V:381,  │2119│配置和使用 ALSA 的工具         │
    │                 │I:520   │    │                               │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │oss-compat       │V:3,    │20  │在 ALSA 下兼容 OSS，预防 “/dev/│
    │                 │I:39    │    │dsp not found” 错误            │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │jackd            │V:3,    │32  │JACK Audio Connection Kit.     │
    │                 │I:28    │    │(JACK) 服务器（低延迟）        │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │libjack0         │V:0,    │337 │JACK Audio Connection Kit.     │
    │                 │I:16    │    │(JACK) 库（低延迟）            │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │nas              │V:0, I:0│239 │网络音频系统（Network Audio    │
    │                 │        │    │System，NAS）服务器            │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │libaudio2        │I:545   │161 │网络音频系统（Network Audio    │
    │                 │        │    │System，NAS）库                │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │pulseaudio       │V:369,  │6137│PulseAudio 服务器，替代 ESD    │
    │                 │I:500   │    │                               │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │libpulse0        │V:263,  │952 │PulseAudio 客户端库，替代 ESD  │
    │                 │I:647   │    │                               │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │libgstreamer1.0-0│V:253,  │5006│GStreamer：GNOME 声音引擎      │
    │                 │I:527   │    │                               │
    ├─────────────────┼────────┼────┼───────────────────────────────┤
    │libphonon4       │I:207   │672 │Phonon：KDE 声音引擎           │
    └───────────────────────────────────────────────────────────────┘


    每个流行的桌面环境通常都有一个通用的声音引擎。每个被应用程序使用
    的声音引擎都可以选择连接到不同的声音服务器。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.8. 关闭屏幕保护[;m

    关闭屏幕保护，使用下面的命令。

    表 9.15. 关闭屏幕保护命令列表

    ┌───────────────────────────────────────────────────────┐
    │           环境            │           命令            │
    ├───────────────────────────┼───────────────────────────┤
    │Linux 控制台               │setterm -powersave off     │
    ├───────────────────────────┼───────────────────────────┤
    │X 窗口（关闭屏幕保护）     │xset s off                 │
    ├───────────────────────────┼───────────────────────────┤
    │X 窗口（关闭 dpms）        │xset -dpms                 │
    ├───────────────────────────┼───────────────────────────┤
    │X 窗口（屏幕保护 GUI 配置）│xscreensaver-command -prefs│
    └───────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.9. 关闭蜂鸣声[;m

    可以把电脑的扬声器拔掉来关闭蜂鸣声。把 pcspkr 内核模块删除，也可
    以做到这点。

    [34;1mbash(1)[m 用到的 [34;1mreadline(3)[m 程序，当遇到告警字符(ASCII=7)时，将会
    发生。下面的操作将阻止发生。

[32;1m    $ echo "set bell-style none">> ~/.inputrc[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.10. 内存使用[;m

    对你来说，这里有两种可用的方法来得到内存的使用情况。

[33;1m      *[;m [35;1m“/var/log/dmesg”[;m 中的内核启动信息包含了可用内存的精确总大小。

[33;1m      *[;m [34;1mfree(1)[m 和 [34;1mtop(1)[m 显示正在运行的系统中内存资源的相关信息。

    下面是一个例子。

[31;1m    # grep '\] Memory' /var/log/dmesg[;m
    [    0.004000] Memory: 990528k/1016784k available (1975k kernel code, 25868k reserved, 931k data, 296k init)
[32;1m    $ free -k[;m
                 total       used       free     shared    buffers     cached
    Mem:        997184     976928      20256          0     129592     171932
    -/+ buffers/cache:     675404     321780
    Swap:      4545576          4    4545572

    你可能会觉得奇怪：“dmesg 告诉你 free 为 990 MB，而 free -k 告诉你
    free 为 320 MB。这丢失了超过 600 MB ……”。

    别担心 [35;1m“Mem:”[;m 这行中 [35;1m“used”[;m 较大的值以及 [35;1m“free”[;m 较小的值，放轻松
    ，你需要查看的是下面的那个（在上面的例子中它们是 675404 和 321780
    ）。

    对于我的 MacBook，有 1GB=1048576k 内存（显卡系统用掉一些），我看
    到的如下。

    表 9.16. 报告的内存大小

    ┌──────────────────────────────────────────────────┐
    │        报告         │            大小            │
    ├─────────────────────┼────────────────────────────┤
    │dmesg 中 total 的大小│1016784k = 1GB - 31792k     │
    ├─────────────────────┼────────────────────────────┤
    │dmesg 中的 free      │990528k                     │
    ├─────────────────────┼────────────────────────────┤
    │shell 下的 total     │997184k                     │
    ├─────────────────────┼────────────────────────────┤
    │shell 下的 free      │20256k（但有效的为 321780k）│
    └──────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.4.11. 系统安全性和完整性检查[;m

    糟糕的系统维护可能会暴露你的系统，导致它被外部非法使用。

    对于系统安全性和完整性的检查，你需要从下面这些方面开始。

[33;1m      *[;m debsums 软件包，参见 [34;1mdebsums(1)[m 和第 2.5.2 节 [35;1m“顶层“Release”[;m
        文件及真实性”。

[33;1m      *[;m chkrootkit 软件包，参见 [34;1mchkrootkit(1)[m。

[33;1m      *[;m clamav 软件包家族，参见 [34;1mclamscan(1)[m 和 [34;1mfreshclam(1)[m。

[33;1m      *[;m Debian security FAQ。

[33;1m      *[;m Securing Debian Manual。

    表 9.17. 用于系统安全性和完整性检查的工具

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包  │流行度│大小 │                 说明                  │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │logcheck  │V:11, │100  │后台守护进程（daemon），将系统日志文件 │
    │          │I:13  │     │中的异常通过邮件发送给管理员           │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │debsums   │V:5,  │120  │实用程序，使用 MD5 校验码对已安装软件包│
    │          │I:40  │     │的文件进行校验                         │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │chkrootkit│V:7,  │888  │rootkit 检测软件                       │
    │          │I:27  │     │                                       │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │clamav    │V:15, │698  │Unix 的反病毒实用程序 —— 命令行界面    │
    │          │I:68  │     │                                       │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │tiger     │V:3,  │2485 │报告系统安全漏洞                       │
    │          │I:3   │     │                                       │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │tripwire  │V:3,  │12166│文件和目录完整性检测软件               │
    │          │I:3   │     │                                       │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │john      │V:2,  │449  │先进的密码破解工具                     │
    │          │I:13  │     │                                       │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │aide      │V:2,  │2038 │高级入侵环境检测 —— 静态二进制         │
    │          │I:2   │     │                                       │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │integrit  │V:0,  │313  │文件完整性验证程序                     │
    │          │I:0   │     │                                       │
    ├──────────┼──────┼─────┼───────────────────────────────────────┤
    │crack     │V:0,  │128  │密码猜测程序                           │
    │          │I:0   │     │                                       │
    └───────────────────────────────────────────────────────────────┘


    下面是一个简单的脚本，用来检测典型的所有人可写的错误文件权限。

[31;1m    # find / -perm 777 -a \! -type s -a \! -type l -a \! \( -type d -a -perm 1777 \)[;m

    [33;1m小心[m

    由于 debsums 软件包使用本地存储的 MD5 校验码，因此面对恶意攻击，
    也不能完全相信系统安全性检测工具。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5. 数据存储技巧[;m

    使用 live CD 或 debian-installer CD 以救援模式启动你的系统，可以
    让你简单地重新配置你的启动设备的数据存储。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.1. 硬盘空间使用情况[;m

    硬盘空间的使用情况可以通过 mount、coreutils 和 xdu 软件包提供的程
    序来评估：

[33;1m      *[;m [34;1mmount(8)[m 显示所有挂载的文件系统(= 磁盘).

[33;1m      *[;m [34;1mdf(1)[m 报告文件系统使用的硬盘空间。

[33;1m      *[;m [34;1mdu(1)[m 报告目录树使用的硬盘空间。

    [36;1m提示[m

    你可以将 [34;1mdu(8)[m 的输出传输给 xdu(1x)，来使用它的图形交互式演示，例
    如 [35;1m“du -k . |xdu”[;m、[35;1m“sudo du -k -x / |xdu”[;m 等等。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.2. 硬盘分区配置[;m

    对于硬盘分区配置，尽管 [34;1mfdisk(8)[m 被认为是标准的配置，但是 parted
    (8) 工具还是值得注意的。

    大多数 PC 使用经典的主引导记录（Master Boot Record，MBR）方案，将
    硬盘分区数据保存在第一个扇区，即 LBA 扇区 0（512 字节）。

    [33;1m注意[m

    一些带有可扩展固件接口（Extensible Firmware Interface，EFI）的新
    PC，包括基于 Intel 的 Mac，使用全局唯一标识分区表（GUID Partition
    Table，GPT）方案，硬盘分区数据不保存在第一个扇区。

    尽管 [34;1mfdisk(8)[m 一直是硬盘分区的标准工具，但现在 [34;1mparted(8)[m 替代了它
    。

    表 9.18. 硬盘分区管理软件包

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包  │ 流行度  │大小│ GPT │             说明              │
    ├──────────┼─────────┼────┼─────┼───────────────────────────────┤
    │util-linux│V:891,   │3366│不支 │多种系统工具，包含 [34;1mfdisk(8)[m 和 │
    │          │I:999    │    │持   │[34;1mcfdisk(8)[m                      │
    ├──────────┼─────────┼────┼─────┼───────────────────────────────┤
    │parted    │V:370,   │279 │支持 │GNU Parted，硬盘分区调整程序   │
    │          │I:568    │    │     │                               │
    ├──────────┼─────────┼────┼─────┼───────────────────────────────┤
    │gparted   │V:23,    │7231│支持 │基于 libparted 的 GNOME 分区编 │
    │          │I:148    │    │     │辑程序                         │
    ├──────────┼─────────┼────┼─────┼───────────────────────────────┤
    │gdisk     │V:66,    │780 │支持 │用于 GPT 硬盘的分区编辑程序    │
    │          │I:502    │    │     │                               │
    ├──────────┼─────────┼────┼─────┼───────────────────────────────┤
    │kpartx    │V:14,    │84  │支持 │为分区建立设备映射的程序       │
    │          │I:27     │    │     │                               │
    └───────────────────────────────────────────────────────────────┘


    [33;1m小心[m

    尽管 [34;1mparted(8)[m 声称也能用来创建和调整文件系统，但使用维护最好的专
    门工具来做这些事会更为安全，例如 [34;1mmkfs(8)[m（mkfs.[34;1mmsdos(8)[m、
    mkfs.[34;1mext2(8)[m、mkfs.[34;1mext3(8)[m、mkfs.[34;1mext4(8)[m……）和 [34;1mresize2fs(8)[m。

    [33;1m注意[m

    为了在 GPT 和 MBR 之间切换，你需要直接删除开头的几个块中的内容（
    参见第 9.7.6 节 [35;1m“清空文件内容”[;m）并使用 “parted /dev/sdx mklabel
    gpt” 或 [35;1m“parted /dev/sdx mklabel msdos”[;m 来设置它。请注意，这里使
    用的 [35;1m“msdos”[;m 是用于 MBR。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.3. 使用 UUID 访问分区[;m

    尽管重新配置你的分区或可移动存储介质的激活顺序可能会给分区产生不
    同的名字，但你可以使用同一个 UUID 来访问它们。如果你有多个硬盘并
    且你的 BIOS 没有给它们一致的设备名的话，使用 UUID 是不错的选择。

[33;1m      *[;m [34;1mmount(8)[m 命令带有 [35;1m“-U”[;m 选项可以使用UUID 来挂载一个块设备，而
        不必使用他的文件名称，例如 [35;1m“/dev/sda3”[;m。

[33;1m      *[;m [35;1m“/etc/fstab”[;m（参见 [34;1mfstab(5)[m）可以使用 UUID。

[33;1m      *[;m 引载加载程序（第 3.1.2 节 [35;1m“第二阶段：引载加载程序”[;m）也可以使
        用 UUID。

    [36;1m提示[m

    你可以使用 [34;1mblkid(8)[m 来查看一个特定块设备的 UUID。

    [36;1m提示[m

    如果需要的话，设备（例如可移动存储介质）的设备节点可以通过 udev
    规则使其变为静态。参见第 3.3 节 [35;1m“udev 系统”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.4. LVM2[;m

    LVM2 是一个用于 Linux 内核的逻辑卷管理器。使用 LVM2 的话，硬盘分
    区可以创建在逻辑卷上来替代物理硬盘。

    LVM 有下列需求。

[33;1m      *[;m Linux 内核中的设备映射支持（Debian 内核默认支持）

[33;1m      *[;m 用户自定义设备映射支持库（libdevmapper* 软件包）

[33;1m      *[;m 用户自定义 LVM2 工具（lvm2 软件包）

    请从下面的 man 手册开始了解 LVM2。

[33;1m      *[;m [34;1mlvm(8)[m：LVM2 机制的基础知识（列出了所有 LVM2 命令）

[33;1m      *[;m lvm.[34;1mconf(5)[m：LVM2 的配置文件

[33;1m      *[;m [34;1mlvs(8)[m：报告逻辑卷的相关信息

[33;1m      *[;m [34;1mvgs(8)[m：报告卷组的相关信息

[33;1m      *[;m [34;1mpvs(8)[m：报告物理卷的相关信息

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.5. 文件系统配置[;m

    对于 ext4 文件系统, e2fsprogs 包提供下面的工具。

[33;1m      *[;m mkfs.[34;1mext4(8)[m 创建新的 ext4 文件系统

[33;1m      *[;m fsck.[34;1mext4(8)[m 检查和修复现有 ext4 文件系统

[33;1m      *[;m [34;1mtune2fs(8)[m 配置 ext4 文件系统的超级块

[33;1m      *[;m [34;1mdebugfs(8)[m 交互式的调试 ext4 文件系统. (它有 undel 命令来恢复
        已经删除的文件.)

    [34;1mmkfs(8)[m 和 [34;1mfsck(8)[m 命令是由 e2fsprogs 包提供的，是各种文件系统相
    关程序的前端。(mkfs.fstype 和 fsck.fstype). 对于 ext4 文件系统,它
    们是 mkfs.[34;1mext4(8)[m 和 fsck.[34;1mext4(8)[m (它们被符号链接到 [34;1mmke2fs(8)[m 和
    [34;1me2fsck(8)[m).

    Linux 支持的每一个文件系统，有相似的命令。

    表 9.19. 文件系统管理包列表

    ┌───────────────────────────────────────────────────────────────┐
    │   软件包    │ 流行度  │大小│               说明               │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │e2fsprogs    │V:507,   │1223│ext2/ext3/ext4 文件系统工具       │
    │             │I:999    │    │                                  │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │reiserfsprogs│V:8, I:26│891 │Reiserfs 文件系统工具             │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │dosfstools   │V:104,   │235 │FAT 文件系统工具. (Microsoft:     │
    │             │I:556    │    │MS-DOS, Windows)                  │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │xfsprogs     │V:18,    │4664│XFS 文件系统工具. (SGI: IRIX)     │
    │             │I:93     │    │                                  │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │ntfs-3g      │V:165,   │1355│NTFS 文件系统工具. (Microsoft:    │
    │             │I:550    │    │Windows NT, …)                    │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │jfsutils     │V:1, I:13│1533│JFS 文件系统工具. (IBM: AIX, OS/2)│
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │reiser4progs │V:0, I:5 │1325│Reiser4 文件系统工具              │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │hfsprogs     │V:0, I:9 │303 │HFS 和 HFS Plus 文件系统工具.     │
    │             │         │    │(Apple: Mac OS)                   │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │btrfs-progs  │V:28,    │3146│Btrfs 文件系统工具                │
    │             │I:44     │    │                                  │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │zerofree     │V:2, I:70│25  │把 ext2/3/4 文件系统上空闲块设置为│
    │             │         │    │零的程序                          │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    Ext4 文件系统是 Linux 系统上默认的文件系统，强烈推荐使用这个文件
    系统，除非你有特殊的理由不使用。

    [36;1m提示[m

    Btrfs 文件系统在 Linux 内核 3.2(Debian wheezy)上存在。它被期望作
    为 ext4 文件系统之后的下一个默认文件系统。

    [31;1m警告[m

    在得到当前内核空间的 [34;1mfsck(8)[m 特征和引导管理器支持前，你的关键数据
    不应当使用 Btrfs 文件系统。

    [36;1m提示[m

    一些工具可以在没有 Linux 内核支持的情况下访问文件系统(参见第
     9.7.2 节 [35;1m“不挂载磁盘操作文件”[;m).

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.6. 文件系统创建和完整性检查[;m

    [34;1mmkfs(8)[m 在 Linux 系统上创建文件系统。[34;1mfsck(8)[m 命令在 Linux系统上提
    供文件系统完整性检查和修复功能。

    在文件系统创建后，Debian 现在默认不周期性的运行 fsck。

    [33;1m小心[m

    在已经挂载的文件系统上运行 fsck ，一般是不安全的.

    [36;1m提示[m

    在 [35;1m"/etc/mke2fs.conf"[;m 里设置 [35;1m"enable_periodic_fsck"[;m 并使用
    [35;1m"tune2fs -c0 /dev/<partition_name>"[;m 设置最大挂载数为 0，便可以在
    重启时，让 root 文件系统包括在内的所有文件系统上，安全的运行fsck
    (8) 命令. 参见 mke2fs.[34;1mconf(5)[m 和 [34;1mtune2fs(8)[m.

    [36;1m提示[m

    从启动脚本里面运行的 [34;1mfsck(8)[m 命令结果，可以在 [35;1m"/var/log/fsck/"[;m 目
    录下查看。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.7. 通过挂载选项优化文件系统[;m

    [35;1m“/etc/fstab”[;m 中包含了基础的静态文件系统配置。例如，

[31;1m    # <file system> <mount point>   <type>  <options>       <dump>  <pass>[;m
    proc            /proc           proc    defaults        0       0
    UUID=709cbe4c-80c1-56db-8ab1-dbce3146d2f7 / ext4 noatime,errors=remount-ro 0 1
    UUID=817bae6b-45d2-5aca-4d2a-1267ab46ac23 none swap sw  0       0
    /dev/scd0       /media/cdrom0   udf,iso9660 user,noauto 0       0

    [36;1m提示[m

    UUID（参见第 9.5.3 节 [35;1m“使用 UUID 访问分区”[;m）可以替代一般的块设备
    名称（例如 [35;1m“/dev/sda1”[;m、[35;1m“/dev/sda2”[;m……）来识别一个块设备。

    一个文件系统的性能和特性可以通过所用的挂载选项来进行优化（参见
    [34;1mfstab(5)[m 和 [34;1mmount(8)[m）。值得注意的有以下几点。

[33;1m      *[;m [35;1m“defaults”[;m 选项隐含的默认选项为：
        [35;1m“rw,suid,dev,exec,auto,nouser,async”[;m。（通常）

[33;1m      *[;m [35;1m“noatime”[;m 或 [35;1m“relatime”[;m 选项对于加速读取访问非常有效。（通常
        ）

[33;1m      *[;m [35;1m“user”[;m 选项允许一个普通用户挂载文件系统。这个选项是
        [35;1m“noexec,nosuid,nodev”[;m 选项的组合。（通常，用于 CD 或 usb 存储
        设备）

[33;1m      *[;m [35;1m“noexec,nodev,nosuid”[;m 选项组合被用来增强安全性。（通常）

[33;1m      *[;m [35;1m"noauto"[;m 选项限制挂载，只有明确进行挂载操作才进行挂载（通常）

[33;1m      *[;m 用于 ext3fs 的 [35;1m“data=journal”[;m 选项可以增强电源故障时数据的完
        整性，但会损失一些写入速度。

    [36;1m提示[m

    配置 root 文件系统非默认的日志模式，你需要向内核提供启动参数(参见
    第 3.1.2 节 [35;1m“第二阶段：引载加载程序”[;m),比如说 "rootflags=data=
    journal[35;1m"。对于 lenny 版本,默认的日志模式是 "[;mrootflags=data=
    ordered[35;1m".对于 squeeze 版本，是"[;mrootflags=data=writeback".

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.8. 通过超级块（superblock）优化文件系统[;m

    一个文件系统的特性可以使用 [34;1mtune2fs(8)[m 命令通过超级块来优化。

[33;1m      *[;m 执行 [35;1m“sudo tune2fs -l /dev/hda1”[;m 可以显示 [35;1m“/dev/hda1”[;m 上的文
        件系统超级块内容。

[33;1m      *[;m 执行[35;1m"sudo tune2fs -c 50 /dev/hda1"[;m 改变 [35;1m"/dev/hda1"[;m 文件系统
        的检查(在启动时执行 fsck)频率为每 50 次启动.

[33;1m      *[;m 执行 [35;1m“sudo tune2fs -j /dev/hda1”[;m 会给文件系统添加日志功能，即
        [35;1m“/dev/hda1”[;m 的文件系统从 ext2 转换为 ext3。（对未挂载的文件系
        统这么做。）

[33;1m      *[;m 执行 “sudo tune2fs -O extents,uninit_bg,dir_index /dev/hda1 &
        & fsck -pf /dev/hda1” 在 [35;1m“/dev/hda1”[;m 上将它从 ext3 转换为
        ext4。（对未挂载的系统这么做。）

    [36;1m提示[m

    尽管 [34;1mtune2fs(8)[m 的名字是这样的，但它不仅能用于 ext2 文件系统，也
    能用于 ext3 和 ext4 文件系统。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.9. 硬盘优化[;m

    [31;1m警告[m

    在你折腾硬盘配置之前，请检查你的硬件并阅读 [34;1mhdparam(8)[m 的 man 手册
    页，因为这可能会对数据完整性造成相当大的危害。

    你可以通过 [35;1m“hdparm -tT /dev/hda”[;m 来测试 [35;1m“/dev/hda”[;m 硬盘的访问速度
    。对于一些使用 (E)IDE 连接的硬盘，你可以使用 “hdparm -q -c3 -d1
    -u1 -m16 /dev/hda” 来启用 [35;1m“(E)IDE 32 位支持”[;m、启用 “using_dma
    flag”、设置 [35;1m“interrupt-unmask flag”[;m 并设置 “multiple 16 sector I/
    O”（危险！），从而加速硬盘访问速度。

    你可以通过 [35;1m“hdparm -W /dev/sda”[;m 来测试 [35;1m“/dev/sda”[;m 硬盘的写入缓存
    功能。你可以使用 [35;1m“hdparm -W 0 /dev/sda”[;m 关闭写入缓存功能。

    现代高速 CD-ROM 光驱，你可以使用 [35;1m"setcd -x 2"[;m 降低速度，来读取不
    当压缩的 CDROM 光盘。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.10. 固态硬盘优化[;m

    固态硬盘（solid state drive，SSD）的性能和硬盘磨损可以通过下列方
    式优化。

[33;1m      *[;m 使用最新的 Linux 内核。（>= 3.2）

[33;1m      *[;m 减少读取硬盘访问的硬盘写入。

[33;1m          +[;m 在 /etc/fstab 中设置 [35;1m“noatime”[;m 或 [35;1m“relatime”[;m 挂载选项。

[33;1m      *[;m 启用 TRIM 命令。

[33;1m          +[;m 在 /etc/fstab 中为 ext4 文件系统、swap 分区、Btrfs 等设置
            discard 挂载选项。参见 [34;1mfstab(5)[m。

[33;1m          +[;m 在 /etc/lvm/lvm.conf 中为 LVM 设置 [35;1m“discard”[;m 选项。参见
            lvm.[34;1mconf(5)[m。

[33;1m          +[;m 在 /etc/crypttab 中为 dm-crypt 设置 [35;1m“discard”[;m 选项。参见
            [34;1mcrypttab(5)[m。

[33;1m      *[;m 启用 SSD 硬盘空间分配优化方案。

[33;1m          +[;m 在 /etc/fstab 中为 Brtfs 设置 [35;1m“ssd”[;m 挂载选项。

[33;1m      *[;m 对于笔记本电脑，使系统每 10 分钟刷新数据到硬盘。

[33;1m          +[;m 在 /etc/fstab 中设置 [35;1m“commit=600”[;m 挂载选项。参见 [34;1mfstab(5)[m
            。

[33;1m          +[;m 设置 pm-utils 使用笔记本模式，即使在 AC 电源供电下。参见
            Debian BTS #659260.

    [31;1m警告[m

    将刷新间隔从一般的 5 秒改为 10 分钟会导致遇到电源故障时数据容易丢
    失。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.11. 使用 SMART 预测硬盘故障[;m

    你可以使用兼容 SMART 的 [34;1msmartd(8)[m 后台守护进程（daemon）来监控和
    记录你的硬盘。

     1. 在 BIOS 中启用 SMART 功能。

     2. 安装 smartmontools 软件包。

     3. 通过 [34;1mdf(1)[m 列出硬盘驱动并识别它们。

[33;1m          +[;m 让我们假设要监控的硬盘为 [35;1m“/dev/hda”[;m。

     4. 检查 [35;1m“smartctl -a /dev/hda”[;m 的输出，看 SMART 功能是否已启用。

[33;1m          +[;m 如果没有，通过 [35;1m“smartctl -s on -a /dev/hda”[;m 启用它。

     5. 通过下列方式运行 [34;1msmartd(8)[m 后台守护进程（daemon）。

[33;1m          +[;m 消除 /etc/default/smartmontools” 文件中 “start_smartd=
            yes” 的注释。

[33;1m          +[;m 通过 [35;1m“sudo /etc/init.d/smartmontools restart”[;m 重新启动
            [34;1msmartd(8)[m 后台守护进程（daemon）。

    [36;1m提示[m

    [34;1msmartd(8)[m 后台守护进程（daemon）可以使用 /etc/smartd.conf 文件进
    行自定义，文件中包含了相关的警告。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.12. 通过 $TMPDIR 指定临时存储目录[;m

    应用程序一般在临时存储目录 [35;1m“/tmp”[;m 下建立临时文件。如果 [35;1m“/tmp”[;m 没
    有足够的空间，你可以通过 $TMPDIR 变量来为程序指定临时存储目录。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.13. 通过 LVM 扩展可用存储空间[;m

    在安装时创建在 Logical Volume Manager 逻辑卷管理(LVM) (Linux 特
    性) 上的分区，它们可以容易的通过合并扩展或删除扩展的方式改变大小
    ，而不需要在多个存储设备上进行大量的重新配置。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.14. 通过挂载另一个分区来扩展可用存储空间[;m

    如果你有一个空的分区（例如 [35;1m“/dev/sdx”[;m），你可以使用 mkfs.[34;1mext4(1)[m
    将它格式化，并使用 [34;1mmount(8)[m 将它挂载到你需要更多空间的目录。（你
    需要复制原始数据内容。）

[32;1m    $ sudo mv work-dir old-dir[;m
[32;1m    $ sudo mkfs.ext4 /dev/sdx[;m
[32;1m    $ sudo mount -t ext4 /dev/sdx work-dir[;m
[32;1m    $ sudo cp -a old-dir/* work-dir[;m
[32;1m    $ sudo rm -rf old-dir[;m

    [36;1m提示[m

    你也可以选择挂载一个空硬盘映像文件（参见第 9.6.5 节 “制作空的磁盘
    映像文件”）作为一个循环设备（参见第 9.6.3 节 [35;1m“挂载磁盘映像文件”[;m）
    。实际的硬盘使用量会随着实际存储数据的增加而增加。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[33m[37;1m9.5.15. 通过 “mount --bind” 挂载另一个目录来扩展可用存储空间[;m[m

    如果你在另一个分区里有一个带有可用空间的空目录（例如 “/path/to/
[33m    emp-dir”），你可以通过带有 [35;1m“--bind”[;m 选项的 [34;1mmount(8)[m，将它挂载到一[m
    个你需要更多空间的目录（例如 [35;1m“work-dir”[;m）。

[33m[32;1m    $ sudo mount --bind /path/to/emp-dir work-dir[;m[m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.16. 通过 overlay 挂载（overlay-mounting）另一个目录来扩展可用存储[;m
[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m空间[;m

    如果你在另一个分区表中有可用的空间（例如，[35;1m“/path/to/empty”[;m 和 “/
    path/to/work”），你可以在其中建立一个目录并堆栈到你需要空间的那个
    旧的目录（例如，[35;1m“/path/to/old”[;m），要这样做，你需要用于 Linux 3.18
    版内核或更新版本（对应 Debian Stetch 9.0 或更新版本）的 OverlayFS
    。

[32;1m    $ sudo mount -t overlay overlay \[;m
      -olowerdir=/path/to/old-dir,upperdir=/path/to/empty,workdir=/path/to/work

    [35;1m“/path/to/empty”[;m 和 [35;1m“/path/to/work”[;m 应该位于可读写的分区，从而能
    够写入 [35;1m“/path/to/old”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.5.17. 使用符号链接扩展可用存储空间[;m

    [33;1m小心[m

    这是一个已弃用的做法。某些软件在遇到[35;1m“软链接目录”[;m时可能不会正常工
    作。请优先使用上文所述的[35;1m“挂载”[;m的途径。

    如果你在另一个分区里有一个带有可用空间的空目录（例如 “/path/to/
    emp-dir”），你可以使用 [34;1mln(8)[m 建立目录的一个符号链接。

[32;1m    $ sudo mv work-dir old-dir[;m
[32;1m    $ sudo mkdir -p /path/to/emp-dir[;m
[32;1m    $ sudo ln -sf /path/to/emp-dir work-dir[;m
[32;1m    $ sudo cp -a old-dir/* work-dir[;m
[32;1m    $ sudo rm -rf old-dir[;m

    [31;1m警告[m

    别对由系统管理的目录（例如 [35;1m“/opt”[;m）使用[35;1m“链接到目录”[;m，这样的链接在
    系统升级时可能会被覆盖。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.6. 磁盘映像[;m

    我们在这里讨论磁盘影响的操作。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.6.1. 制作磁盘映像文件[;m

    一个未挂载设备（例如，第二个 SCSI 或串行 ATA 设备 [35;1m“/dev/sdb”[;m）的
    磁盘映像文件 [35;1m“disk.img”[;m 可以使用 [34;1mcp(1)[m 或 [34;1mdd(1)[m 通过下列方式建立
    。

[31;1m    # cp /dev/sdb disk.img[;m
[31;1m    # dd if=/dev/sdb of=disk.img[;m

    传统 PC 中位于主 IDE 硬盘第一扇区的主引导记录（MBR）（参见第
     9.5.2 节 [35;1m“硬盘分区配置”[;m）的磁盘映像可以使用 [34;1mdd(1)[m 通过下列方式建
    立。

[31;1m    # dd if=/dev/hda of=mbr.img bs=512 count=1[;m
[31;1m    # dd if=/dev/hda of=mbr-nopart.img bs=446 count=1[;m
[31;1m    # dd if=/dev/hda of=mbr-part.img skip=446 bs=1 count=66[;m

[33;1m      *[;m [35;1m“mbr.img”[;m：带有分区表的 MBR

[33;1m      *[;m [35;1m“mbr-nopart.img”[;m：不带分区表的 MBR

[33;1m      *[;m [35;1m“mbr-part.img”[;m：仅 MBR 的分区表

    如果你使用 SCSI 或串行 ATA 设备作为启动硬盘，你需要使用 “/dev/
    sda” 替代 [35;1m“/dev/hda”[;m。

    如果你要建立原始硬盘的一个硬盘分区的映像，你需要使用 [35;1m“/dev/hda1”[;m
    等替代 [35;1m“/dev/hda”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.6.2. 直接写入硬盘[;m

    磁盘映像文件 [35;1m“disk.img”[;m 可以通过下列方式写入到一个匹配大小的未挂
    载设备（例如，第二个 SCSI 设备 [35;1m“/dev/sdb”[;m。

[31;1m    # dd if=disk.img of=/dev/sdb[;m

    相似地，硬盘分区映像文件 [35;1m“partition.img”[;m 可以通过下列方式写入到匹
    配大小的未挂载分区（例如，第二个 SCSI 设备的第一个分区 “/dev/
    sdb1”）。

[31;1m    # dd if=partition.img of=/dev/sdb1[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.6.3. 挂载磁盘映像文件[;m

    可以使用循环设备通过下列方式挂载和卸载包含单个分区映像的磁盘映像
    [35;1m“partition.img”[;m。

[31;1m    # losetup -v -f partition.img[;m
    Loop device is /dev/loop0
[31;1m    # mkdir -p /mnt/loop0[;m
[31;1m    # mount -t auto /dev/loop0 /mnt/loop0[;m
    ...hack...hack...hack
[31;1m    # umount /dev/loop0[;m
[31;1m    # losetup -d /dev/loop0[;m

    可以简化为如下步骤。

[31;1m    # mkdir -p /mnt/loop0[;m
[31;1m    # mount -t auto -o loop partition.img /mnt/loop0[;m
    ...hack...hack...hack
[31;1m    # umount partition.img[;m

    可以使用循环设备挂载包含多个分区的磁盘映像 [35;1m“disk.img”[;m 的每个分区
    。因为循环设备默认不管理分区，因此我们需要通过下列方式重新设置它
    。

[31;1m    # modinfo -p loop # verify kernel capability[;m
    max_part:Maximum number of partitions per loop device
    max_loop:Maximum number of loop devices
[31;1m    # losetup -a # verify nothing using the loop device[;m
[31;1m    # rmmod loop[;m
[31;1m    # modprobe loop max_part=16[;m

    现在循环设备可以管理多达 16 个分区。

[31;1m    # losetup -v -f disk.img[;m
    Loop device is /dev/loop0
[31;1m    # fdisk -l /dev/loop0[;m

    Disk /dev/loop0: 5368 MB, 5368709120 bytes
    255 heads, 63 sectors/track, 652 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Disk identifier: 0x452b6464

          Device Boot      Start         End      Blocks   Id  System
    /dev/loop0p1               1         600     4819468+  83  Linux
    /dev/loop0p2             601         652      417690   83  Linux
[31;1m    # mkdir -p /mnt/loop0p1[;m
[31;1m    # mount -t ext4 /dev/loop0p1 /mnt/loop0p1[;m
[31;1m    # mkdir -p /mnt/loop0p2[;m
[31;1m    # mount -t ext4 /dev/loop0p2 /mnt/loop0p2[;m
    ...hack...hack...hack
[31;1m    # umount /dev/loop0p1[;m
[31;1m    # umount /dev/loop0p2[;m
[31;1m    # losetup -d /dev/loop0[;m

    或者，你也可以使用 kpartx 软件包中的 [34;1mkpartx(8)[m 建立设备映射设备来
    达到相同的效果。

[31;1m    # kpartx -a -v disk.img[;m
    ...
[31;1m    # mkdir -p /mnt/loop0p2[;m
[31;1m    # mount -t ext4 /dev/mapper/loop0p2 /mnt/loop0p2[;m
    ...
    ...hack...hack...hack
[31;1m    # umount /dev/mapper/loop0p2[;m
    ...
[31;1m    # kpartx -d /mnt/loop0[;m

    [33;1m注意[m

    你也可以使用循环设备利用偏移量来跳过 MBR 等，来挂载此类磁盘映像的
    单个分区。但这更加容易出错。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.6.4. 清理磁盘映像文件[;m

    使用下面的方式，一个磁盘映像文件 [35;1m"disk.img"[;m 能够清理掉所有已经删
    除的文件，成为一个干净的稀疏映像 [35;1m"new.img"[;m。

[31;1m    # mkdir old; mkdir new[;m
[31;1m    # mount -t auto -o loop disk.img old[;m
[31;1m    # dd bs=1 count=0 if=/dev/zero of=new.img seek=5G[;m
[31;1m    # mount -t auto -o loop new.img new[;m
[31;1m    # cd old[;m
[33m[31;1m    # cp -a --sparse=always ./ ../new/[;m[m
[31;1m    # cd ..[;m
[31;1m    # umount new.img[;m
[31;1m    # umount disk.img[;m

    如果 [35;1m“disk.img”[;m 位于 ext2、ext3 或 ext4，你也可以像下面那样使用
    zerofree 软件包中的 [34;1mzerofree(8)[m。

[31;1m    # losetup -f -v disk.img[;m
    Loop device is /dev/loop3
[31;1m    # zerofree /dev/loop3[;m
[33m[31;1m    # cp --sparse=always disk.img new.img[;m[m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.6.5. 制作空的磁盘映像文件[;m

    按下面的方式使用 [34;1mdd(1)[m ，可以制作一个大小为 5GiB 的空磁盘映像文件
    。

[32;1m    $ dd bs=1 count=0 if=/dev/zero of=disk.img seek=5G[;m

    按下面的方式使用环回设备，你能够在这个磁盘映像[35;1m"disk.img"[;m上创建
    ext4 文件系统。

[31;1m    # losetup -f -v disk.img[;m
    Loop device is /dev/loop1
[31;1m    # mkfs.ext4 /dev/loop1[;m
    ...hack...hack...hack
[31;1m    # losetup -d /dev/loop1[;m
[33m[32;1m    $ du  --apparent-size -h disk.img[;m[m
    5.0G  disk.img
[32;1m    $ du -h disk.img[;m
    83M disk.img

    对于 [35;1m"disk.img"[;m,它的文件大小是5.0 GiB，而它实际磁盘使用仅仅是
    83MiB.这个差距可能是由于 ext4 里面有稀疏文件.

    [36;1m提示[m

    稀疏文件的实际磁盘使用会随着数据的写入而增加。

    回环设备或设备映射设备上使用类似的操作，在这些设备按第 9.6.3 节 “
    挂载磁盘映像文件” 挂载后, 你能够使用 [34;1mparted(8)[m 或 [34;1mfdisk(8)[m对这个
    磁盘映像[35;1m"disk.img"[;m进行分区，能够使用 mkfs.[34;1mext4(8)[m, [34;1mmkswap(8)[m在上
    面创建文件系统等.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.6.6. 制作 ISO9660 镜像文件[;m

    [35;1m"源目录"[;m下的目录树可以通过如下所示的 cdrkit 提供的 [34;1mgenisoimage(1)[m
    命令来制作 ISO9660 镜像文件，[35;1m"cd.iso"[;m。

[31;1m    #  genisoimage -r -J -T -V volume_id -o cd.iso source_directory[;m

    类似的，可引导的 ISO9660 镜像文件，[35;1m"cdboot.iso"[;m, 能够从
    debian-installer 类似目录树 [35;1m"source_directory"[;m 制作，方式如下。

[31;1m    #  genisoimage -r -o cdboot.iso -V volume_id \[;m
       -b isolinux/isolinux.bin -c isolinux/boot.cat \
       -no-emul-boot -boot-load-size 4 -boot-info-table source_directory

    这里的 Isolinux boot loader (参见第 3.1.2 节 “第二阶段：引载加载
    程序”) 是用于启动的.

    按下面的方式，你可以直接从光驱设备计算 md5sum 值，并制作 ISO9660
    镜像。

[32;1m    $ isoinfo -d -i /dev/cdrom[;m
    CD-ROM is in ISO 9660 format
    ...
    Logical block size is: 2048
    Volume size is: 23150592
    ...
[31;1m    # dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror | md5sum[;m
[31;1m    # dd if=/dev/cdrom bs=2048 count=23150592 conv=notrunc,noerror > cd.iso[;m

    [31;1m警告[m

    为了得到正确结果，你必须小心避免 Linux ISO9600 文件系统预读 bug。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.6.7. 直接写入文件到 CD/DVD-R/RW[;m

    [36;1m提示[m

    对于由 cdrkit 提供的 [34;1mwodim(1)[m 来讲，DVD 仅仅是一个大的 CD。

    你能够通过如下所示的命令找到可用的设备。

[33m[31;1m    # wodim --devices[;m[m

    然后将空的 CD-R 插入 CD 驱动器并且把 ISO9660 镜像文件，[35;1m"cd.iso"[;m
    写入到设备中，例如用如下所示的 [34;1mwodim(1)[m 将数据写入到 [35;1m"/dev/hda"[;m
    设备。

[31;1m    # wodim -v -eject dev=/dev/hda cd.iso[;m

    如果用 CD-RW 代替 CD-R，用如下所示的命令来替代。

[31;1m    # wodim -v -eject blank=fast dev=/dev/hda cd.iso[;m

    [36;1m提示[m

    如果你的桌面系统自动挂载 CDs，在使用 [34;1mwodim(1)[m 之前在终端里面用
    [35;1m"sudo umount /dev/hda"[;m 卸载它。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.6.8. 挂载 ISO9660 镜像文件[;m

    如果 [35;1m"cd.iso"[;m 包含一个 ISO9660 镜像, 下面的命令手工挂载这个文件到
    [35;1m"/cdrom"[;m.

[31;1m    # mount -t iso9660 -o ro,loop cd.iso /cdrom[;m

    [36;1m提示[m

    现代桌面系统能够自动挂载可移动介质，如按 ISO9660 格式化的 CD(参见
    第 10.1.7 节 [35;1m“可移动存储设备”[;m).

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7. 二进制数据[;m

    这里，我们讨论直接操作存储介质上的二进制数据。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.1. 查看和编辑二进制数据[;m

    最基础的查看二进制数据的方法是使用 [35;1m"od -t x1"[;m 命令。

    表 9.20. 查看和修改二进制数据的软件包列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包     │流行度 │大小 │              说明               │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │coreutils      │V:892, │15016│基础软件包，有 [34;1mod(1)[m 来导出文件  │
    │               │I:999  │     │(HEX, ASCII, OCTAL, …)           │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │bsdmainutils   │V:870, │587  │工具软件包，有 [34;1mhd(1)[m 来导出文件  │
    │               │I:998  │     │(HEX, ASCII, OCTAL, …)           │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │hexedit        │V:1,   │63   │二进制浏览和编辑器(HEX, ASCII)   │
    │               │I:12   │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │bless          │V:0,   │973  │全功能的十六进制编辑器(GNOME)    │
    │               │I:5    │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │okteta         │V:1,   │1344 │全功能的十六进制编辑器(KDE4)     │
    │               │I:20   │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │ncurses-hexedit│V:0,   │132  │二进制浏览和编辑器(HEX, ASCII,   │
    │               │I:2    │     │EBCDIC)                          │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │beav           │V:0,   │133  │二进制浏览和编辑器(HEX, ASCII,   │
    │               │I:1    │     │EBCDIC, OCTAL, ...)              │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    HEX 是十六进制英文hexadecimal首字母缩略词，基数 radix 是 16。
    OCTAL 是八进制英文octal 首字母缩略词，基数 radix是 8。ASCII是美国
    信息交换标准代码 American Standard Code for Information
    Interchange 的英文缩写，即正常的英语文本代码。EBCDIC是扩展二进制
    编码十进制交换码 Extended Binary Coded Decimal Interchange Code
    的英文缩写，在 IBM 大型机操作系统上使用。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.2. 不挂载磁盘操作文件[;m

    有工具可以在没有挂载磁盘的情况下读写文件。

    表 9.21. 不挂载磁盘操作文件的软件包列表

    ┌───────────────────────────────────────────────────────────┐
    │ 软件包 │  流行度   │大小│              说明               │
    ├────────┼───────────┼────┼─────────────────────────────────┤
    │mtools  │V:12, I:101│361 │不挂载磁盘的 MSDOS 文件工具      │
    ├────────┼───────────┼────┼─────────────────────────────────┤
    │hfsutils│V:0, I:8   │1771│不挂载磁盘的 HFS 和 HFS+ 文件工具│
    └───────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.3. 数据冗余[;m

    Linux 内核所提供的RAID软件系统提供内核文件系统级别的数据冗余来实
    现高水平的存储可靠性。

    有在应用程序级别增加数据冗余来实现高水平存储可靠性的工具。

    表 9.22. 向文件添加数据冗余的工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包  │流行度 │大小│                 说明                  │
    ├──────────┼───────┼────┼───────────────────────────────────────┤
    │par2      │V:2,   │246 │奇偶校验档案卷设置，用于检查和修复文件 │
    │          │I:10   │    │                                       │
    ├──────────┼───────┼────┼───────────────────────────────────────┤
    │dvdisaster│V:0,   │1548│CD/DVD 媒体数据损失/划伤/老化的保护    │
    │          │I:2    │    │                                       │
    ├──────────┼───────┼────┼───────────────────────────────────────┤
    │dvbackup  │V:0,   │412 │使用 MiniDV 便携式摄像机的备份工具(提供│
    │          │I:0    │    │[34;1mrsbep(1)[m)                              │
    ├──────────┼───────┼────┼───────────────────────────────────────┤
    │vdmfec    │V:0,   │97  │使用前向纠错恢复丢失的块               │
    │          │I:0    │    │                                       │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.4. 数据文件恢复和诊断分析[;m

    有用于数据文件恢复和诊断分析的工具。

    表 9.23. 数据文件恢复和诊断分析软件包列表

    ┌───────────────────────────────────────────────────────────────┐
    │   软件包    │流行 │大小│                 说明                 │
    │             │ 度  │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │testdisk     │V:3, │1319│分区扫描和磁盘恢复的实用程序          │
    │             │I:40 │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │magicrescue  │V:0, │224 │通过查找幻数 magic 字节来恢复文件的工 │
    │             │I:3  │    │具（译注：请 man file 来了解幻数）    │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │scalpel      │V:0, │82  │简洁、高性能的文件提取                │
    │             │I:4  │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │myrescue     │V:0, │63  │恢复损坏硬盘中的数据                  │
    │             │I:3  │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │extundelete  │V:1, │148 │恢复删除 ext3/4 文件系统上的文件的实用│
    │             │I:11 │    │程序                                  │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │ext4magic    │V:0, │232 │恢复删除 ext3/4 文件系统上的文件的实用│
    │             │I:3  │    │程序                                  │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │ext3grep     │V:0, │278 │帮助恢复 ext3 文件系统上删除的文件的工│
    │             │I:3  │    │具                                    │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │scrounge-ntfs│V:0, │45  │NTFS 文件系统的数据恢复程序           │
    │             │I:3  │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │gzrt         │V:0, │57  │gzip 恢复工具包                       │
    │             │I:0  │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │sleuthkit    │V:1, │1113│诊断分析工具(Sleuthkit)               │
    │             │I:17 │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │autopsy      │V:0, │1021│SleuthKit 的图形化界面                │
    │             │I:2  │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │foremost     │V:0, │96  │恢复数据的诊断程序                    │
    │             │I:7  │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │guymager     │V:0, │1051│基于 Qt 的诊断图像工具                │
    │             │I:1  │    │                                      │
    ├─────────────┼─────┼────┼──────────────────────────────────────┤
    │dcfldd       │V:0, │94  │增强版的 dd，用于诊断和安全           │
    │             │I:5  │    │                                      │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    在 e2fsprogs 软件包里有 [34;1mdebugfs(8)[m 命令，使用该命令里的
    list_deleted_inodes 和 undel 指令，你能够恢复 ext2 文件系统上删除
    的文件。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.5. 把大文件分成多个小文件[;m

    当一个文件太大而不能备份的时候，你应该在备份之前先把它分割为多个
    小于 2000MiB 的小文件，稍后再把这些小文件合并为初始的文件。

[32;1m    $ split -b 2000m large_file[;m
[32;1m    $ cat x* >large_file[;m

    [33;1m小心[m

    为了防止文件名冲突，请确保没有任何以 [35;1m"x"[;m 开头的文件。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.6. 清空文件内容[;m

    为了清除诸如日志文件之类的文件的内容，不要用 [34;1mrm(1)[m 命令去删除文件
    然后创建新的空文件，因为这个文件可能在命令执行的期间还在被使用。
    以下是清除文件内容的正确方法。

[32;1m    $ :>file_to_be_cleared[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.7. 样子文件[;m

    下面的命令创建样子文件或空文件。

[32;1m    $ dd if=/dev/zero    of=5kb.file bs=1k count=5[;m
[32;1m    $ dd if=/dev/urandom of=7mb.file bs=1M count=7[;m
[32;1m    $ touch zero.file[;m
[32;1m    $ : > alwayszero.file[;m

    你将发现下列文件。

[33;1m      *[;m [35;1m"5kb.file"[;m 是 5KB 的全零数据。

[33;1m      *[;m [35;1m"7mb.file"[;m 是 7MB 随机数据。

[33;1m      *[;m [35;1m"zero.file"[;m 也许是一个 0 字节的文件。如果这个文件之前就存在，
        则它的 mtime 会被更新，而它的内容和长度保持不变。

[33;1m      *[;m [35;1m"alwayszero.file"[;m 一定是一个 0 字节文件。如果这个文件之前存在
        ，则它的 mtime 会被更新，而它的内容会被清零。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.8. 擦除整块硬盘[;m

    有几种方法来完全擦除设备上整个硬盘上数据，比如说，在 [35;1m"/dev/sda"[;m
    上的 USB 内存盘。

    [33;1m小心[m

    在执行这里的命令之前，你应该用 [34;1mmount(8)[m 命令来查看 USB 记忆棒的挂
    载位置。[35;1m"/dev/sda"[;m 指向的设备可能是装有整个系统的 SCSI 硬盘或者
    serial-ATA 硬盘。

    如下所示是通过数据归 0 的方式来擦除硬盘上所有数据的。

[31;1m    # dd if=/dev/zero of=/dev/sda[;m

    如下是用随机数据重写的方式来擦除所有数据的。

[31;1m    # dd if=/dev/urandom of=/dev/sda[;m

    如下是用随机数据重写的方式来高效擦除所有数据。

[31;1m    # shred -v -n 1 /dev/sda[;m

    因为 [34;1mdd(1)[m 命令在许多可引导的 Linux CDs (例如 Debian 安装光盘) 上
    的 shell 环境下都是可用的，你能够在装有系统的硬盘上，例如 "/dev/
    hda[35;1m", "[;m/dev/sda" 等等设备上运行擦除命令来完全清除已经安装的系统。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.9. 擦除硬盘上的未使用的区域[;m

    硬盘（或 USB 记忆棒）上未使用的区域，例如[35;1m“/dev/sdb1”[;m可能仍然包含
    可被擦除的数据，因为他们本身只是解除了从文件系统的链接，这些可以
    通过重写来清除。

[31;1m    # mount -t auto /dev/sdb1 /mnt/foo[;m
[31;1m    # cd /mnt/foo[;m
[31;1m    # dd if=/dev/zero of=junk[;m
    dd: writing to `junk': No space left on device
    ...
[31;1m    # sync[;m
[31;1m    # umount /dev/sdb1[;m

    [31;1m警告[m

    这对您的USB 记忆棒来说通常已经足够好了，但这还不完美。大部分已擦
    除的文件名和它们的属性可能隐藏并留在文件系统中。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.10. 恢复已经删除但仍然被打开的文件[;m

    即使你不小心删除了某个文件，只要这个文件仍然被一些应用程序所使用
    （读或者写），恢复此文件是可能的。

    尝试下列例子

[32;1m    $ echo foo > bar[;m
[32;1m    $ less bar[;m
[32;1m    $ ps aux | grep 'less[ ]'[;m
    bozo    4775  0.0  0.0  92200   884 pts/8    S+   00:18   0:00 less bar
[32;1m    $ rm bar[;m
[32;1m    $ ls -l /proc/4775/fd | grep bar[;m
[33m    lr-x------ 1 bozo bozo 64 2008-05-09 00:19 4 -> 2 /home/bozo/bar (deleted)[m
[32;1m    $ cat /proc/4775/fd/4 > 3bar[;m
[32;1m    $ ls -l[;m
[33m    -rw-r--r-- 1 bozo bozo 4 2008-05-09 00:25 bar[m
[32;1m    $ cat bar[;m
    foo

    当你安装了 lsof 软件包的时候，在另外一个终端执行如下命令。

[32;1m    $ ls -li bar[;m
[33m    2228329 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:02 bar[m
[32;1m    $ lsof |grep bar|grep less[;m
    less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar
[32;1m    $ rm bar[;m
[32;1m    $ lsof |grep bar|grep less[;m
    less 4775 bozo 4r REG 8,3 4 2228329 /home/bozo/bar (deleted)
[32;1m    $ cat /proc/4775/fd/4 > bar[;m
[32;1m    $ ls -li bar[;m
[33m    2228302 -rw-r--r-- 1 bozo bozo 4 2008-05-11 11:05 bar[m
[32;1m    $ cat bar[;m
    foo

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.11. 查找所有硬链接[;m

    有硬链接的文件，能够使用 [35;1m"ls -li"[;m 确认。

[32;1m    $ ls -li[;m
    total 0
[33m    2738405 -rw-r--r-- 1 root root 0 2008-09-15 20:21 bar[m
[33m    2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 baz[m
[33m    2738404 -rw-r--r-- 2 root root 0 2008-09-15 20:21 foo[m

    [35;1m"baz"[;m 和 [35;1m"foo"[;m 的链接数为 [35;1m"2"[;m (>1)，表示他们有硬链接。它们的
    inode 号都是[35;1m"2738404"[;m.这表示它们是同样的硬链接文件。如果你不想偶
    然碰巧发现硬链接文件，你可以通过 inode 号来查找它。比如说, 按下面
    的方式查找 [35;1m"2738404"[;m 。

[31;1m    # find /path/to/mount/point -xdev -inum 2738404[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.7.12. 不可见磁盘空间消耗[;m

    所有打开的文件被删除后，仍然消耗磁盘空间，尽管他们不能够被普通的
    [34;1mdu(1)[m 所看见。这些被删除的文件和他们的大小，可以通过下面的方式列
    出。

[31;1m    # lsof -s -X / |grep deleted[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.8. 数据加密提示[;m

    在可以物理访问您的 PC的情况下，任何人都可以轻易获得 root 权限，访
    问您的 PC 上的所有文件 (见第 4.7.4 节 [35;1m“root 密码安全”[;m)。这意味着
    登录密码系统在您的PC被偷盗时并不能保证您私人和敏感数据的安全。您
    必须部署数据加密技术来实现。尽管 GNU 隐私守护 (见第 10.3 节 “数据
    安全基础”) 可以对文件进行加密，但它需要一些用户端的工作。

    dm-crypt 和 eCryptfs通过 Linux 内核模块与很少的用户操作实现本地自
    动数据加密。

    表 9.24. 数据加密工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包    │流行 │大 │                 说明                 │
    │              │ 度  │小 │                                      │
    ├──────────────┼─────┼───┼──────────────────────────────────────┤
    │cryptsetup    │V:20,│60 │可用于加密的块设备的实用程序（dm-crypt│
    │              │I:82 │   │/ 3LUKS）                             │
    ├──────────────┼─────┼───┼──────────────────────────────────────┤
    │cryptmount    │V:3, │224│可用于加密的块设备着重于正常用户挂载/ │
    │              │I:5  │   │卸载的实用程序（ dm-crypt / LUKS）    │
    ├──────────────┼─────┼───┼──────────────────────────────────────┤
    │ecryptfs-utils│V:6, │396│可用于堆叠加密文件系统的实用程序(     │
    │              │I:9  │   │eCryptfs)                             │
    └───────────────────────────────────────────────────────────────┘


    Dm-crypt 是一个使用 device-mapper 加密的文件系统. Device-mapper
    映射一个块设备到另外一个。

    eCryptfs 是另外一个加密文件系统，使用了堆叠文件系统。堆叠文件系统
    把它自己堆叠在已挂载文件系统的一个已有目录之上。

    [33;1m小心[m

    数据加密会消耗 CPU 时间等资源，请权衡其利弊。

    [33;1m注意[m

    通过 debian-installer (lenny 或更新版)，整个 Debian 系统能够被安
    装到一个加密的磁盘上，使用 dm-crypt/LUKS 和 initramfs.

    [36;1m提示[m

    请参阅第 10.3 节 [35;1m“数据安全基础”[;m 用户空间加密实用程序： GNU
    Privacy Guard。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.8.1. 使用 dm-crypt/LUKS 加密移动磁盘[;m

    您可以用dm-crypt/LUKS加密大容量可移动设备上数据，例如挂载在“/dev/
    sdx”上的USB 记忆棒。你只需按如下步骤简单地把它格式化。

[31;1m    # badblocks -c 1024 -s -w -t random -v /dev/sdx[;m
[31;1m    # fdisk /dev/sdx[;m
    ... [35;1m"n"[;m [35;1m"p"[;m [35;1m"1"[;m [35;1m"return"[;m [35;1m"return"[;m [35;1m"w"[;m
[31;1m    # cryptsetup luksFormat /dev/sdx1[;m
    ...
[33m[31;1m    # cryptsetup open --type luks /dev/sdx1 sdx1[;m[m
    ...
[31;1m    # ls -l /dev/mapper/[;m
    total 0
[33m    crw-rw---- 1 root root  10, 60 2008-10-04 18:44 control[m
[33m    brw-rw---- 1 root disk 254,  0 2008-10-04 23:55 sdx1[m
[31;1m    # mkfs.vfat /dev/mapper/sdx1[;m
    ...
[31;1m    # cryptsetup luksClose sdx1[;m

    然后，它就可以正常的在现代桌面环境下，例如 GNOME 桌面可以使用
    [34;1mgnome-mount(1)[m，挂载到 [35;1m"/media/<disk_label"[;m。只不过它会要求输入密
    码 (参见第 10.1.7 节 [35;1m“可移动存储设备”[;m)。不同的是写入的数据都是加
    密的。你可以把它格式化成其他格式的文件系统，例如用 "mkfs.ext4 /
    dev/mapper/sdx1" 把它格式化为 ext4。

    [33;1m注意[m

    如果您对数据的安全性要求很高，您可能需要重写多次（在上述示例中的
    [35;1m"badblocks"[;m命令）。虽然这个操作非常耗费时间。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.8.2. 用dm-crypt加密的交换分区[;m

    让我们假设你原先的[35;1m"/etc/fstab"[;m包含以下内容。

    /dev/sda7 swap sw 0 0

    您可以使用 dm-crypt 通过如下步骤启用加密的交换分区。

[31;1m    # aptitude install cryptsetup[;m
[31;1m    # swapoff -a[;m
[31;1m    # echo "cswap /dev/sda7 /dev/urandom swap" >> /etc/crypttab[;m
[31;1m    # perl -i -p -e "s/\/dev\/sda7/\/dev\/mapper\/cswap/" /etc/fstab[;m
[31;1m    # /etc/init.d/cryptdisks restart[;m
     ...
[31;1m    # swapon -a[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.8.3. 使用dm-crypt/LUKS挂载加密的磁盘[;m

    用dm-crypt/LUKS在[35;1m"/dev/sdc5"[;m 上创建的加密磁盘可以用如下步骤挂载到
    [35;1m"/mnt"[;m：

[33m[32;1m    $ sudo cryptsetup open /dev/sdc5 ninja --type luks[;m[m
    Enter passphrase for /dev/sdc5: ****
[32;1m    $ sudo lvm[;m
    lvm> lvscan
      inactive          [35;1m'/dev/ninja-vg/root'[;m [13.52 GiB] inherit
      inactive          [35;1m'/dev/ninja-vg/swap_1'[;m [640.00 MiB] inherit
      ACTIVE            [35;1m'/dev/goofy/root'[;m [180.00 GiB] inherit
      ACTIVE            [35;1m'/dev/goofy/swap'[;m [9.70 GiB] inherit
    lvm> lvchange -a y /dev/ninja-vg/root
    lvm> exit
      Exiting.
[32;1m    $ sudo mount /dev/ninja-vg/root /mnt[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.8.4. 用eCryptfs自动加密文件[;m

    您可以用eCryptfs和ecryptfs-utils包对~/Private/下的创建的文件自动
    加密。

[33;1m      *[;m [34;1m根据下面的提示运行ecryptfs-setup-private(1)[m并设置~/Private/。

[33;1m      *[;m [34;1m通过运行ecryptfs-mount-private(1)[m激活[35;1m“~/Private/”[;m。

[33;1m      *[;m 将敏感数据文件移动到[35;1m"~/Private/"[;m并根据要求创建符号链接。

[33;1m          +[;m 候选：[35;1m"~/.fetchmailrc"[;m、[35;1m"~/.ssh/identity"[;m，"~/.ssh/
            id_rsa[35;1m"，"[;m~/.ssh/id_dsa[35;1m"和"[;mgo-rwx"的其他文件

[33;1m      *[;m 将敏感数据目录移动到[35;1m"~/Private/"[;m的子目录中并按要求创建符号链
        接。

[33;1m          +[;m 候选：[35;1m"~/.gnupg"[;m和"go-rwx的其他目录

[33;1m      *[;m 创建从[35;1m“~/Desktop/Private/”[;m到“~/Private/的符号链接，实现更方便
        的桌面操作。

[33;1m      *[;m 通过运行 [34;1mecryptfs-umount-private(1)[m 停用[35;1m"~/Private/"[;m。

[33;1m      *[;m 在你需要加密文件时，使用[35;1m“ecryptfs-mount-private”[;m命令激活“~/
        Private/”目录。

    [36;1m提示[m

    因为 eCryptfs 只是选择性的加密敏感数据，它的花费比使用 dm-crypt
    在 root 或 [35;1m"/home"[;m 设备加密的花费少的多。它不需要任何特殊的磁盘上
    的存储分配，但是其不能保证文件系统所有元数据的秘密性。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.8.5. 自动挂载 eCryptfs[;m

    如果您使用您的登录密码为环绕加密密钥，您可以通过 PAM （可插拔身份
    验证模块）自动化安装 eCryptfs。

    在[35;1m"/etc/pam.d/common-auth"[;m文件中的 [35;1m"pam_permit.so"[;m前插入下面的行
    。

    auth required pam_ecryptfs.so unwrap

    在[35;1m"/etc/pam.d/common-session"[;m文件中插入下面的行作为最后一行。

    session optional pam_ecryptfs.so unwrap

    在[35;1m"/etc/pam.d/common-password"[;m中的第一个活动行插入下面的行。

    password required pam_ecryptfs.so

    这相当方便。

    [31;1m警告[m

    PAM的配置错误可能会把您锁在自己的系统外。请参阅第 4 章认证。

    [33;1m小心[m

    如果你使用你自己的登录密码作为环绕加密密钥，加密的数据和用户登录
    密码的安全性一样 (参见第 4.3 节 [35;1m“好密码”[;m)。除非你已认真设置了一个
    强密码，否则你的数据仍然处在危险中，当别人偷了笔记本以后，然后运
    行密码破解软件 (参见第 4.7.4 节 [35;1m“root 密码安全”[;m)。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.9. 内核[;m

    对于支持的架构，Debian 使用软件包来分发模块化的 Linux内核.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.9.1. Linux 内核 2.6/3.x[;m

    相对于 2.4 版来说，Linux 内核的 2.6/3.x 版有一些值得注意的特征。

[33;1m      *[;m 设备由 udev 系统创建(参见第 3.3 节 [35;1m“udev 系统”[;m).

[33;1m      *[;m 读写访问 IDE CD/DVD 设备，不再使用 ide-scsi 模块.

[33;1m      *[;m 网络包过滤功能使用 iptables 内核模块.

    Linux 版本从 2.6.39 跳到 3.0，不仅仅是一个主要的技术改变，也是第
    20 个周年纪念日。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.9.2. 内核参数[;m

    许多 Linux 特性可以按下面的方式，通过内核参数来配置。

[33;1m      *[;m 内核参数通过 bootloader 初始化(参见第 3.1.2 节 “第二阶段：引
        载加载程序”)

[33;1m      *[;m 对通过 sysfs 访问的内核参数，在运行时通过 [34;1msysctl(8)[m 修改(参见
        第 1.2.12 节 [35;1m“procfs 和 sysfs”[;m)

[33;1m      *[;m 当一个模块被激活时，通过 [34;1mmodprobe(8)[m 参数来设置模块参数。(参
        见第 9.6.3 节 [35;1m“挂载磁盘映像文件”[;m)

    参见 [35;1m"kernel-parameters.txt(.gz)"[;m 和 linux-doc-3.* 软件包提供的其
    它相关文档 ("/usr/share/doc/linux-doc-3.*/Documentation/
    filesystems/*")。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.9.3. 内核头文件[;m

    大部分普通程序编译时不需要内核头文件，如果你直接使用它们来编译，
    甚至会导致编译中断。在 Debian 系统上，普通程序编译依赖 libc6-dev
    软件包 (由 glibc 源代码包创建)提供的，在[35;1m"/usr/include/linux"[;m 和 "
    /usr/include/asm" 里的头文件。

    [33;1m注意[m

    对于编译一些内核相关的程序，比如说从外部源代码编译的内核模块和
    automounter 后台守护（daemon）程序(amd),你必须包含相应的内核头文
    件到路径里，比如[35;1m"-I/usr/src/linux-particular-version/include/"[;m,
    到你的命令行。 [34;1mmodule-assistant(8)[m (它的简称 m-a)帮助我们更简单的
    为一个或者多个个性化内核编译和安装模块软件包。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.9.4. 编译内核和相关模块[;m

    Debian 有它自己的方式来编译内核和相关模块。

    表 9.25. Debian 系统内核编译需要安装的主要软件包列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包     │流行度│大小 │               说明               │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │build-essential│I:456 │20   │创建 Debian 软件包所必须的软件包: │
    │               │      │     │make, gcc, …                      │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │bzip2          │V:186,│184  │bz2 文件压缩和解压缩工具          │
    │               │I:946 │     │                                  │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │libncurses5-dev│V:13, │6    │ncurses 开发者库和文档            │
    │               │I:148 │     │                                  │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │git            │V:274,│33183│git：Linux 内核使用的分布式版本控 │
    │               │I:451 │     │制系统                            │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │fakeroot       │V:29, │215  │为非 root 用户创建软件包提供一个伪│
    │               │I:505 │     │造的 root 环境                    │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │initramfs-tools│V:166,│105  │创建 initramfs 的工具（Debian 规范│
    │               │I:991 │     │）                                │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │dkms           │V:66, │282  │动态内核模块支持 dynamic kernel   │
    │               │I:211 │     │module support (DKMS) (通用)      │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │devscripts     │V:9,  │2185 │Debian Package maintainer Debian  │
    │               │I:66  │     │包维护者的帮助脚本（Debian 规范） │
    └───────────────────────────────────────────────────────────────┘


    如果你在第 3.1.2 节 [35;1m“第二阶段：引载加载程序”[;m 使用 initrd , 请一定
    阅读 [34;1minitramfs-tools(8)[m, [34;1mupdate-initramfs(8)[m, [34;1mmkinitramfs(8)[m 和
    initramfs.[34;1mconf(5)[m 里的相关信息。

    [31;1m警告[m

    在编译 Linux 内核源代码时，请不要放置从[35;1m"/usr/include/linux"[;m 和 "/
    usr/include/asm[35;1m" 到源代码树(比如："[;m/usr/src/linux*") 里目录的符号
    链接。(一些过期的文档建议这样做.)

    [33;1m注意[m

    当在 Debian stable 版里编译最新的 Linux 内核时, 可能需要使用一些
    从Debian unstable 版里 backported 向后移植的最新版本的工具。

    [33;1m注意[m

    dynamic kernel module support (DKMS)动态内核模块支持是一个新的分
    布式独立框架，被设计用来允许单个的内核模块在不改变整个内核的情况
    下升级。这可以用于维护内核代码树外部的模块。这也使你升级内核时，
    重新编译模块变得非常简单。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.9.5. 编译内核源代码：Debian 内核团队推荐[;m

    从上游内核源代码编译个性化的内核二进制包，你应当使用由它提供的
    [35;1m"deb-pkg"[;m 对象。

[32;1m    $ sudo apt-get build-dep linux[;m
[32;1m    $ cd /usr/src[;m
[32;1m    $ wget http://www.kernel.org/pub/linux/kernel/v3.11/linux-<version>.tar.bz2[;m
[32;1m    $ tar -xjvf linux-<version>.tar.bz2[;m
[32;1m    $ cd linux-<version>[;m
[32;1m    $ cp /boot/config-<version> .config[;m
[32;1m    $ make menuconfig[;m
     ...
[32;1m    $ make deb-pkg[;m

    [36;1m提示[m

    linux-source-<version> 软件包使用 "/usr/src/linux-
    <version>.tar.bz2" 提供有 Debian 补丁的 Linux内核源代码。

    从 Debian 内核源代码软件包编译特定的二进制包，你应当使用 "debian/
    rules.gen[35;1m" 里的 "[;mbinary-arch_<architecture>_<featureset>_
    <flavour>" 对象。

[32;1m    $ sudo apt-get build-dep linux[;m
[32;1m    $ apt-get source linux[;m
[32;1m    $ cd linux-3.*[;m
[32;1m    $ fakeroot make -f debian/rules.gen binary-arch_i386_none_686[;m

    进阶信息参见：

[33;1m      *[;m Debian Wiki: KernelFAQ

[33;1m      *[;m Debian Wiki: DebianKernel

[33;1m      *[;m Debian Linux 内核手册：https://kernel-handbook.debian.net

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.9.6. 硬件驱动和固件[;m

    硬件驱动是运行在目标系统上的代码。大部分硬件驱动现在是自由软件，
    已经包含在普通的 Debian 内核软件包里，放在 main 区域。

[33;1m      *[;m GPU 驱动

[33;1m          +[;m Intel GPU 驱动 (main)

[33;1m          +[;m AMD/ATI GPU 驱动 (main)和/

[33;1m          +[;m NVIDIA GPU 驱动 (nouveau 驱动放在 main , 由厂家支持的二进
            制驱动，放在 non-free.)

[33;1m      *[;m Softmodem 驱动

[33;1m          +[;m martian-modem 和 sl-modem-dkms 软件包 (non-free)

    固件是加载在设备上的代码(比如说，CPU microcode, GPU 运行的渲染代
    码, 或 FPGA / CPLD 数据……）部分固件包是作为自由软件存在，但是很多
    固件包由于包含有没有源代码的数据，二进制不是作为自由软件存在。

[33;1m      *[;m firmware-linux-free (main)

[33;1m      *[;m firmware-linux-nonfree (non-free)

[33;1m      *[;m firmware-linux-* (non-free)

[33;1m      *[;m *-firmware (non-free)

[33;1m      *[;m intel-microcode (non-free)

[33;1m      *[;m amd64-microcode (non-free)

    请注意 non-free 和 contrib 的软件包不是 Debian 系统的一部分。启用
    和禁用 non-free 和 contrib 区域的配置，在第 2.1.4 节 “Debian 档案
    库基础” 里描述。你应当注意到第 2.1.5 节 “Debian 是100% 的自由软件
    ” 里的描述，使用 non-free 和 contrib 软件包会有负面影响。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.10. 虚拟化系统[;m

    通过使用虚拟系统，我们能在单个机器上同时运行多个系统。

    [36;1m提示[m

    参见 http://wiki.debian.org/SystemVirtualization.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.10.1. 虚拟化工具[;m

    除了简单的 chroot 工具外，Debian上还有一些有关系统虚拟化及仿真的
    软件包。这些软件包能够帮你创建虚拟系统。

    表 9.26. 虚拟化工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包     │流行度│大小 │               说明               │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │schroot        │V:7,  │2691 │在 chroot 下执行 Debian 二进制包的│
    │               │I:10  │     │特异工具                          │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │sbuild         │V:1,  │285  │从 Debian 源码构建 Debian 二进制包│
    │               │I:4   │     │的工具                            │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │pbuilder       │V:2,  │959  │Debian 软件包的打包软件           │
    │               │I:17  │     │                                  │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │debootstrap    │V:5,  │277  │搭建一个基本的 Debian 系统 (用 sh │
    │               │I:66  │     │写的)                             │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │cdebootstrap   │V:0,  │112  │搭建一个 Debian 系统 (用 C 写的)  │
    │               │I:3   │     │                                  │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │virt-manager   │V:8,  │7771 │虚拟机管理器: 用于管理虚拟机的桌面│
    │               │I:34  │     │应用                              │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │libvirt-clients│V:28, │1946 │libvirt 的库程序                  │
    │               │I:51  │     │                                  │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │bochs          │V:0,  │4619 │Bochs: IA-32 PC 仿真器            │
    │               │I:1   │     │                                  │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │qemu           │I:37  │93   │QEMU: 快速的通用处理器仿真器      │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │qemu-system    │I:35  │94   │QEMU: 全功能系统的模拟二进制      │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │qemu-user      │V:2,  │73104│QEMU: 用户模式的模拟二进制        │
    │               │I:34  │     │                                  │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │qemu-utils     │V:10, │6179 │QEMU: 工具集                      │
    │               │I:99  │     │                                  │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │qemu-kvm       │V:22, │103  │KVM: x86 硬件上有硬件辅助虚拟化的 │
    │               │I:72  │     │全虚拟化                          │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │virtualbox     │V:34, │76179│VirtualBox:i386 和 amd64 上 x86 的│
    │               │I:43  │     │虚拟化解决方案                    │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │xen-tools      │V:0,  │666  │用于管理 debian XEN 虚拟服务器的工│
    │               │I:6   │     │具                                │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │wine           │V:21, │186  │Wine: Windows 应用程序编程接口实现│
    │               │I:101 │     │（标准套件）                      │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │dosbox         │V:2,  │2706 │DOSBox:有 Tandy/Herc/CGA/EGA/VGA/ │
    │               │I:20  │     │SVGA 显卡,声音和 DOS 的 x86 模拟器│
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │dosemu         │V:0,  │4891 │DOSEMU: Linux DOS 模拟器          │
    │               │I:4   │     │                                  │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │vzctl          │V:1,  │1060 │OpenVZ 服务器虚拟化解决方案 - 控制│
    │               │I:3   │     │工具                              │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │vzquota        │V:1,  │221  │OpenVZ 服务器虚拟化解决方案 - 份额│
    │               │I:3   │     │工具                              │
    ├───────────────┼──────┼─────┼──────────────────────────────────┤
    │lxc            │V:8,  │1985 │Linux 容器用户层工具              │
    │               │I:13  │     │                                  │
    └───────────────────────────────────────────────────────────────┘


    参见维基百科 Comparison of platform virtual machines 来获得不同平
    台的虚拟化解决方案的详细比较信息。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.10.2. 虚拟化工作流[;m

    [33;1m注意[m

    这里所描述的功能只在 squeeze 或以后的版本中是可用的。

    [33;1m注意[m

    自从 lenny 之后，默认的 Debian 内核就是支持 KVM 的。

    典型的虚拟化工作流涉及以下几个步骤。

[33;1m      *[;m 创建空文件系统 (目录树或磁盘映像)。

[33;1m          +[;m 目录树可以通过 [35;1m"mkdir -p /path/to/chroot"[;m 创建。

[33;1m          +[;m 原始的磁盘映像文件能够使用 [34;1mdd(1)[m 创建 (参见第 9.6.1 节 “
            制作磁盘映像文件” 和第 9.6.5 节 [35;1m“制作空的磁盘映像文件”[;m).

[33;1m          +[;m [34;1mqemu-img(1)[m 能够创建和转化 QEMU 支持的磁盘映像文件.

[33;1m          +[;m 原始的格式和 VMDK 文件格式,能够作为虚拟化工具的通用格式.

[33;1m      *[;m 使用 [34;1mmount(8)[m 挂载磁盘映像到文件系统 (可选).

[33;1m          +[;m 对于原始磁盘映像文件,把它作为回环设备或设备映射设备挂载.
            (参见第 9.6.3 节 [35;1m“挂载磁盘映像文件”[;m).

[33;1m          +[;m 对于 QEMU 支持的磁盘映像,把它们作为 network block device
            网络块设备挂载 (参见第 9.10.3 节 [35;1m“挂载虚拟磁盘映像文件”[;m).

[33;1m      *[;m 在目标文件系统上部署需要的系统数据。

[33;1m          +[;m 使用 debootstrap 和 cdebootstrap 之类的程序来协助处理这个
            过程(参见第 9.10.4 节 [35;1m“Chroot 系统”[;m).

[33;1m          +[;m 在全功能系统模拟器下使用操作系统安装器。

[33;1m      *[;m 在虚拟化环境下运行一个程序。

[33;1m          +[;m chroot 提供基本的虚拟化环境,足够能在里面编译程序,运行控制
            台应用,运行后台守护程序 daemon.

[33;1m          +[;m QEMU 提供跨平台的 CPU 模拟器.

[33;1m          +[;m QEMU 和 KVM 通过 hardware-assisted virtualization硬件辅助
            虚拟化来提供全功能系统的模拟.

[33;1m          +[;m VirtualBox 可以在 i386 和 amd64 上,使用或者不使用
            hardware-assisted virtualization硬件辅助虚拟化来提供全功
            能系统模拟.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.10.3. 挂载虚拟磁盘映像文件[;m

    对于原始磁盘映像文件,参见第 9.6 节 [35;1m“磁盘映像”[;m.

    对于其它虚拟磁盘映像文件,你能够用使用 network block device网络块
    设备协议的 [34;1mqemu-nbd(8)[m 来导出他们,并使用内核模块 nbd 来挂载它们.

    [34;1mqemu-nbd(8)[m 支持 QEMU 所支持的磁盘格式: QEMU 支持下列磁盘格式:
    raw, qcow2, qcow, vmdk, vdi, bochs, cow (user-mode Linux
    copy-on-write), parallels, dmg, cloop, vpc, vvfat (virtual VFAT)
    和主机设备.

    网络块设备能够用和回环设备一样的方式支持分区 (参见第 9.6.3 节 “挂
    载磁盘映像文件”). 你能够按下面的方式挂载 [35;1m"disk.img"[;m 的第一个分区.

[31;1m    # modprobe nbd max_part=16[;m
[31;1m    # qemu-nbd -v -c /dev/nbd0 disk.img[;m
    ...
[31;1m    # mkdir /mnt/part1[;m
[31;1m    # mount /dev/nbd0p1 /mnt/part1[;m

    [36;1m提示[m

    你可以给 [34;1mqemu-nbd(8)[m 使用 [35;1m"-P 1"[;m 选项来导出[35;1m"disk.img"[;m的第一个分
    区.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.10.4. Chroot 系统[;m

    [34;1mchroot(8)[m 提供最基本的方式来运行一个不同的 GNU/Linux 系统实例，并
    且不需要重启原有的系统。

    [33;1m小心[m

    下面的列子假设根源系统和 chroot 系统都共享相同的 CPU 架构。

    你可以按下面的方式学会怎样建立和使用 [34;1mchroot(8)[m，通过在 [34;1mscript(1)[m
    下运行 [34;1mpbuilder(8)[m 程序。

[32;1m    $ sudo mkdir /sid-root[;m
[33m[32;1m    $ sudo pbuilder --create --no-targz --debug --buildplace /sid-root[;m[m

    你能够看到 [34;1mdebootstrap(8)[m 或 [34;1mcdebootstrap(1)[m 是如何在 [35;1m"/sid-root"[;m
    下部署 sid 环境的系统数据.

    [36;1m提示[m

    这些 [34;1mdebootstrap(8)[m 或 [34;1mcdebootstrap(1)[m 是 Debian 安装器用来安装
    Debian 的.这些也可以用来在不使用 Debian 安装盘的情况下，给一个系
    统安装 Debian，也可以替代安装其它 GNU/Linux 发行版。

[33m[32;1m    $ sudo pbuilder --login --no-targz  --debug --buildplace /sid-root[;m[m

    你可以看到一个 sid 环境的系统 shell 是如何按下面的方式创建的。

     1. 拷贝本地配置 ([35;1m"/etc/hosts"[;m, [35;1m"/etc/hostname"[;m, "/etc/
        resolv.conf")

     2. 挂载 [35;1m"/proc"[;m 文件系统

     3. 挂载 [35;1m"/dev/pts"[;m 文件系统

     4. 创建 [35;1m"/usr/sbin/policy-rc.d"[;m 的过程，总是 101 退出

     5. 运行 [35;1m"chroot /sid-root bin/bash -c [35;1m'exec -a -bash bin/bash'[;m"[;m

    [33;1m注意[m

    一些在 chroot 下的程序，需要访问比根源系统上的 pbuilder 能够提供
    的文件之外更多的文件.例如，[35;1m"/sys"[;m, [35;1m"/etc/passwd"[;m, [35;1m"/etc/group"[;m, "
    /var/run/utmp[35;1m", "[;m/var/log/wtmp"等等.也许需要使用 bind-mounted 或
    拷贝.

    [33;1m注意[m

    [35;1m"/usr/sbin/policy-rc.d"[;m 文件阻止在 Debian 系统上自动启动后台守护
    程序。参见 [35;1m"/usr/share/doc/sysv-rc/README.policy-rc.d.gz"[;m.

    [36;1m提示[m

    专用的 chroot 软件包 pbuilder 的原始用途,是构建一个 chroot 系统，
    并在 chroot 里面打包软件包。它是一个理想的系统，可以用来检查软件
    包的安装依赖性是否正确，确保不需要的和错误的安装依赖在最终的软件
    包中不存在。

    [36;1m提示[m

    类似的 schroot 软件包可以给你一个这样的主意，在 amd64 根源系统上
    运行 i386 chroot 系统。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m9.10.5. 多桌面系统[;m

    我建议在 Debian 稳定版上使用 QEMU 或者 VirtualBox，这些软件应用虚
    拟化技术安全的运行多桌面系统。这能让你运行 Debian 不稳定版和测试
    版上的桌面应用并且没有与之相关的通常意义上的风险。

    因为单纯的 QEMU 工具是非常慢的，当主机系统支持 KVM 的时候，建议使
    用它来加速。

    按下面的方法，能够创建一个可以用于QEMU 的包含有 Debian 系统的虚拟
    磁盘映像 [35;1m"virtdisk.qcow2"[;m，这个 Debian 系统使用 debian 安装器:小
    CD安装。

[32;1m    $ wget http://cdimage.debian.org/debian-cd/5.0.3/amd64/iso-cd/debian-503-amd64-netinst.iso[;m
[32;1m    $ qemu-img create -f qcow2 virtdisk.qcow2 5G[;m
[32;1m    $ qemu -hda virtdisk.qcow2 -cdrom debian-503-amd64-netinst.iso -boot d -m 256[;m
    ...

    在 Debian wiki: QEWU 可以查看更多信息。

    VirtualBox 自带的 Qt 图形界面工具是相当直观的。关于它的图形界面和
    命令行工具的解释可以在 VisualBox 用户手册和 VirtualBox 用户手册
    (PDF) 中查看。

    [36;1m提示[m

    在虚拟化下运行 Ubuntu 和 Fedora 之类的其它 GNU/Linux 发行版，是一
    个不错的学习其配置技巧的方法。其它专有操作系统也可以在这个 GNU/
    Linux 虚拟化下很好的运行。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 10 章 数据管理[;m

    以下是关于在 Debian 系统上管理二进制和文本数据的工具及其相关提示
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1. 共享，拷贝和存档[;m

    [31;1m警告[m

    为避免竞争情况，不应当对正在进行写操作的设备和文件，多个进程进行
    不协调的写操作。[34;1m采用flock(1)[m 的文件锁定机制可用于避免这种情况。

    数据的安全和它的受控共享有如下几个方面。

[33;1m      *[;m 存档文件的建立

[33;1m      *[;m 远程存储访问

[33;1m      *[;m 复制

[33;1m      *[;m 跟踪修改历史

[33;1m      *[;m 促进数据共享

[33;1m      *[;m 防止未经授权的文件访问

[33;1m      *[;m 检测未经授权的文件修改

    这些可以通过使用工具集来实现。

[33;1m      *[;m 存档和压缩工具

[33;1m      *[;m 复制和同步工具

[33;1m      *[;m 网络文件系统

[33;1m      *[;m 移动存储媒介

[33;1m      *[;m 安全 shell

[33;1m      *[;m 认证体系

[33;1m      *[;m 版本控制系统工具

[33;1m      *[;m 哈希算法和加密工具

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1.1. 存档和压缩工具[;m

    以下是 Debian 系统上可用的存档和压缩工具的预览。

    表 10.1. 存档和压缩工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包  │流行度│大小│扩展 │ 命令  │           描述           │
    │          │      │    │ 名  │       │                          │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │tar       │V:920,│2872│.tar │[34;1mtar(1)[m │标准的归档工具（默认）    │
    │          │I:999 │    │     │       │                          │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │cpio      │V:291,│989 │.cpio│[34;1mcpio(1)[m│Unix System V 风格的归档器│
    │          │I:999 │    │     │       │，与 [34;1mfind(1)[m 一起使用     │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │binutils  │V:177,│91  │.ar  │[34;1mar(1)[m  │创建静态库的归档工具      │
    │          │I:705 │    │     │       │                          │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │fastjar   │V:4,  │172 │.jar │fastjar│Java 归档工具（类似 zip） │
    │          │I:50  │    │     │(1)    │                          │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │pax       │V:15, │175 │.pax │[34;1mpax(1)[m │新的 POSIX 归档工具，介于 │
    │          │I:41  │    │     │       │tar 和 cpio 之间          │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │          │V:890,│    │     │[34;1mgzip(1)[m│                          │
    │gzip      │I:999 │231 │.gz  │, zcat │GNU LZ77 压缩工具（默认） │
    │          │      │    │     │(1), … │                          │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │          │      │    │     │bzip2  │Burrows-Wheeler           │
    │          │V:186,│    │     │(1),   │block-sorting 压缩工具有着│
    │bzip2     │I:946 │184 │.bz2 │bzcat  │比 [34;1mgzip(1)[m 更高的压缩率   │
    │          │      │    │     │(1), … │(跟 gzip 有着相似的语法但 │
    │          │      │    │     │       │速度比它慢)               │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │lzma      │V:3,  │141 │.lzma│[34;1mlzma(1)[m│LZMA 压缩工具有着比 gzip  │
    │          │I:46  │    │     │       │(1) 更高的压缩率（不推荐) │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │          │      │    │     │[34;1mxz(1)[m, │XZ 压缩工具有着比 [34;1mbzip2(1)[m│
    │xz-utils  │V:449,│515 │.xz  │xzdec  │更高的压缩率（压缩速度慢于│
    │          │I:958 │    │     │(1), … │gzip 但是比 bzip2 快; LZMA│
    │          │      │    │     │       │压缩工具的替代品)         │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │          │V:82, │    │     │[34;1m7zr(1)[m,│有着更高压缩率的 7-zip 文 │
    │p7zip     │I:399 │986 │.7z  │p7zip  │件归档器（LZMA 压缩）     │
    │          │      │    │     │(1)    │                          │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │          │V:139,│    │     │[34;1m7z(1)[m, │有着更高压缩率的 7-Zip 文 │
    │p7zip-full│I:520 │4659│.7z  │[34;1m7za(1)[m │件归档器（LZMA 压缩和其他 │
    │          │      │    │     │       │）                        │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │          │      │    │     │       │LZO 压缩工具有着比 [34;1mgzip(1)[m│
    │lzop      │V:6,  │97  │.lzo │[34;1mlzop(1)[m│更高的压缩和解压缩速度 (跟│
    │          │I:51  │    │     │       │gzip 有着相似的语法但压缩 │
    │          │      │    │     │       │率比它低)                 │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │zip       │V:50, │608 │.zip │[34;1mzip(1)[m │InfoZip：DOS 归档器和压缩 │
    │          │I:440 │    │     │       │工具                      │
    ├──────────┼──────┼────┼─────┼───────┼──────────────────────────┤
    │unzip     │V:288,│534 │.zip │unzip  │InfoZIP：DOS 解档器和解压 │
    │          │I:801 │    │     │(1)    │缩工具                    │
    └───────────────────────────────────────────────────────────────┘


    [31;1m警告[m

    除非你知道将会发生什么，否则不要设置 [35;1m"$TAPE"[;m 变量。它会改变 tar
    (1) 的行为。

    [33;1m注意[m

    gzipped [34;1mtar(1)[m 归档器用于扩展名是 [35;1m".tgz"[;m 或者 [35;1m".tar.gz"[;m 的文件。

    [33;1m注意[m

    xz-compressed [34;1mtar(1)[m 归档器用于扩展名是 [35;1m".txz"[;m 或者 [35;1m".tar.xz"[;m 的
    文件。

    [33;1m注意[m

    FOSS 工具，例如 [34;1mtar(1)[m，中的主流压缩方法已经按如下所示的迁移:
    gzip → bzip2 → xz

    [33;1m注意[m

    [34;1mcp(1)[m,[34;1mscp(1)[m 和 [34;1mtar(1)[m 工具可能并不适用于一些特殊的文件。[34;1mcpio(1)[m
    工具的适用范围是最广的。

    [33;1m注意[m

    [34;1mcpio(1)[m 是被设计为与 [34;1mfind(1)[m 和其它命令一起使用，适合于创建备份脚
    本的场景，因此，脚本的文件选择部分能够被独立测试。

    [33;1m注意[m

    Libreoffice 数据文件的内部结构是 [35;1m".jar"[;m 文件，它也可以使用 unzip
    工具来打开。

    [33;1m注意[m

    事实上跨平台支持最好的存档工具是 zip。按照[35;1m“zip -rX”[;m的方式调用可以
    获得最大的兼容性。如果最大文件大小需要纳入考虑范围，请同时配合
    [35;1m“-s”[;m选项使用。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1.2. 复制和同步工具[;m

    以下是 Debian 系统上的可用的简单复制和备份工具的预览。

    表 10.2. 复制和同步工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包    │流行度 │大小 │工具│            功能             │
    ├──────────────┼───────┼─────┼────┼─────────────────────────────┤
    │coreutils     │V:892, │15016│GNU │复制本地文件和目录([35;1m"-a"[;m 参数 │
    │              │I:999  │     │cp  │实现递归）                   │
    ├──────────────┼───────┼─────┼────┼─────────────────────────────┤
    │openssh-client│V:839, │4034 │scp │复制远端文件和目录（客户端， │
    │              │I:996  │     │    │[35;1m"-r"[;m 参数实现递归)           │
    ├──────────────┼───────┼─────┼────┼─────────────────────────────┤
    │openssh-server│V:702, │881  │sshd│复制远端文件和目录（远程服务 │
    │              │I:816  │     │    │器）                         │
    ├──────────────┼───────┼─────┼────┼─────────────────────────────┤
    │rsync         │V:266, │691  │-   │单向远程同步和备份           │
    │              │I:622  │     │    │                             │
    ├──────────────┼───────┼─────┼────┼─────────────────────────────┤
    │unison        │V:3,   │3457 │-   │双向远程同步和备份           │
    │              │I:19   │     │    │                             │
    └───────────────────────────────────────────────────────────────┘


    在复制文件的时候， [34;1mrsync(8)[m 比其他工具提供了更多的特性。

[33;1m      *[;m 差分传输算法只会发送源文件与已存在的目标文件之间的差异部分

[33;1m      *[;m 快速检查算法 (默认) 会查找大小或者最后的修改时间有变化的文件

[33m[33;1m      *[;m [35;1m"--exclude"[;m 和 [35;1m"--exclude-from"[;m 选项类似于 [34;1mtar(1)[m[m

[33;1m      *[;m 在源目录中添加反斜杠的语法能够避免在目标文件中创建额外的目录
        级别。

    [36;1m提示[m

    在 [34;1mcron(8)[m 下使用[35;1m"-gl"[;m选项执行在第 10.2.3 节 “用于备份数据的复制
    脚本”里提到的 bkup 脚本，将提供一个和 Plan9（译注：Plan9 也是一种
    文件系统，又称 v9fs, 可以用 apt-cache show 9mount 命令获取相关信
    息）的 dumpfs 静态数据归档非常相似的功能。

    [36;1m提示[m

    在表 10.11 [35;1m“版本控制系统工具列表”[;m 中的版本控制系统 (VCS) 可以被认
    为是多路拷贝和同步工具。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1.3. 归档语法[;m

    以下是用不同的工具压缩和解压缩整个 [35;1m"./source"[;m 目录中的内容。

    GNU [34;1mtar(1)[m:

[32;1m    $ tar -cvJf archive.tar.xz ./source[;m
[32;1m    $ tar -xvJf archive.tar.xz[;m

    或者，如下所示。

[33m[32;1m    $ find ./source -xdev -print0 | tar -cvJf archive.tar.xz --null -F -[;m[m

    [34;1mcpio(1)[m:

[33m[32;1m    $ find ./source -xdev -print0 | cpio -ov --null > archive.cpio; xz archive.cpio[;m[m
[32;1m    $ zcat archive.cpio.xz | cpio -i[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1.4. 复制语法[;m

    如下是用不同的工具复制整个 [35;1m"./source"[;m 目录中的内容。

[33;1m      *[;m 本地复制: [35;1m"./source"[;m 目录 → [35;1m"/dest"[;m 目录

[33;1m      *[;m 远程复制：本地主机上的 [35;1m"./source"[;m 目录 → [35;1m"user@host.dom"[;m 主机
        上的 [35;1m"/dest"[;m 目录

    [34;1mrsync(8)[m:

[31;1m    # cd ./source; rsync -aHAXSv . /dest[;m
[31;1m    # cd ./source; rsync -aHAXSv . user@host.dom:/dest[;m

    你能够选择使用[35;1m“源目录上的反斜杠”[;m语法。

[31;1m    # rsync -aHAXSv ./source/ /dest[;m
[31;1m    # rsync -aHAXSv ./source/ user@host.dom:/dest[;m

    或者，如下所示。

[33m[31;1m    # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . /dest[;m[m
[33m[31;1m    # cd ./source; find . -print0 | rsync -aHAXSv0 --files-from=- . user@host.dom:/dest[;m[m

    GNU [34;1mcp(1)[m 和 openSSH [34;1mscp(1)[m:

[31;1m    # cd ./source; cp -a . /dest[;m
[31;1m    # cd ./source; scp -pr . user@host.dom:/dest[;m

    GNU [34;1mtar(1)[m:

[31;1m    # (cd ./source && tar cf - . ) | (cd /dest && tar xvfp - )[;m
[31;1m    # (cd ./source && tar cf - . ) | ssh user@host.dom '(cd /dest && tar xvfp - )'[;m

    [34;1mcpio(1)[m:

[33m[31;1m    # cd ./source; find . -print0 | cpio -pvdm --null --sparse /dest[;m[m

    你能够在所有包含 [35;1m"."[;m 的例子里用 [35;1m"foo"[;m 替代 [35;1m"."[;m，这样就可以从 "./
    source/foo[35;1m" 目录复制文件到 "[;m/dest/foo" 目录。

    在所有包含 [35;1m"."[;m 的列子里，你能够使用绝对路径 [35;1m"/path/to/source/foo"[;m
    来代替 [35;1m"."[;m，这样可以去掉 [35;1m"cd ./source;"[;m. 如下所示，这些文件会根据
    工具的不同，拷贝到不同的位置。

[33;1m      *[;m [35;1m"/dest/foo"[;m: [34;1mrsync(8)[m, GNU [34;1mcp(1)[m, 和 [34;1mscp(1)[m

[33;1m      *[;m [35;1m"/dest/path/to/source/foo"[;m: GNU [34;1mtar(1)[m, 和 [34;1mcpio(1)[m

    [36;1m提示[m

    [34;1mrsync(8)[m 和 GNU [34;1mcp(1)[m 可以用 [35;1m"-u"[;m 选项来忽略接受端上更新的文件。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1.5. 查找文件的语法[;m

    [34;1mfind(1)[m 被用作从归档中筛选文件也被用作拷贝命令 (参见第 10.1.3 节
    [35;1m“归档语法”[;m和第 10.1.4 节 [35;1m“复制语法”[;m) 或者用于 [34;1mxargs(1)[m (参见第
     9.3.9 节 [35;1m“使用文件循环来重复一个命令”[;m)。通过 find 的命令行参数能
    够使其功能得到加强。

    以下是 [34;1mfind(1)[m基本语法的总结。

[33;1m      *[;m find 条件参数的运算规则是从左到右。

[33;1m      *[;m 一旦输出是确定的，那么运算就会停止。

[33;1m      *[;m “逻辑 OR[35;1m" （由条件之间的 "[;m-o[35;1m" 参数指定的）优先级低于 "[;m逻辑
        AND[35;1m" （由 "[;m-a" 参数指定或者条件之间没有任何参数）。

[33;1m      *[;m ”逻辑 NOT[35;1m" (由条件前面的 "[;m!" 指定) 优先级高于 [35;1m“逻辑 AND”[;m。

[33;1m      *[;m [35;1m"-prune"[;m 总是返回逻辑 TRUE 并且如果这个目录是存在的，将会搜索
        除这个目录以外的文件。

[33;1m      *[;m [35;1m"-name"[;m 选项匹配带有 shell 通配符 (参见第 1.5.6 节 “Shell 通
        配符”) 的文件名但也匹配带有类似 [35;1m"*"[;m 和 [35;1m"?"[;m 元字符的 ."。(新的
        POSIX 特性)

[33;1m      *[;m [35;1m"-regex"[;m 匹配整个文件路径，默认采用 emacs 风格的 BRE (参见第
         1.6.2 节 [35;1m“正则表达式”[;m)。

[33;1m      *[;m [35;1m"-size"[;m 根据文件大小来匹配 (值前面带有 [35;1m"+"[;m 号匹配更大的文件，
        值前面带有 [35;1m"-"[;m 号匹配更小的文件)

[33;1m      *[;m [35;1m"-newer"[;m 参数匹配比参数名中指定的文件还要新的文件。

[33;1m      *[;m [35;1m"-print0"[;m 参数总是返回逻辑 TRUE 并将完整文件名 (null
        terminated) 打印到标准输出设备上。

    如下是 [34;1mfind(1)[m 语法格式。

[31;1m    # find /path/to \[;m
        -xdev -regextype posix-extended \
        -type f -regex [35;1m".*\.cpio|.*~"[;m -prune -o \
        -type d -regex [35;1m".*/\.git"[;m -prune -o \
        -type f -size +99M -prune -o \
        -type f -newer /path/to/timestamp -print0

    这些命令会执行如下动作。

     1. 查找 [35;1m"/path/to"[;m 下的所有文件

     2. 限定全局查找的文件系统并且使用的是 ERE (参见第 1.6.2 节 “正则
        表达式”)

     3. 通过停止处理的方式来排除匹配 [35;1m".*\.cpio"[;m 或 [35;1m".*~"[;m 正则表达式的
        文件

     4. 通过停止处理的方式来排除匹配 [35;1m".*/\.git"[;m 正则表达式的目录

     5. 通过停止处理的方式来排除比 99MB (1048576字节单元) 更大的文件

     6. 显示文件名，满足以上搜索条件并且比 [35;1m"/path/to/timestamp"[;m 新的
        文件

    请留心以上例子中的 [35;1m"-prune -o"[;m 排除文件的习惯用法。

    [33;1m注意[m

    对于非 Debian 系的 Unix-like 系统，有些参数可能不被 [34;1mfind(1)[m 命令
    所支持。在这种情况下，应该考虑调整匹配方法并用 [35;1m"-print"[;m 替代
    [35;1m"-print0"[;m。你可能同样需要更改其他相关的命令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1.6. 归档媒体[;m

    为重要的数据存档寻找存储设备时，你应该注意它们的局限性。对于小型
    的个人数据备份，我使用品牌公司的 CD-R 和 DVD-R 然后把它放在阴凉、
    干燥、清洁的地方。(专业的一般使用磁带存档介质)

    [33;1m注意[m

    防火安全是对于纸质文档来说的，大多数的计算机数据存储媒介耐热性比
    纸差。我经常依赖存储在多个安全地点的加密拷贝。

    网上（主要是来源于供应商信息）可以查看存储介质的最大使用寿命。

[33;1m      *[;m 大于100年：用墨水的无酸纸

[33;1m      *[;m 100年：光盘存储（CD/DVD，CD/DVD-R）

[33;1m      *[;m 30年：磁带存储（磁带，软盘)

[33;1m      *[;m 20年：相变光盘存储（CD-RW）

    这不包括由于人为导致的机械故障等等。

    网上（主要来源于供应商信息）可以查看存储介质的最大的写次数。

[33;1m      *[;m 大于250,000次：硬盘驱动器

[33;1m      *[;m 大于10,000次：闪存

[33;1m      *[;m 1,000次：CD/DVD-RW

[33;1m      *[;m 1次：CD/DVD-R，纸

    [33;1m小心[m

    这里的存储寿命和写次数的数据不应该被用来决定任何用于关键数据的存
    储媒介，请翻阅制造商提供的特定产品的说明。

    [36;1m提示[m

    因为 CD/DVD-R 和纸只能写一次，它们从根本上阻止了因为重写导致的数
    据意外丢失。这是优点！

    [36;1m提示[m

    如果你需要更快更频繁的进行大数据备份，那么通过高速网络连接的远端
    主机上的硬盘来实现备份，可能是唯一可行的方法。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1.7. 可移动存储设备[;m

    可移动存储设备可能是以下的任何一种。

[33;1m      *[;m USB 闪存盘

[33;1m      *[;m 硬盘驱动器

[33;1m      *[;m 光盘驱动器

[33;1m      *[;m 数码相机

[33;1m      *[;m 数字音乐播放器

    它们可以通过以下的方式来进行连接。

[33;1m      *[;m USB

[33;1m      *[;m IEEE 1394 / FireWire

[33;1m      *[;m PC 卡

    像 GNOME 和 KDE 这样的现代桌面环境能够在 [35;1m"/etc/fstab"[;m 文件中没有
    匹配条目的时候，自动挂载这些可移动设备。

[33;1m      *[;m udisks 包提供了守护进程和相关的实用程序来挂载和卸载这些设备。

[33;1m      *[;m D-bus 创建事件来触发自动处理。

[33;1m      *[;m PolicyKit 提供了所需的特权。

    [36;1m提示[m

    [34;1mumount(8)[m 在自动挂载设备的时候可能会带有 [35;1m"uhelper="[;m 参数。

    [36;1m提示[m

    只有当这些可移动设备没有在 [35;1m"/etc/fstab"[;m 文件中列出时，桌面环境下
    才会自动挂载。

    现代桌面环境下的挂载点被选为 [35;1m"/media/<disk_label>"[;m，它可以被如下
    所示的来定制。

[33;1m      *[;m FAT 格式的文件系统使用 [34;1mmlabel(1)[m 命令

[33;1m      *[;m ISO9660 文件系统使用带有 [35;1m"-V"[;m 选项的 [34;1mgenisoimage(1)[m 命令

[33;1m      *[;m ext2/ext3/ext4 文件系统使用带有 [35;1m"-L"[;m 选项的 [34;1mtune2fs(1)[m 命令

    [36;1m提示[m

    挂载时可能需要提供编码选项（参见第 8.4.6 节 [35;1m“文件名编码”[;m）。

    [36;1m提示[m

    在图形界面菜单上移除文件系统，可能会移除它的动态设备节点例如 "/
    dev/sdc"。如果你想要保留它的设备节点，你应该在命令行提示符上输入
    [34;1mumount(8)[m 命令来卸载它。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1.8. 选择用于分享数据的文件系统[;m

    当你通过可移动存储设备与其他系统分享数据的时候，你应该先把它格式
    化为被两种操作系统都支持的通用的文件系统。下面是文件系统的列表。

    表 10.3. 典型使用场景下可移动存储设备可选择的文件系统列表

    ┌───────────────────────────────────────────────────────────────┐
    │文件系 │                   典型使用场景描述                    │
    │  统   │                                                       │
    ├───────┼───────────────────────────────────────────────────────┤
    │FAT12  │软盘（<32MiB）上跨平台的数据分享                       │
    ├───────┼───────────────────────────────────────────────────────┤
    │FAT16  │在小硬盘(<2GiB)上的跨平台的数据分享                    │
    ├───────┼───────────────────────────────────────────────────────┤
    │FAT32  │在大硬盘（<8TiB，被 MS Windows95 OSR2 以上的操作系统所 │
    │       │支持) 上的跨平台的数据分享                             │
    ├───────┼───────────────────────────────────────────────────────┤
    │       │在大硬盘类设备上的跨平台共享数据 (在 MS Windows NT 和后│
    │NTFS   │续版本原生支持；在 Linux 上，通过使用 FUSE 的 NTFS-3G  │
    │       │支持。)                                                │
    ├───────┼───────────────────────────────────────────────────────┤
    │ISO9660│在 CD-R 和 DVD+/-R 上的跨平台的静态数据分享            │
    ├───────┼───────────────────────────────────────────────────────┤
    │UDF    │CD-R 和 DVD+/-R (新)上的增量数据写入                   │
    ├───────┼───────────────────────────────────────────────────────┤
    │MINIX  │                                                       │
    │文件系 │软盘上磁盘空间高利用率的 unix 文件数据存储             │
    │统     │                                                       │
    ├───────┼───────────────────────────────────────────────────────┤
    │ext2 文│在装有老旧 linux 系统的硬盘上的数据分享                │
    │件系统 │                                                       │
    ├───────┼───────────────────────────────────────────────────────┤
    │ext3 文│在装有老旧 linux 系统的硬盘上的数据分享                │
    │件系统 │                                                       │
    ├───────┼───────────────────────────────────────────────────────┤
    │ext4 文│在装有较新的 linux 系统的硬盘上的数据分享              │
    │件系统 │                                                       │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    查看第 9.8.1 节 [35;1m“使用 dm-crypt/LUKS 加密移动磁盘”[;m来获得关于使用设
    备级加密的跨平台的数据共享的信息。

    FAT 文件系统被绝大多数的现代操作系统支持，它对于通过可移动硬盘进
    行的数据交换是非常有用的。

    当格式化像装有 FAT 文件系统的跨平台数据共享的可移动设备时，以下应
    该是保险的选择。

[33;1m      *[;m 用 [34;1mfdisk(8)[m，[34;1mcfdisk(8)[m 或者 [34;1mparted(8)[m 命令（参见第 9.5.2 节 “
        硬盘分区配置”）把它们格式化为单个的主分区并对把它做如下标记。

[33;1m          +[;m 标记小于 2GB 的 FAT 设备为字符[35;1m"6"[;m。

[33;1m          +[;m 标记更大的 FAT32 设备为字符 [35;1m"c"[;m。

[33;1m      *[;m 如下所示是用 mkfs.[34;1mvfat(8)[m 命令格式化主分区的。

[33;1m          +[;m 它的设备名字，例如 [35;1m"/dev/sda1"[;m 用于 FAT16 设备

[33;1m          +[;m 明确的选项和它的设备名，例如 [35;1m"-F 32 /dev/sda1"[;m 用于 FAT32
            设备

    当使用 FAT 或 ISO9660 文件系统分享数据时，如下是需要注意的安全事
    项。

[33;1m      *[;m 用 [34;1mtar(1)[m，[34;1m或cpio(1)[m命令压缩文件，目地是为了保留文件名，符号
        链接，原始的文件权限和文件所有者信息。

[33;1m      *[;m 用 [34;1msplit(1)[m 命令把压缩文件分解成若干小于 2GiB的小文件，使其免
        受文件大小限制。

[33;1m      *[;m 加密压缩文件保护其内容免受未经授权的访问。

    [33;1m注意[m

    因为 FAT 文件系统的设计，最大的文件大小为 (2^32 - 1) bytes =
    (4GiB -1 byte)。对于一些老旧的 32 位系统上的应用程序而言，最大的
    文件大小甚至更小(2^31 -1) bytes = (2GiB -1 byte)。Debian 没有遇到
    后者的问题。

    [33;1m注意[m

    微软系统本身并不建议在超过 200MB 的分区或者驱动器上使用 FAT。他们
    的 " Overview of FAT, HPFS, and NTFS File Systems 这篇文章突出显
    示了微软系统的缺点，例如低效的磁盘空间利用。当然了，我们在 Linux
    系统上还是应该使用 ext4 文件系统。

    [36;1m提示[m

    有关文件系统和访问文件系统的更多信息，请参考 [35;1m"Filesystems HOWTO"[;m
    。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.1.9. 网络上的数据分享[;m

    当使用网络来分享数据的时候，你应该使用通用的服务。这里有一些提示
    。

    表 10.4. 典型使用场景下可选择的网络服务列表

    ┌───────────────────────────────────────────────────────────────┐
    │  网络服务   │                典型使用场景描述                 │
    ├─────────────┼─────────────────────────────────────────────────┤
    │SMB/CIFS 用  │通过 [35;1m“Microsoft Windows 网络”[;m 分享文件，参见     │
    │Samba 挂载网 │smb.[34;1mconf(5)[m 和官方 Samba 3.x.x 指导和参考手册（  │
    │络文件系统   │The Official Samba 3.x.x HOWTO and Reference     │
    │             │Guide）或 samba-doc 软件包                       │
    ├─────────────┼─────────────────────────────────────────────────┤
    │NFS 用 Linux │通过 “Unix/Linux 网络" 分享文件，参见 [34;1mexports(5)[m │
    │内核挂载网络 │和 Linux NFS-HOWTO                               │
    │文件系统     │                                                 │
    ├─────────────┼─────────────────────────────────────────────────┤
    │HTTP 服务    │在 web 服务器/客户端之间分享文件                 │
    ├─────────────┼─────────────────────────────────────────────────┤
    │HTTPS 服务   │在有加密的安全套接层 (SSL) 或者安全传输层 (TLS)  │
    │             │的网络服务器/客户端中分享文件                    │
    ├─────────────┼─────────────────────────────────────────────────┤
    │FTP 服务     │在 FTP 服务器/客户端之间分享文件                 │
    └───────────────────────────────────────────────────────────────┘


    尽管对于文件分享来说，通过网络挂载文件系统和传输文件是相当方便的
    ，但这可能是不安全的。它们的网络连接必须通过如下所示的加强安全性
    。

[33;1m      *[;m 用 SSL/TLS 加密

[33;1m      *[;m 建立 SSH 通道

[33;1m      *[;m 建立 VPN 通道

[33;1m      *[;m 网络之间需要有安全的防火墙

    参见第 6.10 节 [35;1m“其它网络应用服务”[;m 和第 6.11 节 “其它网络应用客户
    端”。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.2. 备份和恢复[;m

    我们都熟知计算机有时会出问题，或者由于人为的错误导致系统和数据损
    坏。备份和恢复操作是成功的系统管理中非常重要的一部分。可能有一天
    你的电脑就会出问题。

    [36;1m提示[m

    保持你的备份系统简洁并且经常备份你的系统，有备份数据比你采用的备
    份方法的技术先进要重要的多。

    有3个关键的因素决定实际的备份和恢复策略。

     1. 知道要备份和恢复什么。

[33;1m          +[;m 你自己创建的数据文件：在 [35;1m"~/"[;m 下的数据

[33;1m          +[;m 你使用的应用程序创建的数据文件：在 [35;1m"/var/"[;m 下的数据（除了
            [35;1m"/var/cache/"[;m，[35;1m"/var/run/"[;m 和 [35;1m"/var/tmp/"[;m)

[33;1m          +[;m 系统配置文件：在 "/etc/” 下的数据

[33;1m          +[;m 本地软件：在 [35;1m"/usr/local/"[;m 或 [35;1m"/opt/"[;m 下的数据

[33;1m          +[;m 系统安装信息：关键步骤 (分区,...) 的纯文本备忘录

[33;1m          +[;m 验证数据结果：通过实验性的恢复操作来预先验证

     2. 知道怎样去备份和恢复。

[33;1m          +[;m 安全的数据存储：保护其免于覆盖和系统故障

[33;1m          +[;m 经常备份：有计划的备份

[33;1m          +[;m 冗余备份：数据镜像

[33;1m          +[;m 傻瓜式操作：单个简单命令备份

     3. 评估涉及的风险和成本。

[33;1m          +[;m 评估数据丢失的损失

[33;1m          +[;m 备份所需的资源：人力，硬件，软件，…

[33;1m          +[;m 数据丢失的方式及其可能性

    [33;1m注意[m

    除非你知道自己做的是什么，否则不要备份 /proc, /sys, /tmp, 和 /run
    目录下的伪文件系统（参见第 1.2.12 节 [35;1m“procfs 和 sysfs”[;m 和第
     1.2.13 节 [35;1m“tmpfs”[;m)。它们是庞大且无用的数据。

    至于安全的数据存储，数据至少是应该在不同的磁盘分区上最好是在不同
    的磁盘和机器上，来承受文件系统发生的损坏。重要的数据最好存储在只
    能写一次的媒介上例如 CD/DVD-R 来防止覆盖事故。（参见第 9.7 节 “二
    进制数据” 怎样在 shell 命令行写入存储媒介。GNOME 桌面图形环境可以
    让你轻松的通过菜单：[35;1m“位置 → CD/DVD 刻录”[;m来实现写入操作。）

    [33;1m注意[m

    当备份数据的时候，你可能希望停止一些应用程序的守护进程例如 MTA（
    参见第 6.3 节 [35;1m“邮件传输代理 (MTA)”[;m）。

    [33;1m注意[m

    你应该格外小心地备份和恢复身份认证相关的数据文件例如 "/etc/ssh/
    ssh_host_dsa_key[35;1m", "[;m/etc/ssh/ssh_host_rsa_key[35;1m", "[;m~/.gnupg/*[35;1m", "[;m~
    /.ssh/*[35;1m", /etc/passwd"[;m, [35;1m"/etc/shadow"[;m, [35;1m"/etc/fetchmailrc"[;m,
    [35;1m"popularity-contest.conf"[;m, [35;1m"/etc/ppp/pap-secrets"[;m 和 "/etc/exim4/
    passwd.client/"。这些数据中的有一些文件是不能通过向系统输入同样的
    字符串来再生的。

    [33;1m注意[m

    如果你以用户进程的方式执行 cron job，你必须存储文件到 "/var/spool
    /cron/crontabs" 目录并且重启 [34;1mcron(8)[m。参见第 9.3.14 节 “定时任务
    安排”来获得关于 [34;1mcron(8)[m 和 [34;1mcrontab(1)[m 的信息。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.2.1. 实用备份套件[;m

    以下是 Debian 系统上值得注意的实用备份程序套件的列表。

    表 10.5. 实用备份程序套件列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包    │流行 │大小 │                说明                │
    │              │ 度  │     │                                    │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │dump          │V:1, │340  │4.4 BSD [34;1mdump(8)[m 和 [34;1mrestore(8)[m 命令用│
    │              │I:6  │     │于 ext2/ext3/ext4 文件系统          │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │              │V:1, │     │在 GNU/Linux 和 IRIX 上用 [34;1mxfsdump(8)[m│
    │xfsdump       │I:11 │834  │和 [34;1mxfsrestore(8)[m 命令来备份和恢复   │
    │              │     │     │XFS 文件系统                        │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │backupninja   │V:4, │350  │轻量的可扩展的 meta-backup 系统     │
    │              │I:4  │     │                                    │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │bacula-common │V:10,│2074 │Bacula: 网络数据备份，恢复和核查-常 │
    │              │I:18 │     │见的支持文件                        │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │bacula-client │I:5  │168  │Bacula: 网络数据备份，恢复和核查-客 │
    │              │     │     │户端元软件包                        │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │bacula-console│V:1, │68   │Bacula: 网络数据备份，恢复和核查-文 │
    │              │I:6  │     │本终端                              │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │bacula-server │I:1  │168  │Bacula: 网络数据备份，恢复和核查-服 │
    │              │     │     │务器端元软件包                      │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │amanda-common │V:1, │9760 │Amanda: 马里兰大学开发的高级自动化网│
    │              │I:2  │     │络磁盘归档器（库）                  │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │amanda-client │V:1, │1073 │Amanda: 马里兰大学开发的高级自动化网│
    │              │I:2  │     │络磁盘归档器（客户端）              │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │amanda-server │V:0, │1045 │Amanda: 马里兰大学开发的高级自动化网│
    │              │I:0  │     │络磁盘归档器（服务器端）            │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │backup-manager│V:1, │571  │命令行备份工具                      │
    │              │I:2  │     │                                    │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │backup2l      │V:1, │114  │用于可挂载媒介 (基于磁盘的) 的低维护│
    │              │I:1  │     │的备份/恢复工具                     │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │backuppc      │V:4, │2232 │BackupPC 是用于备份 PC 机数据（基于 │
    │              │I:5  │     │磁盘）的高性能的企业级工具          │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │duplicity     │V:8, │1597 │(远程) 增量备份                     │
    │              │I:16 │     │                                    │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │flexbackup    │V:0, │242  │(远程) 增量备份                     │
    │              │I:0  │     │                                    │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │rdiff-backup  │V:9, │704  │(远程) 增量备份                     │
    │              │I:17 │     │                                    │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │restic        │V:0, │16357│(远程) 增量备份                     │
    │              │I:1  │     │                                    │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │rsnapshot     │V:6, │452  │(远程) 增量备份                     │
    │              │I:12 │     │                                    │
    ├──────────────┼─────┼─────┼────────────────────────────────────┤
    │slbackup      │V:0, │153  │(远程) 增量备份                     │
    │              │I:0  │     │                                    │
    └───────────────────────────────────────────────────────────────┘


    备份工具有各自的专用的用途。

[33;1m      *[;m Mondo Rescue 是一个备份系统，它能够方便的从备份 CD/DVD 等设备
        中快速恢复整个系统，而不需要经过常规的系统安装过程。

[33;1m      *[;m 定期备份用户数据,可以通过一个简单的脚本（第 10.2.2 节 “一个系
        统备份的脚本例子”）和 [34;1mcron(8)[m 来实现。

[33;1m      *[;m Bacula，Amanda 和 BackupPC 是全功能的备份实用套件，主要用于联
        网的定期备份。

    第 10.1.1 节 [35;1m“存档和压缩工具”[;m 和第 10.1.2 节 [35;1m“复制和同步工具”[;m 描
    述的基础工具能够通过自定义脚本来帮助系统备份。这些脚本的功能可以
    通过如下的工具来增强。

[33;1m      *[;m restic 软件包能够增量备份（远程）。

[33;1m      *[;m rdiff-backup 软件包能够增量备份（远程）。

[33;1m      *[;m dump 软件包用于高效增量的归档和恢复整个文件系统。

    [36;1m提示[m

    参见 [35;1m"/usr/share/doc/dump/"[;m 和 [35;1m"Is dump really deprecated?"[;m 来了
    解 dump 程序。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.2.2. 一个系统备份的脚本例子[;m

    对于运行 unstable 套件的个人 Debian 桌面系统来说，只需要保护个人
    数据和关键数据。我不管怎样每年都会重新安装一次系统。因此没理由去
    备份整个系统或者安装全功能的备份实用程序。

    我使用简单的脚本来制作用于备份的压缩文件并用 GUI 界面把它烧写到
    CD/DVD 里。以下是关于这个的脚本例子。

[31;1m    #!/bin/sh -e[;m
[31;1m    # Copyright (C) 2007-2008 Osamu Aoki <osamu@debian.org>, Public Domain[;m
    BUUID=1000; USER=osamu # UID and name of a user who accesses backup files
    BUDIR=[35;1m"/var/backups"[;m
    XDIR0=[35;1m".+/Mail|.+/Desktop"[;m
    XDIR1=[35;1m".+/\.thumbnails|.+/\.?Trash|.+/\.?[cC]ache|.+/\.gvfs|.+/sessions"[;m
    XDIR2=[35;1m".+/CVS|.+/\.git|.+/\.svn|.+/Downloads|.+/Archive|.+/Checkout|.+/tmp"[;m
    XSFX=[35;1m".+\.iso|.+\.tgz|.+\.tar\.gz|.+\.tar\.bz2|.+\.cpio|.+\.tmp|.+\.swp|.+~"[;m
    SIZE=[35;1m"+99M"[;m
[33m    DATE=$(date --utc +[35;1m"%Y%m%d-%H%M"[;m)[m
    [ -d [35;1m"$BUDIR"[;m ] || mkdir -p [35;1m"BUDIR"[;m
    umask 077
[33m    dpkg --get-selections \* > /var/lib/dpkg/dpkg-selections.list[m
    debconf-get-selections > /var/cache/debconf/debconf-selections

    {
    find /etc /usr/local /opt /var/lib/dpkg/dpkg-selections.list \
         /var/cache/debconf/debconf-selections -xdev -print0
    find /home/$USER /root -xdev -regextype posix-extended \
      -type d -regex [35;1m"$XDIR0|$XDIR1"[;m -prune -o -type f -regex [35;1m"$XSFX"[;m -prune -o \
      -type f -size  [35;1m"$SIZE"[;m -prune -o -print0
    find /home/$USER/Mail/Inbox /home/$USER/Mail/Outbox -print0
    find /home/$USER/Desktop  -xdev -regextype posix-extended \
      -type d -regex [35;1m"$XDIR2"[;m -prune -o -type f -regex [35;1m"$XSFX"[;m -prune -o \
      -type f -size  [35;1m"$SIZE"[;m -prune -o -print0
[33m    } | cpio -ov --null -O $BUDIR/BU$DATE.cpio[m
    chown $BUUID $BUDIR/BU$DATE.cpio
    touch $BUDIR/backup.stamp

    这是一个用 root 权限执行的脚本例子。

    我建议你按照如下所示的去更改和执行这个脚本。

[33;1m      *[;m 编辑这个脚本使其能够覆盖到你所有的重要数据（参见第 10.1.5 节
        [35;1m“查找文件的语法”[;m 和第 10.2 节 [35;1m“备份和恢复”[;m）。

[33;1m      *[;m 用 [35;1m"find ...-newer $BUDIR/backup.stamp -print0"[;m 替代 "find
        ...-print0" 来实现增量备份。

[33;1m      *[;m 为保险起见，使用 [34;1mscp(1)[m 或 [34;1mrsync(1)[m 命令来备份文件到远端或者
        把它们烧写到 CD/DVD 里。（我使用 GNOME 桌面 GUI 来烧写 CD/DVD
        。参见第 12.1.8 节 [35;1m“zenity 的 shell 脚本案例”[;m 来获得更多的信
        息。）

    把事情简单化！

    [36;1m提示[m

    你能够用 [35;1m"debconf-set-selections debconf-selections"[;m 命令恢复
[33m    debconf 配置数据，可以用 "dpkg --set-selection[m
    <dpkg-selections.list" 命令恢复 dpkg 筛选数据。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.2.3. 用于备份数据的复制脚本[;m

    对于目录树下面的数据集，[35;1m"cp -a"[;m 命令可以实现常规备份。

    对于类似 [35;1m"/var/cache/apt/packages/"[;m 目录下面的大量不可覆盖的静态
    数据集,使用 [35;1m"cp -al"[;m 命令来创建硬链接是一种替代常规备份的方式，这
    样可以高效的利用磁盘空间。

    以下是一个用于数据备份的名为 bkup 的复制脚本。它把当前目录下的所
    有 (non-VCS) 文件复制到父目录下的指定目录中或者远程主机上。

[31;1m    #!/bin/sh -e[;m
[31;1m    # Copyright (C) 2007-2008 Osamu Aoki <osamu@debian.org>, Public Domain[;m
    fdot(){ find . -type d \( -iname [35;1m".?*"[;m -o -iname [35;1m"CVS"[;m \) -prune -o -print0;}
    fall(){ find . -print0;}
    mkdircd(){ mkdir -p [35;1m"$1"[;m;chmod 700 [35;1m"$1"[;m;cd [35;1m"$1"[;m>/dev/null;}
    FIND=[35;1m"fdot"[;m;OPT=[35;1m"-a"[;m;MODE=[35;1m"CPIOP"[;m;HOST=[35;1m"localhost"[;m;EXTP=[35;1m"$(hostname -f)"[;m
    BKUP=[35;1m"$(basename $(pwd)).bkup"[;m;TIME=[35;1m"$(date  +%Y%m%d-%H%M%S)"[;m;BU=[35;1m"$BKUP/$TIME"[;m
    while getopts gcCsStrlLaAxe:h:T f; do case $f in
    g)  MODE=[35;1m"GNUCP"[;m;; # cp (GNU)
    c)  MODE=[35;1m"CPIOP"[;m;; # cpio -p
    C)  MODE=[35;1m"CPIOI"[;m;; # cpio -i
    s)  MODE=[35;1m"CPIOSSH"[;m;; # cpio/ssh
    t)  MODE=[35;1m"TARSSH"[;m;; # tar/ssh
    r)  MODE=[35;1m"RSYNCSSH"[;m;; # rsync/ssh
    l)  OPT=[35;1m"-alv"[;m;; # hardlink (GNU cp)
    L)  OPT=[35;1m"-av"[;m;;  # copy (GNU cp)
    a)  FIND=[35;1m"fall"[;m;; # find all
    A)  FIND=[35;1m"fdot"[;m;; # find non CVS/ .???/
    x)  set -x;; # trace
    e)  EXTP=[35;1m"${OPTARG}"[;m;; # hostname -f
    h)  HOST=[35;1m"${OPTARG}"[;m;; # user@remotehost.example.com
    T)  MODE=[35;1m"TEST"[;m;; # test find mode
    \?) echo [35;1m"use -x for trace."[;m
    esac; done
    shift $(expr $OPTIND - 1)
    if [ $# -gt 0 ]; then
      for x in $@; do cp $OPT $x $x.$TIME; done
    elif [ $MODE = GNUCP ]; then
      mkdir -p [35;1m"../$BU"[;m;chmod 700 [35;1m"../$BU"[;m;cp $OPT . [35;1m"../$BU/"[;m
    elif [ $MODE = CPIOP ]; then
      mkdir -p [35;1m"../$BU"[;m;chmod 700 [35;1m"../$BU"[;m
[33m[32;1m      $FIND|cpio --null --sparse -pvd ../$BU[;m[m
    elif [ $MODE = CPIOI ]; then
[33m[32;1m      $FIND|cpio -ov --null | ( mkdircd "../$BU"&&cpio -i )[;m[m
    elif [ $MODE = CPIOSSH ]; then
[33m[32;1m      $FIND|cpio -ov --null|ssh -C $HOST "( mkdircd \"$EXTP/$BU\"&&cpio -i )"[;m[m
    elif [ $MODE = TARSSH ]; then
      (tar cvf - . )|ssh -C $HOST [35;1m"( mkdircd \"[;m$EXTP/$BU\[35;1m"&& tar xvfp - )"[;m
    elif [ $MODE = RSYNCSSH ]; then
      rsync -aHAXSv ./ [35;1m"${HOST}:${EXTP}-${BKUP}-${TIME}"[;m
    else
      echo [35;1m"Any other idea to backup?"[;m
[32;1m      $FIND |xargs -0 -n 1 echo[;m
    fi

    如上只是一个范例。在你自己使用脚本之前，请阅读此脚本并且修改它。

    [36;1m提示[m

    我把 bkup 保存在我的 [35;1m"/usr/local/bin"[;m 目录。我假定当需要临时快照
    备份的时候，能够在工作目录不带任何参数运行 bkup 命令。

    [36;1m提示[m

    如果是要制作源文件树或者配置文件树的快照历史的话，使用 [34;1mgit(7)[m (参
    见第 10.6.5 节 [35;1m“记录配置历史的 Git”[;m) 是更简便并且也是空间高效的。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.3. 数据安全基础[;m

    数据安全基础设施是数据加密，讯息摘要和签名工具的结合。

    表 10.6. 数据安全基础工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包    │流行度 │大小 │   命令   │         说明          │
    ├──────────────┼───────┼─────┼──────────┼───────────────────────┤
    │gnupg         │V:695, │711  │[34;1mgpg(1)[m    │GNU 隐私卫士 - OpenPGP │
    │              │I:996  │     │          │加密和签名工具         │
    ├──────────────┼───────┼─────┼──────────┼───────────────────────┤
    │gpgv          │V:869, │820  │[34;1mgpgv(1)[m   │GNU 隐私卫士 - 签名验证│
    │              │I:999  │     │          │工具                   │
    ├──────────────┼───────┼─────┼──────────┼───────────────────────┤
    │paperkey      │V:0,   │55   │paperkey  │从 OpenPGP 私钥里面，仅│
    │              │I:5    │     │(1)       │仅导出私密信息         │
    ├──────────────┼───────┼─────┼──────────┼───────────────────────┤
    │cryptsetup    │V:20,  │60   │cryptsetup│dm-crypto 块设备加密支 │
    │              │I:82   │     │(8), …    │持 LUKS 工具           │
    ├──────────────┼───────┼─────┼──────────┼───────────────────────┤
    │ecryptfs-utils│V:6,   │396  │ecryptfs  │ecryptfs 堆叠文件系统加│
    │              │I:9    │     │(7), …    │密工具                 │
    ├──────────────┼───────┼─────┼──────────┼───────────────────────┤
    │coreutils     │V:892, │15016│[34;1mmd5sum(1)[m │计算与校验 MD5 讯息摘要│
    │              │I:999  │     │          │                       │
    ├──────────────┼───────┼─────┼──────────┼───────────────────────┤
    │coreutils     │V:892, │15016│[34;1msha1sum(1)[m│计算与校验 SHA1 讯息摘 │
    │              │I:999  │     │          │要                     │
    ├──────────────┼───────┼─────┼──────────┼───────────────────────┤
    │openssl       │V:806, │1306 │openssl   │使用 [35;1m"openssl dgst"[;m    │
    │              │I:991  │     │(1ssl)    │(OpenSSL)计算信息摘要  │
    └───────────────────────────────────────────────────────────────┘


    参见第 9.8 节 [35;1m“数据加密提示”[;m 的 dm-crypto 和 ecryptfs，它们通过
    Linux 内核模块实现了自动数据加密架构。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.3.1. GnuPG 密钥管理[;m

    如下是 GNU 隐私卫士基本的密钥管理命令。

    表 10.7. GNU 隐私卫士密钥管理命令的列表

    ┌───────────────────────────────────────────────────────────────┐
    │          命令          │                 说明                 │
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --gen-key           │生成一副新的密钥对                    │[m
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --gen-revoke        │生成 my_user_ID 的一份吊销证书        │[m
    │my_user_ID              │                                      │
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --edit-key user_ID  │交互式的编辑密钥，输入 [35;1m"help"[;m 来获得帮│[m
    │                        │助信息                                │
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg -o file --export    │把所有的密钥输出到文件                │[m
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --import file       │从文件导入密钥                        │[m
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --send-keys user_ID │发送 user_ID 的公钥到公钥服务器       │[m
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --recv-keys user_ID │从公钥服务器下载 user_ID 的公钥       │[m
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --list-keys user_ID │列出 user_ID 的所有密钥               │[m
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --list-sigs user_ID │列出 user_ID 的签字                   │[m
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --check-sigs user_ID│检查 user_ID 密钥签字                 │[m
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --fingerprint       │检查 user_ID 的指纹                   │[m
    │user_ID                 │                                      │
    ├────────────────────────┼──────────────────────────────────────┤
[33m    │gpg --refresh-keys      │更新本地密钥                          │[m
    └───────────────────────────────────────────────────────────────┘


    信任码含义.

    表 10.8. 信任码含义列表

    ┌────────────────────────────────┐
    │代码│         信任描述          │
    ├────┼───────────────────────────┤
    │-   │没有所有者信任签名/没有计算│
    ├────┼───────────────────────────┤
    │e   │信任计算失败               │
    ├────┼───────────────────────────┤
    │q   │没有足够的信息用于计算     │
    ├────┼───────────────────────────┤
    │n   │从不信任这个键             │
    ├────┼───────────────────────────┤
    │m   │最低限度的信任             │
    ├────┼───────────────────────────┤
    │f   │完全信任                   │
    ├────┼───────────────────────────┤
    │u   │最终信任                   │
    └────────────────────────────────┘


    如下命令上传我的 [35;1m"1DD8D791"[;m 公钥到主流的公钥服务器 "hkp://
    keys.gnupg.net"。

[33m[32;1m    $ gpg --keyserver hkp://keys.gnupg.net --send-keys 1DD8D791[;m[m

    默认良好的公钥服务器在 [35;1m"~/.gnupg/gpg.conf"[;m （旧的位置在 "~/.gnupg
    /options"）文件中设置，此文件包含了以下信息。

    keyserver hkp://keys.gnupg.net

    从钥匙服务器获取无名钥匙。

[33m[32;1m    $ gpg --list-sigs --with-colons | grep '^sig.*\[User ID not found\]' |\[;m[m
[33m      cut -d [35;1m':'[;m -f 5| sort | uniq | xargs gpg --recv-keys[m

    有一个错误在 OpenPGP 公钥服务器 (先前的版本 0.9.6)，会将键中断为
    2 个以上的子键。新的 gnupg (>1.2.1-2) 软件包能够处理这些中断的子
[33m    键。参见 [34;1mgpg(1)[m 下的 [35;1m"--repair-pks-subkey-bug"[;m 选项.[m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.3.2. 在文件上使用 GnuPG[;m

    这里有一些在文件上使用 GNU 隐私卫士命令的例子。

    表 10.9. 在文件上使用的 GNU 隐私卫士的命令列表

    ┌───────────────────────────────────────────────────────────────┐
    │            命令             │              说明               │
    ├─────────────────────────────┼─────────────────────────────────┤
    │gpg -a -s file               │ASCII 封装的签名文件 file.asc    │
    ├─────────────────────────────┼─────────────────────────────────┤
[33m    │gpg --armor --sign file      │同上                             │[m
    ├─────────────────────────────┼─────────────────────────────────┤
[33m    │gpg --clearsign file         │生成明文签字信息                 │[m
    ├─────────────────────────────┼─────────────────────────────────┤
[33m    │gpg --clearsign file│mail    │发送一份明文签字到               │[m
    │foo@example.org              │foo@example.org                  │
    ├─────────────────────────────┼─────────────────────────────────┤
[33m    │gpg --clearsign              │明文签名的补丁文件               │[m
[33m    │--not-dash-escaped patchfile │                                 │[m
    ├─────────────────────────────┼─────────────────────────────────┤
[33m    │gpg --verify file            │验证明文文件                     │[m
    ├─────────────────────────────┼─────────────────────────────────┤
    │gpg -o file.sig -b file      │生成一份分离的签字               │
    ├─────────────────────────────┼─────────────────────────────────┤
[33m    │gpg -o file.sig --detach-sig │同上                             │[m
    │file                         │                                 │
    ├─────────────────────────────┼─────────────────────────────────┤
[33m    │gpg --verify file.sig file   │使用 file.sig 验证文件           │[m
    ├─────────────────────────────┼─────────────────────────────────┤
    │gpg -o crypt_file.gpg -r name│公钥加密，从文件里面获取名字，生 │
    │-e file                      │成二进制的 crypt_file.gpg        │
    ├─────────────────────────────┼─────────────────────────────────┤
    │gpg -o crypt_file.gpg        │                                 │
[33m    │--recipient name --encrypt   │同上                             │[m
    │file                         │                                 │
    ├─────────────────────────────┼─────────────────────────────────┤
    │gpg -o crypt_file.asc -a -r  │公钥加密，从文件中获取名字，生成 │
    │name -e file                 │ASCII 封装的 crypt_file.asc      │
    ├─────────────────────────────┼─────────────────────────────────┤
    │gpg -o crypt_file.gpg -c file│将文件对称加密到 crypt_file.gpg  │
    ├─────────────────────────────┼─────────────────────────────────┤
    │gpg -o crypt_file.gpg        │同上                             │
[33m    │--symmetric file             │                                 │[m
    ├─────────────────────────────┼─────────────────────────────────┤
    │gpg -o crypt_file.asc -a -c  │对称加密，从文件到 ASCII 封装的  │
    │file                         │crypt_file.asc                   │
    ├─────────────────────────────┼─────────────────────────────────┤
    │gpg -o file -d crypt_file.gpg│解密                             │
    │-r name                      │                                 │
    ├─────────────────────────────┼─────────────────────────────────┤
[33m    │gpg -o file --decrypt        │同上                             │[m
    │crypt_file.gpg               │                                 │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.3.3. 在 Mutt 中使用 GnuPG[;m

    增加下面内容到 [35;1m"~/.muttrc"[;m，在自动启动时，避免一个慢的 GnuPG，在
    索引菜单中按 [35;1m"S"[;m 来允许它使用。

    macro index S [35;1m":toggle pgp_verify_sig\n"[;m
    set pgp_verify_sig=no

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.3.4. 在 Vim 中使用 GnuPG[;m

    gnupg 插件可以让你对扩展名为 [35;1m".gpg"[;m, [35;1m".asc"[;m, 和 [35;1m".ppg"[;m的文件可靠
    的运行 GnuPG.

[31;1m    # aptitude install vim-scripts vim-addon-manager[;m
[32;1m    $ vim-addons install gnupg[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.3.5. MD5 校验和[;m

    [34;1mmd5sum(1)[m 提供了制作摘要文件的一个工具,它使用 rfc1321 里的方式制
    作摘要文件.

[32;1m    $ md5sum foo bar >baz.md5[;m
[32;1m    $ cat baz.md5[;m
    d3b07384d113edec49eaa6238ad5ff00  foo
    c157a79031e1c40f85931829bc5fc552  bar
[32;1m    $ md5sum -c baz.md5[;m
    foo: OK
    bar: OK

    [33;1m注意[m

    MD5 校验和的 CPU 计算强度是比 GNU Privacy Guard (GnuPG) 加密签名
    要少的.在通常情况下,只有顶级的摘要文件才需要加密签名来确保数据完
    整性.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.4. 源代码合并工具[;m

    这里有许多源代码合并工具。如下的是我感兴趣的工具。

    表 10.10. 源代码合并工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包  │流行度│大小│   命令    │            说明            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │diffutils │V:874,│1394│[34;1mdiff(1)[m    │逐行比较两个文件            │
    │          │I:984 │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │diffutils │V:874,│1394│[34;1mdiff3(1)[m   │逐行比较和合并三个文件      │
    │          │I:984 │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │vim       │V:118,│2668│[34;1mvimdiff(1)[m │在 vim 中并排比较两个文件   │
    │          │I:400 │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patch     │V:89, │235 │[34;1mpatch(1)[m   │给原文件打补丁              │
    │          │I:813 │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │dpatch    │V:1,  │191 │[34;1mdpatch(1)[m  │管理 Debian 软件包的系列补丁│
    │          │I:14  │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │diffstat  │V:18, │70  │[34;1mdiffstat(1)[m│通过 diff 生成一个改变柱状图│
    │          │I:186 │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │combinediff│从两个增量补丁创建一个积累补│
    │          │I:179 │    │(1)        │丁                          │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │dehtmldiff │从一个 HTML 页面提取出一个  │
    │          │I:179 │    │(1)        │diff                        │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │filterdiff │从一个 diff 文件里面提取或者│
    │          │I:179 │    │(1)        │排除 diff 文件              │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │fixcvsdiff │修复由 CVS [34;1mpatch(1)[m 错误创建│
    │          │I:179 │    │(1)        │的 diff 文件                │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │[34;1mflipdiff(1)[m│交换两个补丁的顺序          │
    │          │I:179 │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │[34;1mgrepdiff(1)[m│显示哪些文件是由匹配正则表达│
    │          │I:179 │    │           │式的补丁修改                │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │          │V:17, │    │interdiff  │显示在两个统一格式 diff 文件│
    │patchutils│I:179 │223 │(1)        │（基于同一个文件的两个不同  │
    │          │      │    │           │diff 文件）之间的差异       │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │[34;1mlsdiff(1)[m  │显示哪些文件由补丁修改      │
    │          │I:179 │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │recountdiff│重新计算通用内容 diff 文件的│
    │          │I:179 │    │(1)        │数量和偏移                  │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │[34;1mrediff(1)[m  │修复手工编辑 diff 文件的数量│
    │          │I:179 │    │           │和偏移                      │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │splitdiff  │隔离出增量补丁              │
    │          │I:179 │    │(1)        │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │patchutils│V:17, │223 │unwrapdiff │识别已经被分词的补丁        │
    │          │I:179 │    │(1)        │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │wiggle    │V:0,  │167 │[34;1mwiggle(1)[m  │应用被拒绝的补丁            │
    │          │I:0   │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │quilt     │V:3,  │784 │[34;1mquilt(1)[m   │管理系列补丁                │
    │          │I:41  │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │meld      │V:15, │2898│[34;1mmeld(1)[m    │比较和移植文件(GTK)         │
    │          │I:42  │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │dirdiff   │V:0,  │161 │[34;1mdirdiff(1)[m │显示目录树之间的不同并移植改│
    │          │I:2   │    │           │变                          │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │docdiff   │V:0,  │573 │[34;1mdocdiff(1)[m │逐词逐字地比较两个文件      │
    │          │I:0   │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │imediff2  │V:0,  │34  │[34;1mimediff2(1)[m│全屏交互式两路合并工具      │
    │          │I:0   │    │           │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │makepatch │V:0,  │102 │makepatch  │生成扩展补丁文件            │
    │          │I:0   │    │(1)        │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │makepatch │V:0,  │102 │applypatch │应用扩展补丁文件            │
    │          │I:0   │    │(1)        │                            │
    ├──────────┼──────┼────┼───────────┼────────────────────────────┤
    │wdiff     │V:4,  │644 │[34;1mwdiff(1)[m   │在文本文件中，显示单词的不同│
    │          │I:79  │    │           │                            │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.4.1. 从源代码文件导出差异[;m

    下面的操作，导出两个源文件的不同，并根据文件的位置，创建通用 diff
    文件[35;1m"file.patch0"[;m 或 [35;1m"file.patch1"[;m.

[32;1m    $ diff -u file.old file.new > file.patch0[;m
[32;1m    $ diff -u old/file new/file > file.patch1[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.4.2. 源代码文件移植更新[;m

    diff 文件（通常被叫作 patch 补丁文件），用于发送一个程序更新。通
    过下面的方式，接收到的部分，应用这个更新到其它文件。

[32;1m    $ patch -p0 file < file.patch0[;m
[32;1m    $ patch -p1 file < file.patch1[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.4.3. 通过三方移植进行更新[;m

    如果一个源代码，你有三个版本，你可以通过下面的方式，使用 [34;1mdiff3(1)[m
    高效执行三方移植。

[32;1m    $ diff3 -m file.mine file.old file.yours > file[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.5. 版本控制系统[;m

    如下是 Debian 系统上可用的版本控制系统(VCS) 的摘要。

    [33;1m注意[m

    如果是刚接触版本控制系统，你应该从 git 入门，git 人气日益高涨。

    表 10.11. 版本控制系统工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │          │      │     │          │VCS│                        │
    │  软件包  │流行度│大小 │   工具   │类 │          描述          │
    │          │      │     │          │型 │                        │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │cssc      │V:0,  │1979 │CSSC      │本 │Unix SCCS (过时)的克隆  │
    │          │I:2   │     │          │地 │                        │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │rcs       │V:3,  │539  │RCS       │本 │[35;1m"比 Unix SCCS 做的好"[;m   │
    │          │I:22  │     │          │地 │                        │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │cvs       │V:6,  │4597 │CVS       │远 │以前的远程 VCS 标准     │
    │          │I:54  │     │          │程 │                        │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │subversion│V:27, │4749 │Subversion│远 │”比 CVS 做的好“，远程   │
    │          │I:144 │     │          │程 │VCS 的新标准            │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │          │V:274,│     │          │分 │用 C 写的快速 DVCS (被  │
    │git       │I:451 │33183│Git       │布 │Linux 内核和其他项目使  │
    │          │      │     │          │式 │用)                     │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │          │V:10, │     │          │分 │mercurial 主要是用      │
    │mercurial │I:60  │775  │Mercurial │布 │Python 写的还有一部分是 │
    │          │      │     │          │式 │C 写的                  │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │          │V:4,  │     │          │分 │受 tla 启发并且是用     │
    │bzr       │I:22  │74   │Bazaar    │布 │Python 写的 DVCS (被    │
    │          │      │     │          │式 │Ubuntu 使用)            │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │          │V:0,  │     │          │分 │有智能代数补丁的 DVCS（ │
    │darcs     │I:8   │29914│Darcs     │布 │慢）                    │
    │          │      │     │          │式 │                        │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │          │V:0,  │     │          │分 │主要由 Tom Lord 写的    │
    │tla       │I:7   │1011 │GNU arch  │布 │DVCS (成为历史的)       │
    │          │      │     │          │式 │                        │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │          │V:0,  │     │          │分 │                        │
    │monotone  │I:0   │5815 │Monotone  │布 │用 C++ 写的 DVCS        │
    │          │      │     │          │式 │                        │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │tkcvs     │V:0,  │1498 │CVS, …    │远 │VCS (CVS,Subversion,RCS)│
    │          │I:1   │     │          │程 │存储库树的图形界面显示  │
    ├──────────┼──────┼─────┼──────────┼───┼────────────────────────┤
    │          │V:7,  │     │          │分 │VCS (Git) 存储库树的图形│
    │gitk      │I:50  │1507 │Git       │布 │界面显示                │
    │          │      │     │          │式 │                        │
    └───────────────────────────────────────────────────────────────┘


    VCS 有时被认为是修订控制系统 (RCS), 或者是软件配置管理程序 (SCM)
    。

    像 Git 这样的分布式 VCS 是现在正在使用的工具。参加那些已经存在的
    开源软件的开发活动，掌握 CVS 和 Subversion 仍然是有用的。

    Debian provides free Git services via Debian Salsa service. Its
    documentation can be found at https://wiki.debian.org/Salsa .

    [33;1m小心[m

    Debian has closed its old alioth services and the old alioth
    service data are available at alioth-archive as tarballs.

    这里有一些关于创建共享访问 VCS 归档的基础知识。

[33;1m      *[;m 使用 [35;1m"umask 002"[;m (参见第 1.2.4 节 [35;1m“控制新建文件的权限：umask”[;m
        )

[33;1m      *[;m 使得所有的 VCS 归档文件属于一个相关的组

[33;1m      *[;m 能够在所有的 VCS 归档目录设置组 ID（类似 BSD 的文件创建方案，
        参见第 1.2.3 节 [35;1m“文件系统权限”[;m)

[33;1m      *[;m 使得属于这个组的用户能够共享 VCS 归档

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.5.1. VCS 命令的比较[;m

    这里有原生 VCS 命令的简单比较来提供大图概要。典型的命令序列需要选
    项和参数。

    表 10.12. 本地 VCS 命令比较

    ┌───────────────────────────────────────────────────────────────┐
    │       Git        │  CVS  │Subversion│          功能           │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git init          │cvs    │svn create│创建(本地)存储库         │
    │                  │init   │          │                         │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │-                 │cvs    │-         │登录远程存储库           │
    │                  │login  │          │                         │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git clone         │cvs co │svn co    │签出远程存储库到本地工作 │
    │                  │       │          │目录树                   │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git pull          │cvs up │svn up    │通过合并远程存储库来更新 │
    │                  │       │          │工作目录树               │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git add .         │cvs add│svn add   │把工作目录树中的文件添加 │
    │                  │       │          │到 VCS                   │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git rm            │cvs rm │svn rm    │从 VCS 中移除工作目录树中│
    │                  │       │          │的文件                   │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │-                 │cvs ci │svn ci    │提交改变到远程存储库     │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git commit -a     │-      │-         │提交改变到本地存储库     │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git push          │-      │-         │通过本地存储库来更新远程 │
    │                  │       │          │存储库                   │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git status        │cvs    │svn status│从 VCS 中显示工作目录树的│
    │                  │status │          │状态                     │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git diff          │cvs    │svn diff  │比较<参考存储库>和<工作目│
    │                  │diff   │          │录树>的差异              │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │git repack -a -d; │-      │-         │重新打包本地仓库到一个单 │
    │git prune         │       │          │独的包                   │
    ├──────────────────┼───────┼──────────┼─────────────────────────┤
    │gitk              │tkcvs  │tkcvs     │VCS 存储库树的图形界面显 │
    │                  │       │          │示                       │
    └───────────────────────────────────────────────────────────────┘


    [33;1m小心[m

    从命令行通过 [35;1m"git-xyz"[;m 直接调用 git 子命令的方式，从 2006 年早期
    开始就被取消。

    [36;1m提示[m

    如果有一个可执行文件 git-foo 在路径环境变量 $PATH 里面,在命令行输
    入没有中划线的 [35;1m"git foo"[;m，则将调用 git-foo.这是 git 命令的一个特
    性.

    [36;1m提示[m

    例如 [34;1mtkcvs(1)[m 和 [34;1mgitk(1)[m 这样的图形界面工具有助于追踪文件的修改历
    史。许多公共的归档提供的用于浏览它们的存储库的 web 界面同样是很有
    用的。

    [36;1m提示[m

    Git 能够直接在不同的 VCS 仓库上工作，比如说 CVS 和 Subversion 提
    供的仓库, 通过 git-cvs 和 git-svn 软件包提供本地仓库的本地改变.参
    见用于 CVS 用户的 git 和第 10.6.4 节 [35;1m“用于 Subversion 仓库的 Git”[;m
    .

    [36;1m提示[m

    Git 中的有些命令在 CVS 和 Subversion 中并没有对应的命令：
    [35;1m"fetch"[;m,[35;1m"rebase"[;m,[35;1m"cherry-pick"[;m, …

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.6. Git[;m

    Git 可以用来做本地和远程源代码管理的任何事情。这意味着，你能够在
    本地记录源代码修改，而不是必须要和远程仓库有网络连接。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.6.1. 配置 Git 客户端[;m

    你可以在 [35;1m"~/.gitconfig"[;m 里面设置几个 Git 接下来需要使用的全局配置
    ，比如说你的名字和电子邮件地址。

[33m[32;1m    $ git config --global user.name "姓名"[;m[m
[33m[32;1m    $ git config --global user.email 电子邮件地址[;m[m

    如果你习惯使用 CVS 或 Subversion 命令，你也许希望设置如下几个命令
    别名。

[33m[32;1m    $ git config --global alias.ci "commit -a"[;m[m
[33m[32;1m    $ git config --global alias.co checkout[;m[m

    你能够通过如下方式检查你的全局配置：

[33m[32;1m    $ git config --global --list[;m[m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.6.2. Git 参考[;m

    参见下面内容。

[33;1m      *[;m man 手册： [34;1mgit(1)[m (/usr/share/doc/git-doc/git.html)

[33;1m      *[;m Git 用户手册 (/usr/share/doc/git-doc/user-manual.html)

[33;1m      *[;m git 介绍教程 (/usr/share/doc/git-doc/gittutorial.html)

[33;1m      *[;m git 介绍教程：第二部 (/usr/share/doc/git-doc/
        gittutorial-2.html)

[33;1m      *[;m GIT 每一天 20个左右的命令 (/usr/share/doc/git-doc/
        everyday.html)

[33;1m      *[;m CVS 用户用 git (/usr/share/doc/git-doc/gitcvs-migration.html)

[33;1m          +[;m 描述了怎样搭建服务，以及如何把老的数据从 CVS 迁移到 Git。

[33;1m      *[;m 其它在互联网上存在的 git 资源

[33;1m          +[;m Git - SVN 碰撞课程

[33;1m          +[;m Git 魔术 (/usr/share/doc/gitmagic/html/index.html)

    [34;1mgit-gui(1)[m 和 [34;1mgitk(1)[m 命令使 Git 变得非常容易使用。

    [31;1m警告[m

    不要使用带空格的标签字符串。即使一些工具，如 [34;1mgitk(1)[m 允许你使用它
    ，但会阻碍其它 git 命令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.6.3. Git 命令[;m

    即使你的上游使用不同的版本控制系统，使用 [34;1mgit(1)[m 作为本地活动的版
    本控制系统，仍然是一个好的主意，因为 git 可以让你在没有上游网络连
    接的情况下，管理你的本地源代码树拷贝。这里有一些 [34;1mgit(1)[m 使用的包
    和命令。

    表 10.13. git 相关包和命令列表

    ┌───────────────────────────────────────────────────────────────┐
    │     软件包     │流行度│大小 │       命令        │    说明     │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │git-doc         │I:19  │10985│N/A                │Git 官方文档 │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │      │     │                   │[35;1m"Git 魔术"[;m， │
    │gitmagic        │I:1   │719  │N/A                │易于理解的   │
    │                │      │     │                   │Git 手册     │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │      │     │                   │Git 快速、可 │
    │git             │V:274,│33183│[34;1mgit(7)[m             │扩展、分布式 │
    │                │I:451 │     │                   │的版本控制系 │
    │                │      │     │                   │统           │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │V:7,  │     │                   │有历史功能的 │
    │gitk            │I:50  │1507 │[34;1mgitk(1)[m            │Git 图形仓库 │
    │                │      │     │                   │浏览器       │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │V:2,  │     │                   │Git 图形界面 │
    │git-gui         │I:28  │2234 │[34;1mgit-gui(1)[m         │（无历史功能 │
    │                │      │     │                   │）           │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │V:2,  │     │                   │从 Subversion│
    │git-svn         │I:28  │1005 │[34;1mgit-svnimport(1)[m   │导出数据，导 │
    │                │      │     │                   │入到 Git     │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │V:2,  │     │                   │在 Subversion│
    │git-svn         │I:28  │1005 │[34;1mgit-svn(1)[m         │和 Git 之间提│
    │                │      │     │                   │供双向操作   │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │V:0,  │     │                   │从 CVS 导出数│
    │git-cvs         │I:13  │1140 │[34;1mgit-cvsimport(1)[m   │据，导入到   │
    │                │      │     │                   │Git          │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │V:0,  │     │git-cvsexportcommit│从 Git 中检出│
    │git-cvs         │I:13  │1140 │(1)                │一个 CVS 的提│
    │                │      │     │                   │交           │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │git-cvs         │V:0,  │1140 │[34;1mgit-cvsserver(1)[m   │Git 的 CVS 服│
    │                │I:13  │     │                   │务模拟器     │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │V:0,  │     │                   │从 Git 用电子│
    │git-email       │I:14  │827  │[34;1mgit-send-email(1)[m  │邮件发送收集 │
    │                │      │     │                   │到的补丁     │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │stgit           │V:0,  │1535 │[34;1mstg(1)[m             │封装的 git   │
    │                │I:1   │     │                   │(Python)     │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │git-buildpackage│V:1,  │3869 │[34;1mgit-buildpackage(1)[m│用 Git 自动制│
    │                │I:12  │     │                   │作 Debian 包 │
    ├────────────────┼──────┼─────┼───────────────────┼─────────────┤
    │                │V:0,  │     │                   │封装的 git   │
    │guilt           │I:0   │146  │[34;1mguilt(7)[m           │(SH/AWK/SED/ │
    │                │      │     │                   │…)           │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    在 [34;1mgit(1)[m 下,你在本地分支下进行了许多提交，稍后你可以使用 "git
    rebase -i master" 之类的命令来重新组织改变历史。这可以使你制作一
    个干净的改变历史。参见 [34;1mgit-rebase(1)[m 和 [34;1mgit-cherry-pick(1)[m.

    [36;1m提示[m

    当你想要回到一个干净的工作目录，并且不丢失工作目录当前的状态，你
    可以使用 [35;1m"git stash"[;m.参见 [34;1mgit-stash(1)[m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.6.4. 用于 Subversion 仓库的 Git[;m

    你可以把一个在 [35;1m"svn+ssh://svn.example.org/project/module/trunk"[;m
    的 Subversion 仓库检出到一个本地的 Git 仓库，使用[35;1m"./dest"[;m目录，并
    把修改提交回 Subversion 仓库。例如：

[32;1m    $ git svn clone -s -rHEAD svn+ssh://svn.example.org/project dest[;m
[32;1m    $ cd dest[;m
    ... 进行修改
[32;1m    $ git commit -a[;m
    ... 继续在本地用 git 工作
[32;1m    $ git svn dcommit[;m

    [36;1m提示[m

    使用 [35;1m"-rHEAD"[;m 能够避免克隆从 Subversion 仓库来的整个历史内容。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.6.5. 记录配置历史的 Git[;m

    你可以使用 Git 工具来手工记录按时间先后顺序的配置历史。这里是一个
    例子，让你练习记录[35;1m"/etc/apt/"[;m 内容。

[32;1m    $ cd /etc/apt/[;m
[32;1m    $ sudo git init[;m
[32;1m    $ sudo chmod 700 .git[;m
[32;1m    $ sudo git add .[;m
[32;1m    $ sudo git commit -a[;m

    提交配置，描述此次提交。

    对配置文件进行修改。

[32;1m    $ cd /etc/apt/[;m
[32;1m    $ sudo git commit -a[;m

    提交配置，说明提交，继续你的工作。

[32;1m    $ cd /etc/apt/[;m
[33m[32;1m    $ sudo gitk --all[;m[m

    你有全部的配置历史。

    [33;1m注意[m

    [34;1msudo(8)[m 是需要用于配置数据文件，任意文件权限的情况。对于普通用户
    的配置数据，你需要省略 sudo。

    [33;1m注意[m

    在上面例子里的 [35;1m"chmod 700 .git"[;m 命令，是用来保护文档数据不被未经
    授权的读访问。

    [36;1m提示[m

    要更加完整的建立配置历史记录，请参阅 etckeeper 包：第 9.2.10 节 “
    记录配置文件的变更” 。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7. CVS[;m

    CVS 是一个古老的版本控制系统，它的出现早于 Subversion 和 Git。

    [33;1m小心[m

    下面例子里给出的 CVS 相关的链接许多已不存在。

    参见下面内容。

[33;1m      *[;m [34;1mcvs(1)[m

[33;1m      *[;m [35;1m"/usr/share/doc/cvs/html-cvsclient"[;m

[33;1m      *[;m [35;1m"/usr/share/doc/cvs/html-info"[;m

[33;1m      *[;m [35;1m"/usr/share/doc/cvsbook"[;m

[33;1m      *[;m [35;1m"info cvs"[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.1. CVS 存储库的配置[;m

    如下的配置将只允许 [35;1m"src"[;m 组的成员向 CVS 存储库提交修改，只允许
    [35;1m"staff"[;m 组的成员管理 CVS，这样可以减少出错的机会。

[31;1m    # cd /var/lib; umask 002; mkdir cvs[;m
[31;1m    # export CVSROOT=/srv/cvs/project[;m
[31;1m    # cd $CVSROOT[;m
[31;1m    # chown root:src .[;m
[31;1m    # chmod 2775 .[;m
[31;1m    # cvs -d $CVSROOT init[;m
[31;1m    # cd CVSROOT[;m
[31;1m    # chown -R root:staff .[;m
[31;1m    # chmod 2775 .[;m
[31;1m    # touch val-tags[;m
[31;1m    # chmod 664 history val-tags[;m
[31;1m    # chown root:src history val-tags[;m

    [36;1m提示[m

    你可以改变 [35;1m"$CVSROOT"[;m 目录为 [35;1m"root:staff"[;m 并把它的权限设置为
    [35;1m"3775"[;m，这样就可以限制创建新的项目。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.2. 本地访问 CVS[;m

    默认的 CVS 存储库由 [35;1m"$CVSROOT"[;m 指定。如下将建立用于本地访问的
    [35;1m"$CVSROOT"[;m。

[32;1m    $ export CVSROOT=/srv/cvs/project[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.3. 使用 pserver 远程访问 CVS[;m

    许多公共 CVS 服务器可以通过 pserver 服务用 [35;1m"anonymous"[;m 账户远程只
    读访问。例如，Debian 网站的内容曾经使用名为 webwml project 的仓库
    经由 Debian alioth 服务的 CVS 服务进行维护。如下命令曾被用来建立
    用于远程访问该旧 CVS 仓库的 [35;1m"$CVSROOT"[;m。

[32;1m    $ export CVSROOT=:pserver:anonymous@anonscm.debian.org:/cvs/webwml[;m
[32;1m    $ cvs login[;m

    [33;1m注意[m

    因为 pserver 容易被窃听攻击并且是不安全的，所以写访问通常是被服务
    器管理员禁用的。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.4. 使用 ssh 远程访问 CVS[;m

    如下所示的命令曾被用来配置[35;1m“$CVS_RSH”[;m和[35;1m“$CVSROOT”[;m变量，以此实现使
    用 SSH 远程访问旧的 Debian webwml 项目所使用的 CVS 仓库。

[32;1m    $ export CVS_RSH=ssh[;m
[32;1m    $ export CVSROOT=:ext:account@cvs.alioth.debian.org:/cvs/webwml[;m

    你也可以使用 SSH 的公钥认证，这能够去除远程密码提示。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.5. 往 CVS 导入新的源[;m

    按如下所示创建 [35;1m"~/path/to/module1"[;m 路径下的新的本地源目录树。

[32;1m    $ mkdir -p ~/path/to/module1; cd ~/path/to/module1[;m

    把文件添加到 [35;1m"~/path/to/module1"[;m 下的新的本地源目录树。

    使用如下的参数把文件导入到 CVS。

[33;1m      *[;m 模块名: [35;1m"module1"[;m

[33;1m      *[;m 提供商标签： [35;1m"Main-branch"[;m （用于整个分支的标签）

[33;1m      *[;m 发布标签： [35;1m"Release-initial"[;m （用于特定发布版本的标签）

[32;1m    $ cd ~/path/to/module1[;m
[32;1m    $ cvs import -m "Start module1" module1 Main-branch Release-initial[;m
[32;1m    $ rm -Rf . # optional[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.6. CVS 存储库中的文件权限[;m

    CVS 不会覆盖当前的存储库文件，只是用另外的文件来替代它。因此，存
    储库目录的写权限是很重要的。存储库位于 [35;1m"/srv/cvs/project"[;m 的
    [35;1m"module1"[;m，对于其下的每一个新模块而言，如果需要的话运行如下所示的
    来确保这种情况。

[31;1m    # cd /srv/cvs/project[;m
[31;1m    # chown -R root:src module1[;m
[31;1m    # chmod -R ug+rwX   module1[;m
[31;1m    # chmod    2775     module1[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.7. CVS 工作流[;m

    这里有一个 CVS 典型工作流的例子。

    按如下所示查看 [35;1m"$CVSROOT"[;m 所指的 CVS 项目上所有可用的模块。

[32;1m    $ cvs rls[;m
    CVSROOT
    module1
    module2
    ...

    按如下所示签出 [35;1m"module1"[;m 到默认的目录 [35;1m"./module1"[;m。

[32;1m    $ cd ~/path/to[;m
[32;1m    $ cvs co module1[;m
[32;1m    $ cd module1[;m

    按需修改里面的内容。

    通过如下所示的命令来检查改变，其作用相当于使用 "diff -u
    [repository] [local]"。

[32;1m    $ cvs diff -u[;m

    你发现自己改坏了 [35;1m"file_to_undo"[;m 文件，而其他的文件都是好的。

    按如下所示用 CVS 中的原始副本覆盖 [35;1m"file_to_undo"[;m 文件。

[32;1m    $ cvs up -C file_to_undo[;m

    按如下所示把更新了的本地源目录树保存到 CVS。

[32;1m    $ cvs ci -m "Describe change"[;m

    按如下创建并添加 [35;1m"file_to_add"[;m 文件到 CVS。

[32;1m    $ vi file_to_add[;m
[32;1m    $ cvs add file_to_add[;m
[32;1m    $ cvs ci -m "Added file_to_add"[;m

    按如下所示合并 CVS 中的最新版本。

[32;1m    $ cvs up -d[;m

    当心以 [35;1m"C filename"[;m 开头的行，这意味着冲突的改变。

    查看 [35;1m".#filename.version"[;m 中未经修改的代码。

    查找文件中的 [35;1m"<<<<<<<"[;m 和 [35;1m">>>>>>>"[;m 来获得冲突的改变的信息。

    按需更改文件来解决冲突。

    按如下所示添加一个发布标签 [35;1m"Release-1"[;m。

[32;1m    $ cvs ci -m "last commit for Release-1"[;m
[32;1m    $ cvs tag Release-1[;m

    继续编辑文件。

    按如下所示移除发布分支 [35;1m"Release-1"[;m。

[32;1m    $ cvs tag -d Release-1[;m

    按如下所示把改变签入到 CVS。

[32;1m    $ cvs ci -m "real last commit for Release-1"[;m

    按如下所示给已经更新了的 CVS 主干中的 HEAD 重新添加 [35;1m"Release-1"[;m
    发布标签。

[32;1m    $ cvs tag Release-1[;m

    按如下所示从 [35;1m"Release-initial"[;m 标签指向的初始版本中创建一个带有粘
    性标签的 [35;1m"Release-initial-bugfixes"[;m 分支，并把它签出到 "~/path/to
    /old" 目录。

[32;1m    $ cvs rtag -b -r Release-initial Release-initial-bugfixes module1[;m
[32;1m    $ cd ~/path/to[;m
[32;1m    $ cvs co -r Release-initial-bugfixes -d old module1[;m
[32;1m    $ cd old[;m

    [36;1m提示[m

    使用 [35;1m"-D 2005-12-20"[;m (ISO 8601 日期格式) 而不是 "-r
    Release-initial" 来指定某个特定日期作为分支点。

    在基于原始版本的有 [35;1m"Release-initial-bugfixes"[;m 粘性标签的本地源目
    录树上工作。

    独自在 [35;1m"Release-initial-bugfixes"[;m 分支上工作...直到有其他人加入到
    此分支。

    当要创建新的目录时，按如下所示同步其他人在此分支上对文件所做的修
    改。

[32;1m    $ cvs up -d[;m

    按需更改文件来解决冲突。

    按如下所示把改变签入到 CVS。

[32;1m    $ cvs ci -m "checked into this branch"[;m

    按如下所示更新本地目录树为主干的最新版本，同时移除粘性标签 ([35;1m"-A"[;m)
    并且不使用关键字扩展 ([35;1m"-kk"[;m)。

[32;1m    $ cvs up -d -kk -A[;m

    按如下所示通过合并 [35;1m"Release-initial-bugfixes"[;m 分支并且不使用关键
    字扩展的方式来更新本地目录树 (内容为主干中的最新版本)。

[32;1m    $ cvs up -d -kk -j Release-initial-bugfixes[;m

    用编辑器来解决冲突。

    按如下所示把改变签入到 CVS。

[32;1m    $ cvs ci -m "merged Release-initial-bugfixes"[;m

    按如下所示创建归档。

[32;1m    $ cd ..[;m
[32;1m    $ mv old old-module1-bugfixes[;m
[32;1m    $ tar -cvzf old-module1-bugfixes.tar.gz old-module1-bugfixes[;m
[32;1m    $ rm -rf old-module1-bugfixes[;m

    [36;1m提示[m

    [35;1m"cvs up"[;m 命令能够使用 [35;1m"-d"[;m 选项来创建新目录并且可以使用 [35;1m"-P"[;m 选项
    来删除空目录。

    [36;1m提示[m

    你可以通过形如 [35;1m"cvs co module1/subdir"[;m 这样的列出其名的方式，来签
    出 [35;1m"module1"[;m 的一个子目录。

    表 10.14. 值得注意的 CVS 命令选项 (用作 [34;1mcvs(1)[m 的第一个选项)

    ┌────────────────────────────┐
    │选项│         说明          │
    ├────┼───────────────────────┤
    │-n  │测试，没有影响         │
    ├────┼───────────────────────┤
    │-t  │显示 cvs 活动步骤的信息│
    └────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.8. CVS 中最新的文件[;m

    按如下所示使用 [35;1m"tomorrow"[;m 选项，就能得到 CVS 中的最新文件。

[32;1m    $ cvs ex -D tomorrow module_name[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.9. CVS 的管理[;m

    按如下所示往 CVS 项目 (本地服务器) 里添加 [35;1m"mx"[;m 模块别名。

[32;1m    $ export CVSROOT=/srv/cvs/project[;m
[32;1m    $ cvs co CVSROOT/modules[;m
[32;1m    $ cd CVSROOT[;m
[32;1m    $ echo "mx -a module1" >>modules[;m
[32;1m    $ cvs ci -m "Now mx is an alias for module1"[;m
[32;1m    $ cvs release -d .[;m

    按如下所示，你可以从 CVS 中签出 [35;1m"module1"[;m (别名为: [35;1m"mx"[;m) 到 [35;1m"new"[;m
    目录。

[32;1m    $ cvs co -d new mx[;m
[32;1m    $ cd new[;m

    [33;1m注意[m

    为了执行上述步骤，你应当有合适的文件权限。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.7.10. 用于 CVS 签出时的可执行位[;m

    当你从 CVS 中签出文件时，它们的可执行权限是保留的。

    当你发现在检出的形如 [35;1m"filename"[;m 这样的文件中，可执行权限有问题时
    ，按如下所示在相应的 CVS 存储库中改变文件的权限来解决这个问题。

[31;1m    # chmod ugo-x filename[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.8. Subversion[;m

    Subversion 是在 Git 之前出现的旧的版本控制系统，但它出现在 CVS 之
    后。它缺少 CVS 和 Git 中的标签和分支功能。

    你需要安装 subversion，libapache2-mod-svn 和 subversion-tools 软
    件包来搭建 Subversion 服务器。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.8.1. Subversion 存储库的配置[;m

    subversion 软件包通常不会自动建立存储库，所以你必须手动搭建它。存
    储库可能的位置是在 [35;1m"/srv/svn/project"[;m。

    按如下所示建立目录。

[31;1m    # mkdir -p        /srv/svn/project[;m

    按如下所示建立存储库数据库。

[31;1m    # svnadmin create /srv/svn/project[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.8.2. 通过 Apache2 服务器访问 Subversion[;m

    如果只是用 Apache2 服务器访问 Subversion 存储库，你只需按如下所示
    的使存储库只是对于 WWW 服务器是可写的。

[31;1m    # chown -R www-data:www-data /srv/svn/project[;m

    在 [35;1m"/etc/apache2/mods-available/dav_svn.conf"[;m 中添加 (或取消注释)
    如下所示的来允许通过用户认证访问存储库。

    <Location /project>
      DAV svn
      SVNPath /srv/svn/project
      AuthType Basic
      AuthName [35;1m"Subversion repository"[;m
      AuthUserFile /etc/subversion/passwd
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Require valid-user
    </LimitExcept>
    </Location>

    用如下所示的命令创建用户认证文件。

[31;1m    # htpasswd2 -c /etc/subversion/passwd some-username[;m

    重启 Apache2。

    通过 [35;1m"http://localhost/project"[;m 和 [35;1m"http://example.com/project"[;m
    URL 来访问 [34;1msvn(1)[m 中的 Subversion 存储库(假设你的 web 服务器的
    URL 为 [35;1m"http://example.com/"[;m)。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.8.3. 按组本地访问 Subversion[;m

    如下所示将建立用户组，例如 project，可以本地访问的 Subversion 存
    储库。

[31;1m    # chmod  2775     /srv/svn/project[;m
[31;1m    # chown -R root:src /srv/svn/project[;m
[31;1m    # chmod -R ug+rwX   /srv/svn/project[;m

    属于 project 组的本地用户可以访问在 "file:///localhost/srv/svn/
    project[35;1m" 或 file:///srv/svn/project"[;m 下 [34;1msvn(1)[m 中的新 Subversion
    存储库。你必须在 [35;1m"umask 002"[;m 下运行诸如 svn, svnserve, svnlook 和
    svnadmin 命令，来确保用户组可以访问。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.8.4. 通过 SSH 远程访问 Subversion[;m

    用户组可以访问的 Subversion 存储库的 URL 为 "example.com:/srv/svn
    /project[35;1m"。至于 SSH 访问，你能够在 [34;1msvn(1)[m 中的 "[;msvn+ssh://
    example.com:/srv/svn/project" URL 访问它。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.8.5. Subversion 目录结构[;m

    对于 Subversion 来说，许多项目使用类似如下的目录树来弥补它的分支
    和标签的不足。

[33m      ----- module1[m
[33m        │   │-- branches[m
[33m        │   │-- tags[m
[33m        │   │   │-- release-1.0[m
[33m        │   │   `-- release-2.0[m
        │   │
[33m        |   `-- trunk[m
[33m        │       │-- file1[m
[33m        │       │-- file2[m
[33m        |       `-- file3[m
        |
[33m        `-- module2[m

    [36;1m提示[m

    你必须使用 [35;1m"svn copy …"[;m 命令来标记分支和标签。这确保 Subversion
    正确的记录文件的修改历史同时节省存储空间。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.8.6. 往 Subversion 里导入一个新的源[;m

    按如下所示创建 [35;1m"~/path/to/module1"[;m 路径下的新的本地源目录树。

[32;1m    $ mkdir -p ~/path/to/module1; cd ~/path/to/module1[;m

    把文件添加到 [35;1m"~/path/to/module1"[;m 下的新的本地源目录树。

    把它导入到 Subversion 的时候带有以下的参数。

[33;1m      *[;m 模块名: [35;1m"module1"[;m

[33;1m      *[;m Subversion 位置 URL: [35;1m"file:///srv/svn/project"[;m

[33;1m      *[;m Subversion 目录: [35;1m"module1/trunk"[;m

[33;1m      *[;m Subversion 标签: [35;1m"module1/tags/Release-initial"[;m

[32;1m    $ cd ~/path/to/module1[;m
[32;1m    $ svn import file:///srv/svn/project/module1/trunk -m "Start module1"[;m
[32;1m    $ svn cp file:///srv/svn/project/module1/trunk file:///srv/svn/project/module1/tags/Release-initial[;m

    或者，如下所示。

[32;1m    $ svn import ~/path/to/module1 file:///srv/svn/project/module1/trunk -m "Start module1"[;m
[32;1m    $ svn cp file:///srv/svn/project/module1/trunk file:///srv/svn/project/module1/tags/Release-initial[;m

    [36;1m提示[m

    你能够用像 [35;1m"http://…"[;m 和 [35;1m"svn+ssh://..."[;m 这样格式的 URL 来替代
    [35;1m"file:///…"[;m URL。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m10.8.7. Subversion 工作流[;m

    这里给出使用 Subversion 及其原生客户端的典型工作流示例。

    [36;1m提示[m

    git-svn 软件包提供的客户端命令，可以作为使用 git 命令的
    Subversion 工作流的一个另外选择。参见第 10.6.4 节 “用于
    Subversion 仓库的 Git”.

    查看如下所示的 URL [35;1m"file:///srv/svn/project"[;m 指向的 Subversion 项
    目上所有可用的模块。

[32;1m    $ svn list file:///srv/svn/project[;m
    module1
    module2
    ...

    按如下所示的检出 [35;1m"module1/trunk"[;m 到 [35;1m"module1"[;m 目录。

[32;1m    $ cd ~/path/to[;m
[32;1m    $ svn co file:///srv/svn/project/module1/trunk module1[;m
[32;1m    $ cd module1[;m

    按需修改里面的内容。

    通过如下所示的命令来检查改变，其作用相当于使用 "diff -u
    [repository] [local]"。

[32;1m    $ svn diff[;m

    你发现自己改坏了 [35;1m"file_to_undo"[;m 文件，而其他的文件都是好的。

    按如下所示的用 Subversion 中的干净副本来覆盖 [35;1m"file_to_undo"[;m 文件
    。

[32;1m    $ svn revert file_to_undo[;m

    按如下所示的把已经更新了的本地源目录树保存到 Subversion。

[32;1m    $ svn ci -m "Describe change"[;m

    按如下所示的创建 [35;1m"file_to_add"[;m 文件并把它添加到 Subversion。

[32;1m    $ vi file_to_add[;m
[32;1m    $ svn add file_to_add[;m
[32;1m    $ svn ci -m "Added file_to_add"[;m

    按如下所示更新工作拷贝到 Subversion 中的最新版本。

[32;1m    $ svn up[;m

    当心以 [35;1m"C filename"[;m 开头的行，这意味着冲突的改变。

    查看文件中未经修改的代码，例如 [35;1m"filename.r6"[;m, [35;1m"filename.r9"[;m 和
    [35;1m"filename.mine"[;m 文件。

    查找文件中的 [35;1m"<<<<<<<"[;m 和 [35;1m">>>>>>>"[;m 来获得冲突的改变的信息。

    按需更改文件来解决冲突。

    按如下所示添加一个发布标签 [35;1m"Release-1"[;m。

[32;1m    $ svn ci -m "last commit for Release-1"[;m
[32;1m    $ svn cp file:///srv/svn/project/module1/trunk file:///srv/svn/project/module1/tags/Release-1[;m

    继续编辑文件。

    按如下所示移除发布分支 [35;1m"Release-1"[;m。

[32;1m    $ svn rm file:///srv/svn/project/module1/tags/Release-1[;m

    按如下所示把改变签入到 Subversion。

[32;1m    $ svn ci -m "real last commit for Release-1"[;m

    按如下所示在最新的 Subversion 主干的基础上重新添加发布分支
    [35;1m"Release-1"[;m。

[32;1m    $ svn cp file:///srv/svn/project/module1/trunk file:///srv/svn/project/module1/tags/Release-1[;m

    按如下所示在 [35;1m"module1/tags/Release-initial"[;m 路径指定的最初版本的
    基础上再创建一个路径为 "module1/branches/
    Release-initial-bugfixes[35;1m" 的分支，并把它签出到 "[;m~/path/to/old" 目
    录。

[32;1m    $ svn cp file:///srv/svn/project/module1/tags/Release-initial file:///srv/svn/project/module1/branches/Release-initial-bugfixes[;m
[32;1m    $ cd ~/path/to[;m
[32;1m    $ svn co file:///srv/svn/project/module1/branches/Release-initial-bugfixes old[;m
[32;1m    $ cd old[;m

    [36;1m提示[m

    使用 [35;1m"module1/trunk@{2005-12-20}"[;m (ISO 8601 日期格式) 而不是
    [35;1m"module1/tags/Release-initial"[;m 来指定分支创建时候的日期。

    在基于原始版本的 [35;1m"Release-initial-bugfixes"[;m 分支的本地源目录树上
    工作。

    独自在 [35;1m"Release-initial-bugfixes"[;m 分支上工作...直到有其他人加入到
    此分支。

    按如下所示同步其他人在此分支上改动的文件。

[32;1m    $ svn up[;m

    按需更改文件来解决冲突。

    按如下所示把改变签入到 Subversion。

[32;1m    $ svn ci -m "checked into this branch"[;m

    按如下所示更新本地目录树为主干的最新版本。

[32;1m    $ svn switch file:///srv/svn/project/module1/trunk[;m

    按如下所示通过合并 [35;1m"Release-initial-bugfixes"[;m 分支的方式来更新本
    地目录树 (内容为主干的最新版本)。

[32;1m    $ svn merge file:///srv/svn/project/module1/branches/Release-initial-bugfixes[;m

    用编辑器来解决冲突。

    按如下所示把改变签入到 Subversion。

[32;1m    $ svn ci -m "merged Release-initial-bugfixes"[;m

    按如下所示创建归档。

[32;1m    $ cd ..[;m
[32;1m    $ mv old old-module1-bugfixes[;m
[32;1m    $ tar -cvzf old-module1-bugfixes.tar.gz old-module1-bugfixes[;m
[32;1m    $ rm -rf old-module1-bugfixes[;m

    [36;1m提示[m

    你能够用像 [35;1m"http://…"[;m 和 [35;1m"svn+ssh://..."[;m 这样格式的 URL 来替代
    [35;1m"file:///…"[;m URL。

    [36;1m提示[m

    通过 "svn co file:///srv/svn/project/module1/trunk/subdir module1
    /subdir[35;1m" 等命令，你可以只签出 "[;mmodule1" 的一个子目录。

    表 10.15. 值得注意的 Subversion 命令选项 (使用时作为 [34;1msvn(1)[m 的第
    一个参数)

    ┌─────────────────────────────────┐
    │  选项   │         说明          │
    ├─────────┼───────────────────────┤
[33m    │--dry-run│测试，没有影响         │[m
    ├─────────┼───────────────────────┤
    │-v       │显示 svn 活动的详细信息│
    └─────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 11 章 数据转换[;m

    下面是关于Debian 系统上可用的格式转化工具及其相关提示的信息。

    基于标准的工具，是非常好用的，但支持的专有数据格式有限.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.1. 文本数据转换工具[;m

    如下是文本数据转换工具。

    表 11.1. 文本数据转化工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包 │流行度│大小 │关键 │               说明                │
    │        │      │     │ 词  │                                   │
    ├────────┼──────┼─────┼─────┼───────────────────────────────────┤
    │        │V:948,│     │字符 │使用 [34;1miconv(1)[m 的不同语言环境（     │
    │libc6   │I:999 │11401│集   │locale）之间的文本编码转换器 (基础 │
    │        │      │     │     │的)                                │
    ├────────┼──────┼─────┼─────┼───────────────────────────────────┤
    │        │V:4,  │     │字符 │不同语言环境（locale）之间的文本编 │
    │recode  │I:30  │608  │集+换│码转换器（多功能的，更多别名和特性 │
    │        │      │     │行   │）                                 │
    ├────────┼──────┼─────┼─────┼───────────────────────────────────┤
    │konwert │V:1,  │123  │字符 │不同语言环境（locale）之间的文本编 │
    │        │I:58  │     │集   │码转换器（高档的）                 │
    ├────────┼──────┼─────┼─────┼───────────────────────────────────┤
    │nkf     │V:1,  │346  │字符 │日语字符集翻译                     │
    │        │I:11  │     │集   │                                   │
    ├────────┼──────┼─────┼─────┼───────────────────────────────────┤
    │tcs     │V:0,  │479  │字符 │字符集翻译                         │
    │        │I:0   │     │集   │                                   │
    ├────────┼──────┼─────┼─────┼───────────────────────────────────┤
    │unaccent│V:0,  │29   │字符 │代替重音字符，使用和它们相当的非重 │
    │        │I:0   │     │集   │音字符                             │
    ├────────┼──────┼─────┼─────┼───────────────────────────────────┤
    │tofrodos│V:2,  │51   │换行 │在 DOS 和 Unix 之间的文本格式转换: │
    │        │I:32  │     │     │[34;1mfromdos(1)[m 和 [34;1mtodos(1)[m             │
    ├────────┼──────┼─────┼─────┼───────────────────────────────────┤
    │macutils│V:0,  │298  │换行 │在 Macintosh 和 Unix 之间的文本格式│
    │        │I:1   │     │     │转换: [34;1mfrommac(1)[m 和 [34;1mtomac(1)[m       │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.1.1. 用 iconv 命令来转换文本文件[;m

    [36;1m提示[m

    [34;1miconv(1)[m 是 libc6 软件包的一部分并且它可以在类 Unix 的系统上转换
    字符的编码。

    你能够通过如下的命令用 [34;1miconv(1)[m 来转换文本文件的编码。

[32;1m    $ iconv -f encoding1 -t encoding2 input.txt >output.txt[;m

    编码值是大小写不敏感的，且会在匹配时忽略[35;1m“-”[;m和[35;1m“_”[;m。可以使用“iconv
    -l”命令检查支持的编码。

    表 11.2. 编码值和用法的列表

    ┌───────────────────────────────────────────────────────────────┐
    │  编码值   │                       用法                        │
    ├───────────┼───────────────────────────────────────────────────┤
    │ASCII      │美国信息交换标准代码，7位代码不带重音符号          │
    ├───────────┼───────────────────────────────────────────────────┤
    │UTF-8      │用于所有现代操作系统的多语言标准                   │
    ├───────────┼───────────────────────────────────────────────────┤
    │ISO-8859-1 │旧的西欧语言标准，ASCII + 重音符号                 │
    ├───────────┼───────────────────────────────────────────────────┤
    │ISO-8859-2 │旧的东欧语言标准，ASCII + 重音符号                 │
    ├───────────┼───────────────────────────────────────────────────┤
    │ISO-8859-15│旧的带有欧元符号的西欧语言标准（ISO-8859-1）       │
    ├───────────┼───────────────────────────────────────────────────┤
    │CP850      │code page 850，用于西欧语言的微软 DOS 的带有图形的 │
    │           │字符，ISO-8859-1 的变体                            │
    ├───────────┼───────────────────────────────────────────────────┤
    │CP932      │code page 932, 日语 Microsoft Windows 的 Shift-JIS │
    │           │变体                                               │
    ├───────────┼───────────────────────────────────────────────────┤
    │CP936      │code page 936，用于简体中文的微软操作系统风格的    │
    │           │GB2312，GBK 或者 GB18030 的变体                    │
    ├───────────┼───────────────────────────────────────────────────┤
    │CP949      │code page 949，用于韩语的微软操作系统风格的 EUC-KR │
    │           │或者 Unified Hangul Code 的变体                    │
    ├───────────┼───────────────────────────────────────────────────┤
    │CP950      │code page 950，用于繁体中文的微软操作系统风格的    │
    │           │Big5 的变体                                        │
    ├───────────┼───────────────────────────────────────────────────┤
    │CP1251     │code page 1251，用于西里尔字母的微软操作系统风格的 │
    │           │编码                                               │
    ├───────────┼───────────────────────────────────────────────────┤
    │CP1252     │code page 1252，用于西欧语言的微软操作系统风格的   │
    │           │ISO-8859-15 的变体                                 │
    ├───────────┼───────────────────────────────────────────────────┤
    │KOI8-R     │用于西里尔字母的旧俄语 UNIX 标准                   │
    ├───────────┼───────────────────────────────────────────────────┤
    │ISO-2022-JP│日文邮件的标准编码，只使用 7 位字节                │
    ├───────────┼───────────────────────────────────────────────────┤
    │eucJP      │老的日文 UNIX 标准的 8 位字节，和 Shift-JIS 完全不 │
    │           │同                                                 │
    ├───────────┼───────────────────────────────────────────────────┤
    │Shift-JIS  │日文 JIS X 0208 附录 1 标准 (参见 CP932)           │
    └───────────────────────────────────────────────────────────────┘


    [33;1m注意[m

    一些编码只支持数据转换，它不能作为语言环境的值 (第 8.4.1 节 “编码
    的基础知识”)。

    像 ASCII 和 ISO-8859 这样适用于单字节的字符集，字符编码和字符集几
    乎指的是同一件事情。

    对于多字符的字符集，比如说，用于日文的 JIS X 0213，或用于差不多所
    有语言的 Universal Character Set (UCS, Unicode, ISO-10646-1) , 有
    多种编码方案来序列化它们的字节数据。

[33;1m      *[;m 日文的 EUC 和 ISO/IEC 2022 (也被称为 JIS X 0202)

[33;1m      *[;m Unicode 的 UTF-8、UTF-16/UCS-2 和 UTF-32/UCS-4 编码

    对于以上这些，字符集和字符编码之间有着明显的区别。

    对某些计算机厂家而言，code page 是作为字符编码表的同义词来使用。

    [33;1m注意[m

    请注意，大部分编码系统共享 ASCII 的 7 位字符的同样编码，但也有一
    些列外。如果你从通常所说的 shift-JIS 编码格式，转化老的日文 C 语
    言程序和 URL 数据，到 UTF-8 格式,你需要使用 [35;1m"CP932"[;m 作为编码名来
    代替 [35;1m"shift-JIS"[;m 来得到期望的结果： 0x5C → [35;1m"\"[;m 和 0x7E → [35;1m"~"[;m.否则
    ，这些将被转化为错误的字符。

    [36;1m提示[m

    [34;1mrecode(1)[m 也可能被使用并且不仅仅是 [34;1miconv(1)[m，[34;1mfromdos(1)[m，[34;1mtodos(1)[m
    ，[34;1mfrommac(1)[m 和 [34;1mtomac(1)[m 功能的结合。想要获得更多信息，请参见
    [35;1m"info recode"[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.1.2. 用 iconv 检查文件是不是 UTF-8 编码[;m

    你能够通过如下命令用 [34;1miconv(1)[m 来检查一个文本文件是不是用 UTF-8 编
    码的。

[32;1m    $ iconv -f utf8 -t utf8 input.txt >/dev/null || echo "non-UTF-8 found"[;m

    [36;1m提示[m

[33m    在上面的例子中使用 [35;1m"--verbose"[;m 参数来找到第一个 non-UTF-8 字符。[m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.1.3. 使用 iconv 转换文件名[;m

    这里是一个示例脚步，在同一目录下，将在老的操作系统系统下创建的文
    件名编码，转换为现代 UTF-8.

[31;1m    #!/bin/sh[;m
    ENCDN=iso-8859-1
    for x in *;
     do
     mv [35;1m"$x"[;m [35;1m"$(echo "[;m$x[35;1m" | iconv -f $ENCDN -t utf-8)"[;m
    done

    [35;1m"$ENCDN"[;m 变量定义了在老的操作系统下，文件名使用的原始编码，见表
     11.2 [35;1m“编码值和用法的列表”[;m.

    对于更加复杂的情况，请使用适当的编码作为 [34;1mmount(8)[m 的选项(参见第
     8.4.6 节 [35;1m“文件名编码”[;m) 来挂载包含有这样文件名的文件系统（比如说
    ，磁盘上的一个分区），使用 [35;1m"cp -a"[;m 命令来拷贝它的整个内容到另外一
    个使用 UTF-8 挂载的文件系统上。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.1.4. 换行符转换[;m

    文本文件的格式，特别是行尾（换行符）编码，有平台独立性。

    表 11.3. 不同平台的换行符样式列表

    ┌─────────────────────────────────────────────────┐
    │      平台      │换行符编码│控制码│十进制│16 进制│
    ├────────────────┼──────────┼──────┼──────┼───────┤
    │Debian (unix)   │LF        │^J    │10    │0A     │
    ├────────────────┼──────────┼──────┼──────┼───────┤
    │MSDOS 和 Windows│CR-LF     │^M^J  │13 10 │0D 0A  │
    ├────────────────┼──────────┼──────┼──────┼───────┤
    │苹果的 Macintosh│CR        │^M    │13    │0D     │
    └─────────────────────────────────────────────────┘


    换行符转换程序, [34;1mfromdos(1)[m, [34;1mtodos(1)[m, [34;1mfrommac(1)[m, 和 [34;1mtomac(1)[m, 是
    相当方便. [34;1mrecode(1)[m 也是有用的。

    [33;1m注意[m

    在 Debian 系统上的一些数据，如 python-moinmoin 软件包的 wiki 页面
    数据，使用 MSDOS 式样的 CR-LF 作为换行符编码。所以，上面的规则仅
    仅是一个通用规则。

    [33;1m注意[m

    大部分编辑器 (比如： vim, emacs, gedit, …) 能够透明处理 MSDOS 式
    样的换行符文件。

    [36;1m提示[m

    对于混合 MSDOS 和 Unix 式样的文件，统一到 MSDOS 换行符式样，使用
    [35;1m"sed -e [35;1m'/\r$/!s/$/\r/'[;m"[;m 代替 [34;1mtodos(1)[m 比较好。 (例如，在使用
    [34;1mdiff3(1)[m移植两个 MSDOS 式样的文件后.)这是因为 todos 给所有的行增
    加 CR.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.1.5. TAB 转换[;m

    这里有一些转换 TAB 代码的专业工具。

    表 11.4. bsdmainutils 和 coreutils 包中的用于转换 TAB 的命令列表

    ┌─────────────────────────────────────────────────────┐
    │             功能             │bsdmainutils│coreutils│
    ├──────────────────────────────┼────────────┼─────────┤
    │把制表符扩展成空格            │[35;1m"col -x"[;m    │expand   │
    ├──────────────────────────────┼────────────┼─────────┤
    │将空格转换为制表符（unexpand）│[35;1m"col -h"[;m    │unexpand │
    └─────────────────────────────────────────────────────┘


    indent 包中的 [34;1mindent(1)[m 命令能够重新格式化 C 程序中的空格。

    例如 vim 和 emacs 这样的编辑软件可以被用来扩展 TAB。就拿 vim 来说
    ，你能够按顺序输入 [35;1m":set expandtab"[;m 和 [35;1m":%retab"[;m 命令来扩展 TAB。
    你也可以按顺序输入 :%set noexpandtab[35;1m" 和 "[;m:%retab" 命令来复原。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.1.6. 带有自动转换功能的编辑器[;m

    像 vim 这样的现代智能编辑器软件是相当聪明的并且能够处理任何编码系
    统以及任何文件格式。你应该在支持 UTF-8 编码的控制台上并在 UTF-8
    环境下使用这些编辑器来获得最好的兼容性。

    以 latin1（iso-8859-1）编码存储的旧西欧语言的 Unix 文本文件，
    [35;1m“u-file.txt”[;m，能通过如下所示的用 vim 轻易的编辑。

[32;1m    $ vim u-file.txt[;m

    这是可能的因为 vim 的文件编码自动检测机制先假定文件是 UTF-8 编码
    ，如果失败了，则假定它是 latin1 编码。

    以 latin2（iso-8859-2）编码存储的旧波兰语的 Unix 文本文件，
    [35;1m“pu-file.txt”[;m，能通过如下所示的用 vim 编辑。

[32;1m    $ vim '+e ++enc=latin2 pu-file.txt'[;m

    以 eucJP 编码存储的旧日语的 Unix 文本文件，[35;1m"ju-file.txt"[;m，能通过
    如下所示的用 vim 编辑。

[32;1m    $ vim '+e ++enc=eucJP ju-file.txt'[;m

    以所谓的 shift-JIS 编码 (更确切的说法是：CP932) 存储的旧日语
    MS-Windows 文本文件，[35;1m"jw-file.txt"[;m，能通过如下所示的用 vim 编辑。

[32;1m    $ vim '+e ++enc=CP932 ++ff=dos jw-file.txt'[;m

    当一个文件用 vim 打开的时候带有 [35;1m"++enc"[;m 和 [35;1m"++ff"[;m 选项，在 Vim 命
    令行输入 [35;1m":w"[;m 命令会以原格式存储文件并且会覆盖原文件。你也可以在
    Vim 命令行指定存储文件名及其格式，例如，[35;1m":w ++enc=utf8 new.txt"[;m。

    请查阅 vim 在线帮助中的 mbyte.txt，[35;1m"多字节文本支持"[;m和表 11.2 “编
    码值和用法的列表”来获得 [35;1m"++enc"[;m 使用的本地值的信息。

    emacs 家族的程序能够实现同样的功能。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.1.7. 提取纯文本[;m

    如下所示读入 web 页面并把它转化成文本文件。当从 Web 中拷贝配置或
    者是在 web 页面中应用类似 [34;1mgrep(1)[m 的基础 Unix 文本工具时，以下命
    令是非常有用的。

[32;1m    $ w3m -dump http://www.remote-site.com/help-info.html >textfile[;m

    同样，你可以使用如下所示的工具从其他格式提取纯文本数据。

    表 11.5. 用于提取纯文本数据的工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包  │流行度│大小│    关键词     │          功能           │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │w3m      │V:114,│2303│html→text      │用 [35;1m"w3m -dump"[;m 命令把    │
    │         │I:528 │    │               │HTML 转化为文本的转换器  │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │html2text│V:13, │257 │html→text      │高级的 HTML 到文本文件的 │
    │         │I:55  │    │               │转换器 (ISO8859-1)       │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │lynx     │V:23, │1907│html→text      │用 [35;1m"lynx -dump"[;m 命令把   │
    │         │I:107 │    │               │HTML 转化为文本的转化器  │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │elinks   │V:11, │1583│html→text      │用 [35;1m"elinks -dump"[;m 命令把 │
    │         │I:31  │    │               │HTML 转化为文本的转换器  │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │links    │V:15, │2123│html→text      │用 [35;1m"links -dump"[;m 命令把  │
    │         │I:44  │    │               │HTML 转化为文本的转换器  │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │links2   │V:2,  │5366│html→text      │用 [35;1m"links2 -dump"[;m 命令把 │
    │         │I:16  │    │               │HTML 转化为文本的转换器  │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │antiword │V:4,  │623 │MSWord→text,ps │转化 MSWord 文件到纯文本 │
    │         │I:13  │    │               │或 ps 文件               │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │catdoc   │V:56, │675 │MSWord→text,TeX│转化 MSWord 文件到纯文本 │
    │         │I:106 │    │               │或 TeX文件               │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │pstotext │V:2,  │126 │ps/pdf→text    │从 PostScript 和 PDF 文件│
    │         │I:5   │    │               │里导出文本               │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │unhtml   │V:0,  │42  │html→text      │从一个 HTML 文件里面删除 │
    │         │I:0   │    │               │标记标签                 │
    ├─────────┼──────┼────┼───────────────┼─────────────────────────┤
    │odt2txt  │V:2,  │53  │odt→text       │从开放文档格式到文本格式 │
    │         │I:7   │    │               │的转化器                 │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.1.8. 高亮并格式化纯文本数据[;m

    你可以通过如下所示的来高亮并格式化纯文本数据。

    表 11.6. 高亮纯文本数据的工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │     软件包     │流行 │ 大小 │ 关键词  │         说明          │
    │                │ 度  │      │         │                       │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │                │V:19,│      │         │用 ":source $VIMRUNTIME│
    │vim-runtime     │I:440│29056 │高亮     │/syntax/html.vim" Vim  │
    │                │     │      │         │宏命令转化源代码到 HTML│
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │cxref           │V:0, │1182  │c→html   │从 C 程序到 latex 和   │
    │                │I:0  │      │         │HTML 的转换器（C语言） │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │src2tex         │V:0, │622   │高亮     │转换许多源代码到 TeX（C│
    │                │I:0  │      │         │语言）                 │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │                │     │      │         │转换源代码到带有高亮显 │
    │                │V:1, │      │         │示的 HTML, XHTML,      │
    │source-highlight│I:7  │2002  │高亮     │LaTeX, Texinfo, ANSI 颜│
    │                │     │      │         │色转义序列和 DocBook 文│
    │                │     │      │         │件 (C++)               │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │                │     │      │         │转化许多源代码到带有高 │
    │highlight       │V:1, │1028  │高亮     │亮显示的 HTML, XHTML,  │
    │                │I:16 │      │         │RTF, LaTeX, TeX or     │
    │                │     │      │         │XSL-FO 文件。(C++)     │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │grc             │V:0, │188   │text→有颜│用于任何文本的通用颜色 │
    │                │I:2  │      │色的     │生成器 (Python)        │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │txt2html        │V:0, │296   │text→html│文本到 HTML 转换器（   │
    │                │I:4  │      │         │Perl）                 │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │markdown        │V:0, │57    │text→html│markdown 文本文档到 (X)│
    │                │I:7  │      │         │HTML (Perl)            │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │asciidoc        │I:14 │80    │text→any │AsciiDoc 文本文档到 XML│
    │                │     │      │         │/HTML (Python)         │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │pandoc          │V:5, │115026│text→any │通用标记转化器         │
    │                │I:38 │      │         │(Haskell)              │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │python-docutils │V:37,│1752  │text→any │重构文本文档到 XML     │
    │                │I:303│      │         │(Python)               │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │                │     │      │         │转化文本到 HTML, SGML, │
    │txt2tags        │V:0, │813   │text→any │LaTeX, man page,       │
    │                │I:1  │      │         │MoinMoin, Magic Point  │
    │                │     │      │         │and PageMaker (Python) │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │udo             │V:0, │564   │text→any │通用的文本文件转化工具 │
    │                │I:0  │      │         │(C 语言)               │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │stx2any         │V:0, │264   │text→any │结构化纯文本到其他格式 │
    │                │I:0  │      │         │的文档转化器 (m4)      │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │rest2web        │V:0, │527   │text→html│重构文本到 html 的文档 │
    │                │I:0  │      │         │转化器 (Python)        │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │aft             │V:0, │235   │text→any │[35;1m"自由格式"[;m的文件准备系 │
    │                │I:0  │      │         │统 (Perl)              │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │yodl            │V:0, │615   │text→any │用预文档语言工具来处理 │
    │                │I:0  │      │         │文件 (C 语言)          │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │sdf             │V:0, │1445  │text→any │简单的文档剖析器 (Perl)│
    │                │I:0  │      │         │                       │
    ├────────────────┼─────┼──────┼─────────┼───────────────────────┤
    │sisu            │V:0, │5341  │text→any │文档组织、排版、搜索框 │
    │                │I:0  │      │         │架 (Ruby)              │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.2. XML 数据[;m

    扩展标记语言 Extensible Markup Language (XML) 是一种标记语言，用
    于含有结构化信息的文档。

    在 XML.COM 查看介绍信息.

[33;1m      *[;m [35;1m"什么是 XML?"[;m

[33;1m      *[;m [35;1m"什么是 XSLT?"[;m

[33;1m      *[;m [35;1m"什么是 XSL-FO?"[;m

[33;1m      *[;m [35;1m"什么是 XLink?"[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.2.1. XML 的基本提示[;m

    XML 文本看起来有些像 HTML.它能够使我们管理一个文档的多个格式。一
    个简单的 XML 系统是 docbook-xsl 软件包，在这里使用。

    每一个 XML 文件使用下面的标准 XML 声明开始。

    <?xml version=[35;1m"1.0"[;m encoding=[35;1m"UTF-8"[;m?>

    XML 元素的基本语法是按下面的方式标记。

    <name attribute=[35;1m"value"[;m>content</name>

    内容为空的 XML 元素，使用下面的短格式标记。

    <name attribute=[35;1m"value"[;m/>

    上面列子中的 [35;1m"attribute="[;mvalue[35;1m""[;m 是可选的。

    XML 里面的注释部分，是按下面的方式标记。

[33m    <!-- comment -->[m

    不同于增加标记，XML 至少要求使用预定义实体里的内容来转化下列字符
    。

    表 11.7. XML 预定义实体列表

    ┌─────────────────────┐
    │预定义实体│转化的字符│
    ├──────────┼──────────┤
    │&quot;    │" : 引号  │
    ├──────────┼──────────┤
    │&apos;    │' : 撇号  │
    ├──────────┼──────────┤
    │&lt;      │< : 小于号│
    ├──────────┼──────────┤
    │&gt;      │> : 大于号│
    ├──────────┼──────────┤
    │&amp;     │& :＆号   │
    └─────────────────────┘


    [33;1m小心[m

    [35;1m“<”[;m或[35;1m“&”[;m不能在属性（attributes）或元素（elements）中使用。

    [33;1m注意[m

    当 SGML 式样的用户定义实体，比如 [35;1m"&some-tag:"[;m, 被使用的时候，第一
    个定义会覆盖其它的。实体定义在 [35;1m"<!ENTITY some-tag "[;mentity value">
    "里表示.

    [33;1m注意[m

    只要 XML 标记是一致使用某一标签名集合（一些数据作为内容或属性值）
    ，使用 Extensible Stylesheet Language Transformations (XSLT) 来转
    换到另外一个 XML，是一个微不足道的任务。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.2.2. XML 处理[;m

    有许多工具可以用于处理 XML 文件，比如说：可扩展样式表语言
    Extensible Stylesheet Language (XSL).

    一旦你创建了一个好的成形的 XML 文件，基本上来讲，你就可以使用可扩
    展样式表语言转换 Extensible Stylesheet Language Transformations
    (XSLT)，将其转换成任何格式。

    格式化对象的可扩展样式表语言 Extensible Stylesheet Language for
    Formatting Objects (XSL-FO) 是用来作为格式化的解决方案. fop 软件
    包比 Debian main 档案库要新，因为它依赖 Java 编程语言. LaTeX 代码
    通常是从 XML 使用 XSLT 生成，LaTeX 系统是用来创建 DVI, PostScript
    和 PDF 这类可打印的文件。

    表 11.8. XML 工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │  软件包   │流行度│大小 │关键词│             说明              │
    ├───────────┼──────┼─────┼──────┼───────────────────────────────┤
    │docbook-xml│I:513 │2131 │xml   │DocBook 的 XML 文档类型定义（  │
    │           │      │     │      │DTD）                          │
    ├───────────┼──────┼─────┼──────┼───────────────────────────────┤
    │xsltproc   │V:15, │154  │xslt  │XSLT 命令行处理器 (XML→ XML,   │
    │           │I:114 │     │      │HTML, 纯文本，等等)            │
    ├───────────┼──────┼─────┼──────┼───────────────────────────────┤
    │docbook-xsl│V:12, │14998│xml/  │使用 XSLT 将 DocBook XML 处理成│
    │           │I:220 │     │xslt  │各种输出格式的 XSL 样式表      │
    ├───────────┼──────┼─────┼──────┼───────────────────────────────┤
    │xmlto      │V:2,  │126  │xml/  │使用 XSLT 将 XML 转换到任意格式│
    │           │I:32  │     │xslt  │的转换器                       │
    ├───────────┼──────┼─────┼──────┼───────────────────────────────┤
    │dbtoepub   │V:0,  │71   │xml/  │DocBook XML 到 .epub 转换      │
    │           │I:1   │     │xslt  │                               │
    ├───────────┼──────┼─────┼──────┼───────────────────────────────┤
    │dblatex    │V:6,  │4648 │xml/  │使用 XSLT 将 Docbook 文件转换为│
    │           │I:22  │     │xslt  │DVI, PostScript, PDF 文档      │
    ├───────────┼──────┼─────┼──────┼───────────────────────────────┤
    │fop        │V:2,  │64   │xml/  │转换 Docbook XML 文件到 PDF    │
    │           │I:46  │     │xsl-fo│                               │
    └───────────────────────────────────────────────────────────────┘


    由于 XML 是标准通用标记语言 Standard Generalized Markup Language
    (SGML)的一个子集,用于处理 SGML 的扩展工具，也能够处理 XML，比如说
    文档式样语言和规范语言 Document Style Semantics and Specification
    Language (DSSSL).

    表 11.9. DSSSL 工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │   软件包    │流行│大小│关键 │              说明               │
    │             │ 度 │    │ 词  │                                 │
    ├─────────────┼────┼────┼─────┼─────────────────────────────────┤
    │openjade     │V:3,│988 │dsssl│ISO/IEC 10179:1996 标准 DSSSL 处 │
    │             │I:46│    │     │理器 (最新的)                    │
    ├─────────────┼────┼────┼─────┼─────────────────────────────────┤
    │docbook-dsssl│V:1,│2604│xml/ │使用 DSSSL 处理 DocBook XML 到各 │
    │             │I:32│    │dsssl│种输出格式的 DSSSL 样式表        │
    ├─────────────┼────┼────┼─────┼─────────────────────────────────┤
    │             │    │    │     │DocBook 文件的工具包，包括使用   │
    │docbook-utils│V:1,│281 │xml/ │DSSSL 的转换成其它格式 (HTML,    │
    │             │I:22│    │dsssl│RTF, PS, man, PDF)的 docbook2* 命│
    │             │    │    │     │令                               │
    ├─────────────┼────┼────┼─────┼─────────────────────────────────┤
    │sgml2x       │V:0,│90  │SGML/│SGML 和 XML 使用 DSSSL 样式表的转│
    │             │I:0 │    │dsssl│换器                             │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    GNOME 的 yelp 往往能够方便的直接读取 DocBook XML 文件，这是因为它
    可以从 X 获得适当的渲染。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.2.3. XML 数据提取[;m

    使用下面的方法，你能够从其它格式提取 HTML 或 XML 数据。

    表 11.10. XML 数据提取工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包  │流行│大小│   关键词   │             说明             │
    │         │ 度 │    │            │                              │
    ├─────────┼────┼────┼────────────┼──────────────────────────────┤
    │wv       │V:4,│717 │MSWord→任何 │从微软 Word 格式到 HTML,      │
    │         │I:8 │    │格式        │LaTeX, 等格式的文件转换器。   │
    ├─────────┼────┼────┼────────────┼──────────────────────────────┤
    │texi2html│V:0,│1832│texi→html   │从 Texinfo 到 HTML 的转换器   │
    │         │I:9 │    │            │                              │
    ├─────────┼────┼────┼────────────┼──────────────────────────────┤
    │man2html │V:0,│141 │man 手册页  │从 man 手册页到 HTML 的转换器 │
    │         │I:3 │    │→html       │(支持 CGI)                    │
    ├─────────┼────┼────┼────────────┼──────────────────────────────┤
    │unrtf    │V:1,│145 │rtf→html    │从 RTF 到 HTML 等的转换器     │
    │         │I:4 │    │            │                              │
    ├─────────┼────┼────┼────────────┼──────────────────────────────┤
    │info2www │V:2,│156 │info→html   │从 GNU info 到 HTML 的转换器  │
    │         │I:4 │    │            │(支持 CGI)                    │
    ├─────────┼────┼────┼────────────┼──────────────────────────────┤
    │ooo2dbk  │V:0,│217 │sxw→xml     │从 OpenOffice.org SXW 文档到  │
    │         │I:1 │    │            │DocBook XML 的转换器          │
    ├─────────┼────┼────┼────────────┼──────────────────────────────┤
    │wp2x     │V:0,│215 │WordPerfect→│WordPerfect 5.0 和 5.1 文件到 │
    │         │I:0 │    │任意格式    │TeX, LaTeX, troff, GML 和 HTML│
    ├─────────┼────┼────┼────────────┼──────────────────────────────┤
    │doclifter│V:0,│446 │troff→xml   │troff 到 DocBook XML 的转换器 │
    │         │I:0 │    │            │                              │
    └───────────────────────────────────────────────────────────────┘


    对于非 XML 的 HTML 文件，你能够转换它们为 XHTML，XHTML 是一个相当
    成型的 XML 实例。XHTML 能够被 XML 工具处理.

    表 11.11. XML 美化打印工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │   软件包    │流行 │大 │    关键词    │          说明          │
    │             │ 度  │小 │              │                        │
    ├─────────────┼─────┼───┼──────────────┼────────────────────────┤
    │             │V:21,│   │              │使用 [34;1mxmllint(1)[m 的 XML  │
    │libxml2-utils│I:304│169│xml↔html↔xhtml│命令行工具 (语法检查，重│
    │             │     │   │              │新格式化，梳理, …)      │
    ├─────────────┼─────┼───┼──────────────┼────────────────────────┤
    │tidy         │V:2, │83 │xml↔html↔xhtml│HTML 语法检查和重新格式 │
    │             │I:17 │   │              │化                      │
    └───────────────────────────────────────────────────────────────┘


    一旦适当的 XML 生成，基于标记的内容等，你能够使用 XSLT 技术提取数
    据。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.3. 排版[;m

    Unix上的 troff 程序最初是由 AT&T 公司开发的，可以被用做简单排版。
    现在被用来创建手册页。

    Donald Knuth 发明的 Tex 是非常强大的排版工具也是实际上的标准。最
    初是由 Leslie Lamport 开发的 LaTex 使得用户可以更为方便的利用 Tex
    的强大功能。

    表 11.12. 排版工具的列表

    ┌───────────────────────────────────────────────────────────────┐
    │软件包 │  流行度  │大小│关键词 │             说明              │
    ├───────┼──────────┼────┼───────┼───────────────────────────────┤
    │texlive│V:6, I:64 │69  │(La)TeX│用于排版、预览和打印的 TeX 系统│
    ├───────┼──────────┼────┼───────┼───────────────────────────────┤
    │groff  │V:5, I:109│9389│troff  │GNU troff 文本格式化系统       │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.3.1. roff 排版[;m

    传统意义上，roff 是 Unix 上主要的文本处理系统。参见 [34;1mroff(7)[m,
    [34;1mgroff(7)[m, [34;1mgroff(1)[m, [34;1mgrotty(1)[m, [34;1mtroff(1)[m, [34;1mgroff_mdoc(7)[m, groff_man
    (7), [34;1mgroff_ms(7)[m, [34;1mgroff_me(7)[m, [34;1mgroff_mm(7)[m 和 [35;1m"info groff"[;m。

    安装好 groff 软件包以后，你输入 [35;1m"-me"[;m 宏指令就能看到一份不错的指
    导手册，它的位置是 [35;1m"/usr/share/doc/groff/"[;m。

    [36;1m提示[m

    [35;1m"groff -Tascii -me -"[;m 输出带有 ANSI 转义码的纯文本。如果你想要
    manpage 的输出带有许多 [35;1m"^H"[;m 和 [35;1m"_"[;m，那么使用替代命令
    [35;1m"GROFF_NO_SGR=1 groff -Tascii -me -"[;m。

    [36;1m提示[m

    如果想要移除 groff 生成的文本文件中的 [35;1m"^H"[;m 和 [35;1m"_"[;m，使用 "col -b
    -x" 来过滤它。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.3.2. TeX/LaTeX[;m

    Tex Live 软件提供了全部的 TeX 系统。texlive 元包只是 TeX Live 中
    的一部分，但是它足够应付日常任务。

    这里有许多可用的 TeX 和 LaTeX 的参考资料。

[33;1m      *[;m The teTeX HOWTO: The Linux-teTeX Local Guide

[33;1m      *[;m [34;1mtex(1)[m

[33;1m      *[;m [34;1mlatex(1)[m

[33;1m      *[;m [34;1mtexdoc(1)[m

[33;1m      *[;m [34;1mtexdoctk(1)[m

[33;1m      *[;m [35;1m"The TeXbook"[;m, 作者 Donald E. Knuth, (Addison-Wesley)

[33;1m      *[;m [35;1m"LaTeX - A Document Preparation System"[;m, 作者 Leslie Lamport,
        (Addison-Wesley)

[33;1m      *[;m [35;1m"The LaTeX Companion"[;m, 作者 Goossens, Mittelbach, Samarin,
        (Addison-Wesley)

    这是最强大的排版环境。许多 SGML 处理器把它作为其后台字处理工具。
    lyx 软件包提供的 Lyx 和 texmacs 软件包提供的 GNU TeXmacs 都为
    LaTeX 提供了非常不错的所见即所得的编辑环境，然而许多人使用 Emacs
    和 Vim 作为其源代码编辑器。

    有许多在线资源存在。

[33;1m      *[;m TEX Live Guide - TEX Live 2007 ("/usr/share/doc/
        texlive-doc-base/english/texlive-en/live.html")
        (texlive-doc-base 包)

[33;1m      *[;m Latex/Lyx 的一个简单指引

[33;1m      *[;m 使用 LaTeX 进行文字处理

[33;1m      *[;m teTeX/LaTeX 的本地用户指引

    当文档变得更大时，TeX 有时会出错。你必须在 [35;1m"/etc/texmf/texmf.cnf"[;m
    中增加 pool 的大小 (更确切的说话是编辑是 "/etc/texmf/texmf.d/
    95NonPath" 并且运行 [34;1mupdate-texmf(8)[m) 来修复此问题。

    [33;1m注意[m

    [35;1m"The TeXbook"[;m 的 TeX 源码可以从 http://tug.ctan.org/tex-archive/
    systems/knuth/dist/tex/texbook.tex 上下载。此文件包含了绝大多数所
    需的宏指令。我听说把文档中的第7到第10行注释了并且添加 "\input
    manmac \proofmodefalse"，就可以用 [34;1mtex(1)[m 来处理此文档。我强烈建议
    去购买这本书 (还有 Donald E. Knuth 写的其他书) 而不是使用在线版本
    ，但是在线版本中的源码确实是学习 Tex 输入很好的例子！

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.3.3. 漂亮的打印手册页[;m

    你能够用如下任意一个命令在打印机上漂亮的打印手册页。

[32;1m    $ man -Tps some_manpage | lpr[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.3.4. 创建手册页[;m

    尽管用纯 troff 格式写手册页（manpage）是可能的，这里还是有一些辅
    助的程序包用于创建手册页。

    表 11.13. 创建手册页的工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包    │流行度│大 │ 关键词  │           说明            │
    │              │      │小 │         │                           │
    ├──────────────┼──────┼───┼─────────┼───────────────────────────┤
    │docbook-to-man│V:0,  │187│SGML→man │从 DocBook SGML 到 roff 手 │
    │              │I:16  │   │手册页   │册页宏指令的转换器         │
    ├──────────────┼──────┼───┼─────────┼───────────────────────────┤
[33m    │help2man      │V:0,  │464│text→man │通过 --help 参数自动生成手 │[m
    │              │I:10  │   │手册页   │册页的工具                 │
    ├──────────────┼──────┼───┼─────────┼───────────────────────────┤
    │info2man      │V:0,  │134│info→man │转换 GNU info 到 POD 或手册│
    │              │I:0   │   │手册页   │页的转换器                 │
    ├──────────────┼──────┼───┼─────────┼───────────────────────────┤
    │txt2man       │V:0,  │65 │text→man │把纯粹的 ASCII 文本转化为手│
    │              │I:1   │   │手册页   │册页格式                   │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.4. 可印刷的数据[;m

    在 Debian 系统中，可打印的数据是 PostScript 格式的。对于非
    PostScript 打印机，通用 Unix 打印系统 (CUPS) 使用 Ghostscript 作
    为其后台光栅处理程序。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.4.1. Ghostscript[;m

    处理可印刷的数据的核心是 Ghostscript PostScript 解释器，它能够生
    成光栅图像。

    来自 Artifex 的最新上游 Ghostscript 软件包的许可从 AFPL 变成 GPL
    ，并且发布的是合并版本，其中合并了最新的 ESP 版本的改变，例如
    CUPS 8.60版本。

    表 11.14. Ghostscript PostScript 解释器列表

    ┌───────────────────────────────────────────────────────────────┐
    │     软件包     │ 流行度 │大小 │             说明              │
    ├────────────────┼────────┼─────┼───────────────────────────────┤
    │ghostscript     │V:151,  │219  │GPL Ghostscript PostScript/PDF │
    │                │I:672   │     │解释器                         │
    ├────────────────┼────────┼─────┼───────────────────────────────┤
    │ghostscript-x   │V:28,   │211  │GPL Ghostscript PostScript/PDF │
    │                │I:73    │     │解释器-X 显示支持              │
    ├────────────────┼────────┼─────┼───────────────────────────────┤
    │libpoppler74    │V:26,   │3330 │PDF 渲染库 (xpdf PDF 浏览器的分│
    │                │I:61    │     │支)                            │
    ├────────────────┼────────┼─────┼───────────────────────────────┤
    │libpoppler-glib8│V:205,  │447  │PDF 渲染库（基于 Glib 的共享库)│
    │                │I:520   │     │                               │
    ├────────────────┼────────┼─────┼───────────────────────────────┤
    │poppler-data    │V:106,  │12219│用于 PDF 渲染库的 CMaps (CJK 支│
    │                │I:666   │     │持：Adobe-*)                   │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    [35;1m"gs -h"[;m 能够显示 Ghostscript 的配置信息。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.4.2. 合并两个 PS 或 PDF 文件[;m

    你能够使用 Ghostscript 中的 [34;1mgs(1)[m 来合并两个 PostScript(PS) 或可
    移植文档格式（PDF）文件。

[32;1m    $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite -sOutputFile=bla.ps -f foo1.ps foo2.ps[;m
[32;1m    $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=bla.pdf -f foo1.pdf foo2.pdf[;m

    [33;1m注意[m

    PDF 是用途很广的跨平台可印刷的数据格式，它本质上是带有一些额外特
    性和扩展的压缩了的 PS 格式。

    [36;1m提示[m

    对于命令行来说，[34;1mpsmerge(1)[m 和 psutils 包中的其他命令在处理
    PostScript 文档时是很有用的。pdftk 包中的 [34;1mpdftk(1)[m 在处理 PDF 文
    档的时候同样是很好用的。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.4.3. 处理可印刷数据的工具[;m

    如下是处理可印刷数据的工具列表。

    表 11.15. 处理可印刷数据的工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │   软件包    │流行 │大小│   关键词    │          说明          │
    │             │ 度  │    │             │                        │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │             │V:48,│    │             │PDF 工具：pdftops,      │
    │poppler-utils│I:476│592 │pdf→ps,text,…│pdfinfo, pdfimages,     │
    │             │     │    │             │pdftotext, pdffonts     │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │psutils      │V:8, │219 │ps→ps        │PostScript 文件转换工具 │
    │             │I:158│    │             │                        │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │poster       │V:0, │49  │ps→ps        │用 PostScript 页制作大型│
    │             │I:6  │    │             │海报                    │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │             │V:1, │    │text→ps,     │转化 ASCII 文本到       │
    │enscript     │I:24 │2111│html, rtf    │PostScript, HTML, RTF 或│
    │             │     │    │             │Pretty-Print            │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │             │V:2, │    │             │[35;1m'任何文本到 PostScript'[;m │
    │a2ps         │I:21 │3620│text→ps      │的转换器并且也是相当不错│
    │             │     │    │             │的打印程序              │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │pdftk        │V:8, │3873│pdf→pdf      │PDF 文档转换工具：pdftk │
    │             │I:58 │    │             │                        │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │html2ps      │V:0, │249 │html→ps      │从 HTML 到 PostScript 的│
    │             │I:4  │    │             │转换器                  │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │gnuhtml2latex│V:0, │27  │html→latex   │从 html 到 latex 的转换 │
    │             │I:1  │    │             │器                      │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │             │V:0, │    │             │转换 LaTeX 文档到能被   │
    │latex2rtf    │I:7  │478 │latex→rtf    │Microsoft Word 读取的   │
    │             │     │    │             │RTF 格式的文档          │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │             │V:5, │    │             │从 PostScript 到 EPS（  │
    │ps2eps       │I:105│94  │ps→eps       │Encapsulated PostScript │
    │             │     │    │             │）的转换器              │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │e2ps         │V:0, │112 │text→ps      │带有日文编码支持的文本到│
    │             │I:0  │    │             │PostScript 转换器       │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │impose+      │V:0, │180 │ps→ps        │PostScript 工具         │
    │             │I:1  │    │             │                        │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │             │     │    │             │漂亮的打印许多源程序（C,│
    │trueprint    │V:0, │138 │text→ps      │C++, Java, Pascal, Perl,│
    │             │I:0  │    │             │Pike, Sh, 和 Verilog）到│
    │             │     │    │             │PostScript。(C 语言)    │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │pdf2svg      │V:0, │26  │ps→svg       │PDF 到可升级的向量图形格│
    │             │I:4  │    │             │式的转换器              │
    ├─────────────┼─────┼────┼─────────────┼────────────────────────┤
    │pdftoipe     │V:0, │62  │ps→ipe       │从 PDF 到 IPE‘s XML 格式│
    │             │I:0  │    │             │的转换器                │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.4.4. 用 CUPS 打印[;m

    Unix 通用打印系统（CUPS）中的 [34;1mlp(1)[m 和 [34;1mlpr(1)[m 命令都提供了自定义
    打印数据的选项。

    你可以使用下列命令中的一个来打印 3 份有装订页码的文件。

[32;1m    $ lp -n 3 -o Collate=True filename[;m

[32;1m    $ lpr -#3 -o Collate=True filename[;m

    你能够通过 [35;1m"-o number-up=2"[;m, [35;1m"-o page-set=even"[;m, "-o page-set=
    odd[35;1m", "[;m-o scaling=200[35;1m", "[;m-o natural-scaling=200" 等等打印机选项来
    进一步定制打印机操作，详细的文档参见命令行打印和选项。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.5. 邮件数据转换[;m

    下列邮件数据转换软件包捕获了我的眼球。

    表 11.16. 有助于邮件数据转换的软件包列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包  │流行│大小│关键词 │               说明                │
    │         │ 度 │    │       │                                   │
    ├─────────┼────┼────┼───────┼───────────────────────────────────┤
    │sharutils│V:6,│1389│邮件   │[34;1mshar(1)[m, [34;1munshar(1)[m, [34;1muuencode(1)[m,   │
    │         │I:85│    │       │[34;1muudecode(1)[m                        │
    ├─────────┼────┼────┼───────┼───────────────────────────────────┤
    │mpack    │V:2,│91  │MIME   │编码和解码 MIME 信息: [34;1mmpack(1)[m 和  │
    │         │I:23│    │       │[34;1mmunpack(1)[m                         │
    ├─────────┼────┼────┼───────┼───────────────────────────────────┤
    │tnef     │V:6,│98  │ms-tnef│解包 MIME 附件类型 "application/   │
    │         │I:11│    │       │ms-tnef"，该格式仅由微软使用       │
    ├─────────┼────┼────┼───────┼───────────────────────────────────┤
    │         │V:0,│    │       │下列格式的编码器和解码器: uuencode,│
    │uudeview │I:5 │101 │邮件   │xxencode, BASE64, quoted printable │
    │         │    │    │       │和 BinHex                          │
    └───────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    如果邮件客户端可以配置使用 IMAP4 服务器，互联网消息访问协议版本 4
    (IMAP4) 服务器 (参见第 6.7 节 [35;1m“POP3/IMAP4 服务器”[;m) 可以用来把邮件
    从专有邮件系统里面移出来。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.5.1. 邮件数据基础[;m

    邮件 (SMTP) 数据需要被限制为 7 位数据序列。二进制数据和 8 位文本
    数据使用 Multipurpose Internet Mail Extensions (MIME) 互联网多用
    途邮件扩展和选择的字符集编码到 7 位格式。(参见第 8.4.1 节 “编码的
    基础知识”).

    标准的邮件存储格式是 mbox，它是依据 RFC2822 (由 RFC822 更新) 来的
    格式. 参见 [34;1mmbox(5)[m (由 mutt 软件包提供).

    对于欧洲语言,由于没有什么 8 位字符，"Content-Transfer-Encoding:
    quoted-printable" 加 ISO-8859-1 字符集通常被用于邮件。如果欧洲文
    本是被编码为 UTF-8,由于几乎全是 7 位数据，使用
    [35;1m"Content-Transfer-Encoding: quoted-printable"[;m 也是合适的。

    对于日语，传统的 [35;1m"Content-Type: text/plain; charset=ISO-2022-JP"[;m
    通常被用于邮件来保持文本在 7 位。但是老的微软系统会在没有声明的情
    况下使用 Shift-JIS 来发送邮件。如果日语文本是用 UTF-8 编码, 由于
    含有许多 8 位数据，使用 Base64 是合适的。其它亚洲语言也是类似情形
    。

    [33;1m注意[m

    如果你的非 Unix 邮件数据可以通过一个具备和 IMAP4 服务通讯的非
    Debian 客户端访问，你可以通过运行你的 IMAP4 服务来将邮件数据移出
    。(参见第 6.7 节 [35;1m“POP3/IMAP4 服务器”[;m).

    [33;1m注意[m

    如果你使用其它邮件存储格式，第一步把它们移动到 mbox 格式比较好。
    像 [34;1mmutt(1)[m 这样多功能的客户端程序可以便捷的完成这类操作。

    你可以使用 [34;1mprocmail(1)[m 和 [34;1mformail(1)[m 把邮箱内容分开成每一封邮件.

    每一封邮件能够使用来自 mpack 软件包的 [34;1mmunpack(1)[m 命令（或其它特异
    的工具）来获得 MIME 编码内容。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.6. 图形数据工具[;m

    如下是关于图形数据转换、编辑和管理的工具包。

    表 11.17. 图形数据工具列表

    ┌───────────────────────────────────────────────────────────────────────┐
    │         软件包         │流行度│ 大小 │     关键词      │     说明     │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │gimp                    │V:86, │17769 │图形(位图）      │GNU 图形处理程│
    │                        │I:491 │      │                 │序            │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │imagemagick             │V:49, │207   │图形(位图）      │图形处理程序  │
    │                        │I:552 │      │                 │              │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:6,  │      │                 │图像处理程序（│
    │graphicsmagick          │I:17  │5158  │图形(位图）      │imagemagick派 │
    │                        │      │      │                 │生出来的)     │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │用于 SANE 的基│
    │                        │V:20, │      │                 │于 GTK+ 的前端│
    │xsane                   │I:192 │909   │图形(位图）      │图形界面 (现在│
    │                        │      │      │                 │访问扫描仪就很│
    │                        │      │      │                 │简单了)       │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │netpbm                  │V:28, │4302  │图形(位图）      │图形界面的转换│
    │                        │I:554 │      │                 │工具          │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │MS Windows 符 │
    │                        │      │      │                 │号和光标转化为│
    │icoutils                │V:12, │192   │png↔ico(bitmap)  │PNG 格式，或者│
    │                        │I:148 │      │                 │从 PNG 格式转 │
    │                        │      │      │                 │化为位图格式  │
    │                        │      │      │                 │(favicon.ico) │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │scribus                 │V:5,  │19090 │ps/pdf/SVG/…     │Scribus DTP 编│
    │                        │I:28  │      │                 │辑器          │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │libreoffice-draw        │V:320,│9896  │图形（矢量）     │LibreOffice 办│
    │                        │I:469 │      │                 │公套件-绘画   │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │inkscape                │V:153,│77572 │图形（矢量）     │SVG（可升级矢 │
    │                        │I:336 │      │                 │量图形)编辑器 │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │dia                     │V:20, │3916  │图形（矢量）     │图表编辑器（  │
    │                        │I:39  │      │                 │Gtk）         │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:10, │      │                 │在图形界面下，│
    │xfig                    │I:18  │1792  │图形（矢量）     │交互式的生成图│
    │                        │      │      │                 │像变得方便    │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │PostScript 和 │
    │pstoedit                │V:6,  │984   │ps/pdf→image(矢  │PDF 文件到可编│
    │                        │I:196 │      │量)              │辑的矢量图形的│
    │                        │      │      │                 │转换器（SVG） │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:11, │      │Windows/image(矢 │Windows 元文件│
    │libwmf-bin              │I:341 │104   │量)              │(矢量图形数据)│
    │                        │      │      │                 │转换工具      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │转换 XFig 文件│
    │fig2sxd                 │V:0,  │149   │fig→sxd(矢量)    │为            │
    │                        │I:0   │      │                 │OpenOffice.org│
    │                        │      │      │                 │绘画格式      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │unpaper                 │V:2,  │453   │image→image      │后处理 OCR 扫 │
    │                        │I:17  │      │                 │描页面的工具  │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:5,  │      │                 │基于惠普的商业│
    │tesseract-ocr           │I:31  │1044  │image→text       │OCR 引擎的免费│
    │                        │      │      │                 │OCR 软件      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │OCR 引擎数据：│
    │tesseract-ocr-eng       │I:32  │4032  │image→text       │用于英文文本的│
    │                        │      │      │                 │tesseract-ocr │
    │                        │      │      │                 │语言文件      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │gocr                    │V:1,  │477   │image→text       │免费 OCR 软件 │
    │                        │I:20  │      │                 │              │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │ocrad                   │V:1,  │299   │image→text       │免费 OCR 软件 │
    │                        │I:6   │      │                 │              │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │eog                     │V:90, │11254 │图像(Exif)       │Eye of GNOME  │
    │                        │I:307 │      │                 │图像浏览程序  │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │gthumb                  │V:13, │3364  │图像(Exif)       │图像浏览器（  │
    │                        │I:24  │      │                 │GNOME）       │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │geeqie                  │V:13, │1990  │图像(Exif)       │基于 GTK+ 的图│
    │                        │I:23  │      │                 │像浏览器      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │shotwell                │V:19, │6635  │图像(Exif)       │数码相片管理器│
    │                        │I:205 │      │                 │（GNOME）     │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:0,  │      │                 │从数码照相机中│
    │gtkam                   │I:6   │1154  │图像(Exif)       │检索多媒体数据│
    │                        │      │      │                 │的应用 (GTK+) │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │gphoto2 软件是│
    │gphoto2                 │V:1,  │961   │图像(Exif)       │命令行方式的管│
    │                        │I:13  │      │                 │理数码相机的工│
    │                        │      │      │                 │具            │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │gwenview                │V:32, │11261 │图像(Exif)       │图片浏览器（  │
    │                        │I:104 │      │                 │KDE）         │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │KDE 上的支持数│
    │kamera                  │I:104 │748   │图像(Exif)       │码相机的应用软│
    │                        │      │      │                 │件            │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:3,  │      │                 │用于 KDE 桌面 │
    │digikam                 │I:16  │3639  │图像(Exif)       │环境的数字照片│
    │                        │      │      │                 │管理应用      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │exiv2                   │V:4,  │239   │图像(Exif)       │EXIF/IPTC 元数│
    │                        │I:60  │      │                 │据处理工具    │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:2,  │      │                 │改变数码照相机│
    │exiftran                │I:25  │71    │图像(Exif)       │的 jpeg 图像格│
    │                        │      │      │                 │式            │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │处理兼容 JPEG │
    │jhead                   │V:1,  │105   │图像(Exif)       │文件 (数码相机│
    │                        │I:12  │      │                 │图片) 的 Exif │
    │                        │      │      │                 │中的非图形部分│
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:1,  │      │                 │显示 JPEG 文件│
    │exif                    │I:12  │238   │图像(Exif)       │中的 EXIF 信息│
    │                        │      │      │                 │的命令行工具  │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │从数码相机的  │
    │exiftags                │V:0,  │288   │图像(Exif)       │JPEG 文件读取 │
    │                        │I:4   │      │                 │Exif 标签的实 │
    │                        │      │      │                 │用工具        │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │exifprobe               │V:0,  │490   │图像(Exif)       │从数码图片中读│
    │                        │I:3   │      │                 │取元数据      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │dcraw                   │V:2,  │384   │image(原始的)→ppm│解码原始的数码│
    │                        │I:23  │      │                 │相机图片      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │findimagedupes          │V:0,  │79    │image→fingerprint│找到相似或重复│
    │                        │I:1   │      │                 │的图像        │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:0,  │      │                 │合并图像来增加│
    │ale                     │I:0   │753   │image→image      │保真度或者用于│
    │                        │      │      │                 │创建马赛克    │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │imageindex              │V:0,  │144   │image(Exif)→html │从图形中创建静│
    │                        │I:0   │      │                 │态 HTML 图库  │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │V:0,  │      │                 │通用的        │
    │outguess                │I:2   │216   │jpeg,png         │Steganographic│
    │                        │      │      │                 │工具          │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │librecad                │V:10, │7929  │DXF              │CAD 数据编辑器│
    │                        │I:18  │      │                 │（KDE）       │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │blender                 │V:4,  │106780│blend, TIFF,     │用于动画的 3D │
    │                        │I:34  │      │VRML, …          │编辑器        │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │mm3d                    │V:0,  │4047  │ms3d, obj, dxf, …│基于 OpenGL 的│
    │                        │I:0   │      │                 │3D 模型编辑器 │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │open-font-design-toolkit│I:0   │10    │ttf, ps, …       │用于开放字型设│
    │                        │      │      │                 │计的元包      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │用于 PS，     │
    │fontforge               │V:0,  │91    │ttf, ps, …       │TrueType 和   │
    │                        │I:9   │      │                 │OpenType 的字 │
    │                        │      │      │                 │体编辑器      │
    ├────────────────────────┼──────┼──────┼─────────────────┼──────────────┤
    │                        │      │      │                 │用于TrueType  │
    │xgridfit                │V:0,  │876   │ttf              │字体的网格拟合│
    │                        │I:0   │      │                 │和小字还原技术│
    │                        │      │      │                 │的程序        │
    └───────────────────────────────────────────────────────────────────────┘


    [36;1m提示[m

    在 [34;1maptitude(8)[m （参考第 2.2.6 节 [35;1m“aptitude 搜索方式选项”[;m）中用正
    则表达式 [35;1m"~Gworks-with::image"[;m 来查找更多的图像工具。

    虽然像 [34;1mgimp(1)[m 这样的图形界面程序是非常强大的，但像 imagemagick
    (1) 这样的命令行工具在用脚本自动化处理图像时是很有用的。

    实际上的数码相机的图像是可交换的图像文件格式(EXIF)，这种格式是在
    JPEG 图像文件格式上添加一些元数据标签。它能够保存诸如日期、时间和
    相机设置的信息。

    The Lempel-Ziv-Welch (LZW)无损数据压缩专利已经过期了。使用 LZW 压
    缩方式的图形交互格式（GIF）工具现在可以在 Debian 系统上自由使用了
    。

    [36;1m提示[m

    任何带有可移动记录介质的数码相机或扫描仪都可以在 Linux 上通过 USB
    存储读取器来工作，因为它遵循相机文件系统设计规则并且使用 FAT 文件
    系统，参考第 10.1.7 节 [35;1m“可移动存储设备”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m11.7. 不同种类的数据转换工具[;m

    这里有许多其他用于数据转换的工具。在 [34;1maptitude(8)[m（参考第 2.2.6 节
    [35;1m“aptitude 搜索方式选项”[;m）里用正则表达式 [35;1m"~Guse::converting"[;m" 来查
    找如下的软件包。

    表 11.18. 不同种类的数据转换工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包  │流行│大小 │ 关键词  │              说明              │
    │         │ 度 │     │         │                                │
    ├─────────┼────┼─────┼─────────┼────────────────────────────────┤
    │alien    │V:3,│166  │rpm/     │把外来的软件包转换为 Debian 软件│
    │         │I:51│     │tgz→deb  │包                              │
    ├─────────┼────┼─────┼─────────┼────────────────────────────────┤
    │         │V:0,│     │         │把 [35;1m"电子书"[;m (在日本流行) 变成单 │
    │freepwing│I:0 │421  │EB→EPWING│一的 JIS X 4081 格式 (EPWING V1 │
    │         │    │     │         │的子集）                        │
    ├─────────┼────┼─────┼─────────┼────────────────────────────────┤
    │calibre  │V:7,│51519│any→EPUB │电子书转换器和库管理            │
    │         │I:40│     │         │                                │
    └───────────────────────────────────────────────────────────────┘


    你能够通过如下的命令从 RPM 格式的包中提取数据。

[33m[32;1m    $ rpm2cpio file.src.rpm | cpio --extract[;m[m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m第 12 章 编程[;m

    这里我给出一些 Debian 系统中的信息，帮助学习编程的人找出打包的源
    代码。下面是值得关注的软件包和与之对应的文档。

    表 12.1. 帮助编程的软件包清单

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包     │流行度 │大小 │               包                │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │autoconf       │V:34,  │1868 │由 autoconf-doc 包提供的“info    │
    │               │I:264  │     │autoconf”                        │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │automake       │V:33,  │1710 │由 automake1.10-doc 包提供的“info│
    │               │I:260  │     │automake”                        │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │bash           │V:835, │5776 │由 bash-doc 包提供的[35;1m“info bash”[;m  │
    │               │I:999  │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │bison          │V:11,  │2061 │由 bison-doc 包提供的[35;1m“info bison”[;m│
    │               │I:112  │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │cpp            │V:386, │42   │由 cpp-doc 包提供的[35;1m“info cpp”[;m    │
    │               │I:794  │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │ddd            │V:0,   │3929 │由 ddd-doc 包提供的[35;1m“info ddd”[;m    │
    │               │I:12   │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │exuberant-ctags│V:7,   │333  │[34;1mexuberant-ctags(1)[m               │
    │               │I:43   │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │flex           │V:10,  │1220 │由 flex-doc 包提供的[35;1m“info flex”[;m  │
    │               │I:100  │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │gawk           │V:420, │2196 │由 gawk-doc 包提供的[35;1m“info gawk”[;m  │
    │               │I:520  │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │gcc            │V:151, │45   │由 gcc-doc 包提供的[35;1m“info gcc”[;m    │
    │               │I:606  │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │gdb            │V:17,  │7928 │由 gdb-doc 包提供的[35;1m“info gdb”[;m    │
    │               │I:131  │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │gettext        │V:50,  │6502 │由 gettext-doc 包提供的“info     │
    │               │I:358  │     │gettext”                         │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │gfortran       │V:7,   │16   │由 gfortran-doc 包提供的“info    │
    │               │I:67   │     │gfortran”（Fortran 95）          │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │fpc            │I:4    │120  │[34;1mfpc(1)[m 和由 fp-docs 包提供的 html│
    │               │       │     │文档（Pascal）                   │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │glade          │V:1,   │2306 │通过 UI Builder 菜单提供的文档   │
    │               │I:9    │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │               │V:948, │     │通过 glibc-doc 和                │
    │libc6          │I:999  │11401│glibc-doc-reference 提供的“info  │
    │               │       │     │libc”                            │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │make           │V:153, │1292 │通过 make-doc 包提供的[35;1m“info make”[;m│
    │               │I:614  │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │xutils-dev     │V:1,   │1466 │[34;1mimake(1)[m，[34;1mxmkmf(1)[m 等。          │
    │               │I:15   │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │mawk           │V:339, │183  │[34;1mmawk(1)[m                          │
    │               │I:997  │     │                                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │perl           │V:591, │568  │[34;1mperl(1)[m 以及通过 perl-doc 和     │
    │               │I:993  │     │perl-doc-html 提供的 html 文档   │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │python         │V:622, │68   │[34;1mpython(1)[m 以及通过 python-doc 包 │
    │               │I:987  │     │提供的 html 文档                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │tcl            │V:29,  │21   │[34;1mtcl(3)[m 以及通过 tcl-doc 包提供的 │
    │               │I:440  │     │更详细的手册页文档               │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │tk             │V:31,  │21   │[34;1mtk(3)[m 以及通过 tk-doc 包提供的更 │
    │               │I:429  │     │详细的手册页文档                 │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │ruby           │V:166, │37   │[34;1mruby(1)[m 以及通过 ri 包提供的交互 │
    │               │I:344  │     │式参考手册                       │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │vim            │V:118, │2668 │通过 vim-doc 包提供的帮助（F1）菜│
    │               │I:400  │     │单                               │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │susv2          │I:0    │16   │通过[35;1m“单一UNIX规范（版本2）”[;m获取（│
    │               │       │     │英语文档）                       │
    ├───────────────┼───────┼─────┼─────────────────────────────────┤
    │susv3          │I:0    │16   │通过[35;1m“单一UNIX规范（版本3）”[;m获取（│
    │               │       │     │英语文档）                       │
    └───────────────────────────────────────────────────────────────┘


    安装 manpages 和 manpages-dev 包之后，可以通过运行[35;1m“man 名称”[;m查看
    手册页中的参考信息。安装了 GNU 工具的相关文档包之后，可以通过运行
    [35;1m“info 程序名称”[;m查看参考文档。某些 GFDL 协议的文档与 DFSG 并不兼容
    ，所以你可能需要在 main 仓库中包含 contrib 和 non-free 才能下载并
    安装它们。

    [31;1m警告[m

    不要用[35;1m“test”[;m作为可执行的测试文件的名字，因为 shell 中内建有[35;1m“test”[;m
    命令。

    [33;1m小心[m

    你可以把从源代码编译得到的程序直接放到[35;1m“/usr/local”[;m或[35;1m“/opt”[;m目录，
    这样可以避免与系统程序撞车。

    [36;1m提示[m

    [35;1m“歌曲：99瓶啤酒”[;m的代码示例可以给你提供实践各种语言的好范本。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.1. Shell 脚本[;m

    Shell 脚本是指包含有下面格式的可执行的文本文件。

[31;1m    #!/bin/sh[;m
    ……命令行

    第一行指明了读取并执行这个文件的 shell 解释器。

    读懂 shell 脚本的最好办法是先理解类 UNIX 系统是如何工作的。这里有
    一些 shell 编程的提示。看看[35;1m“Shell 错误”[;m（http://
    www.greenend.org.uk/rjk/2001/04/shell.html），可以从错误中学习。

    不像 shell 交互模式（参见第 1.5 节 [35;1m“简单 shell 命令”[;m 和第 1.6 节
    [35;1m“类 Unix 的文本处理”[;m），shell 脚本会频繁使用参数、条件和循环等。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.1.1. POSIX shell 兼容性[;m

    系统中的许多脚本都可以通过任意 POSIX shell（参见表 1.13 “shell 程
    序列表”）来执行。系统的默认 shell 是[35;1m“/bin/sh”[;m，它是某个实际 shell
    程序的链接。

[33;1m      *[;m 对 lenny 或更老的系统来说，它是 [34;1mbash(1)[m

[33;1m      *[;m 对 squeeze 或更新的系统来说，它是 [34;1mdash(1)[m

    避免编写具有 bashisms（bash 化）或者 zshisms（zsh 化）语法的
    shell 脚本，确保脚本在所有 POSIX shell 之间具有可移植性。你可以使
    用 [34;1mcheckbashisms(1)[m 对其进行检查。

    表 12.2. 典型 bashism 语法列表

    ┌───────────────────────────────────────────────────────────────┐
    │          好的：POSIX          │      应该避免的：bashism      │
    ├───────────────────────────────┼───────────────────────────────┤
    │if [ [35;1m"$foo"[;m = [35;1m"$bar"[;m ] ; then …│if [ [35;1m"$foo"[;m == [35;1m"$bar"[;m ] ; then │
    │                               │…                              │
    ├───────────────────────────────┼───────────────────────────────┤
    │diff -u file.c.orig file.c     │diff -u file.c{.orig,}         │
    ├───────────────────────────────┼───────────────────────────────┤
    │mkdir /foobar /foobaz          │mkdir /foo{bar,baz}            │
    ├───────────────────────────────┼───────────────────────────────┤
    │funcname() { … }               │function funcname() { … }      │
    ├───────────────────────────────┼───────────────────────────────┤
    │八进制格式：[35;1m"\377"[;m             │十六进制格式：[35;1m"\xff"[;m           │
    └───────────────────────────────────────────────────────────────┘


    使用 [35;1m"echo"[;m 命令的时候需要注意以下几个方面，因为根据内置 shell 和
    外部命令的不同，它的实现也有差别。

[33;1m      *[;m 避免使用除[35;1m“-n”[;m以外的任何命令行选项。

[33;1m      *[;m 避免在字符串中使用转义序列，因为根据 shell 不同，计算后的结果
        也不一样。

    [33;1m注意[m

    尽管[35;1m“-n”[;m选项并不是 POSIX 语法，但它已被广泛接受。

    [36;1m提示[m

    如果你想要在输出字符串中嵌入转义序列，用 [35;1m"printf"[;m 命令替代 [35;1m"echo"[;m
    命令。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.1.2. Shell 参数[;m

    特殊的 shell 参数经常在 shell 脚本里面被用到。

    表 12.3. shell 参数列表

    ┌────────────────────────────────────┐
    │shell 参数│           值            │
    ├──────────┼─────────────────────────┤
    │$0        │shell 或 shell 脚本的名称│
    ├──────────┼─────────────────────────┤
    │$1        │第一个 shell 参数        │
    ├──────────┼─────────────────────────┤
    │$9        │第 9 个 shell 参数       │
    ├──────────┼─────────────────────────┤
    │$#        │位置参数数量             │
    ├──────────┼─────────────────────────┤
    │[35;1m"$*"[;m      │[35;1m"$1 $2 $3 $4 … "[;m         │
    ├──────────┼─────────────────────────┤
    │[35;1m"$@"[;m      │[35;1m"$1"[;m [35;1m"$2"[;m [35;1m"$3"[;m [35;1m"$4"[;m …    │
    ├──────────┼─────────────────────────┤
    │$?        │最近一次命令的退出状态码 │
    ├──────────┼─────────────────────────┤
    │$$        │这个 shell 脚本的 PID    │
    ├──────────┼─────────────────────────┤
    │$!        │最近开始的后台任务 PID   │
    └────────────────────────────────────┘


    如下所示是需要记忆的基本的参数展开。

    表 12.4. shell 参数展开列表

    ┌───────────────────────────────────────────────────────────────┐
    │参数表达式形 │如果 var 变量已设置那│如果 var 变量没有被设置那么│
    │     式      │       么值为        │           值为            │
    ├─────────────┼─────────────────────┼───────────────────────────┤
    │$            │[35;1m"$var"[;m               │[35;1m"string"[;m                   │
    │{var:-string}│                     │                           │
    ├─────────────┼─────────────────────┼───────────────────────────┤
    │$            │[35;1m"string"[;m             │[35;1m"null"[;m                     │
    │{var:+string}│                     │                           │
    ├─────────────┼─────────────────────┼───────────────────────────┤
    │${var:=      │[35;1m"$var"[;m               │[35;1m"string"[;m (并运行 "var=     │
    │string}      │                     │string")                   │
    ├─────────────┼─────────────────────┼───────────────────────────┤
    │${var:?      │[35;1m"$var"[;m               │在 stderr 中显示 [35;1m"string"[;m  │
    │string}      │                     │(出错退出)                 │
    └───────────────────────────────────────────────────────────────┘


    以上这些操作中 [35;1m":"[;m 实际上都是可选的。

[33;1m      *[;m 有 [35;1m":"[;m 等于测试的 var 值是存在且非空

[33;1m      *[;m 没有 [35;1m":"[;m 等于测试的 var 值只是存在的，可以为空

    表 12.5. 重要的 shell 参数替换列表

    ┌──────────────────────────────────────────────────────┐
    │ 参数替换形式 │                 结果                  │
    ├──────────────┼───────────────────────────────────────┤
    │${var%suffix} │删除位于 var 结尾的 suffix 最小匹配模式│
    ├──────────────┼───────────────────────────────────────┤
    │${var%%suffix}│删除位于 var 结尾的 suffix 最大匹配模式│
    ├──────────────┼───────────────────────────────────────┤
    │${var#prefix} │删除位于 var 开头的 prefix 最小匹配模式│
    ├──────────────┼───────────────────────────────────────┤
    │${var##prefix}│删除位于 var 开头的 prefix 最大匹配模式│
    └──────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.1.3. Shell 条件语句[;m

    每个命令都会返回退出状态，这可以被条件语句使用。

[33;1m      *[;m 成功：0 ([35;1m"True"[;m)

[33;1m      *[;m 失败：非0 ([35;1m"False"[;m)

    [33;1m注意[m

    [35;1m"0"[;m 在 shell 条件语句中的意思是 [35;1m"True"[;m，然而 [35;1m"0"[;m 在 C 条件语句中
    的含义为 [35;1m"False"[;m。

    [33;1m注意[m

    [35;1m"["[;m 跟 test 命令是等价的，它评估到 [35;1m"]"[;m 之间的参数来作为一个条件表
    达式.

    如下所示是需要记忆的基础条件语法。

[33;1m      *[;m [35;1m"<command> && <if_success_run_this_command_too> || true"[;m

[33;1m      *[;m [35;1m"<command> || <if_not_success_run_this_command_too> || true"[;m

[33;1m      *[;m 如下所示是多行脚本片段

    if [ <conditional_expression> ]; then
     <if_success_run_this_command>
    else
     <if_not_success_run_this_command>
    fi

    这里末尾的[35;1m“|| true”[;m是需要的，它可以保证这个 shell 脚本在不小心使
    用了[35;1m“-e”[;m选项而被调用时不会在该行意外地退出。

    表 12.6. 在条件表达式中进行文件比较

    ┌───────────────────────────────────────────────────────────────┐
    │    表达式     │             返回逻辑真所需的条件              │
    ├───────────────┼───────────────────────────────────────────────┤
    │-e <file>      │<file> 存在                                    │
    ├───────────────┼───────────────────────────────────────────────┤
    │-d <file>      │<file> 存在并且是一个目录                      │
    ├───────────────┼───────────────────────────────────────────────┤
    │-f <file>      │<file> 存在并且是一个普通文件                  │
    ├───────────────┼───────────────────────────────────────────────┤
    │-w <file>      │<file> 存在并且可写                            │
    ├───────────────┼───────────────────────────────────────────────┤
    │-x <file>      │<file> 存在并且可执行                          │
    ├───────────────┼───────────────────────────────────────────────┤
    │<file1> -nt    │<file1> 是否比 <file2> 新                      │
    │<file2>        │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │<file1> -ot    │<file1> 是否比 <file2> 旧                      │
    │<file2>        │                                               │
    ├───────────────┼───────────────────────────────────────────────┤
    │<file1> -ef    │<file1> 和 <file2> 位于相同的设备上并且有相同的│
    │<file2>        │inode 编号                                     │
    └───────────────────────────────────────────────────────────────┘


    表 12.7. 在条件表达式中进行字符串比较

    ┌────────────────────────────────────────────────────────────┐
    │     表达式     │           返回逻辑真所需的条件            │
    ├────────────────┼───────────────────────────────────────────┤
    │-z <str>        │<str> 的长度为零                           │
    ├────────────────┼───────────────────────────────────────────┤
    │-n <str>        │<str> 的长度不为零                         │
    ├────────────────┼───────────────────────────────────────────┤
    │<str1> = <str2> │<str1> 和 <str2> 相等                      │
    ├────────────────┼───────────────────────────────────────────┤
    │<str1> != <str2>│<str1> 和 <str2> 不相等                    │
    ├────────────────┼───────────────────────────────────────────┤
    │<str1> < <str2> │<str1> 排列在 <str2> 之前（取决于语言环境）│
    ├────────────────┼───────────────────────────────────────────┤
    │<str1> > <str2> │<str1> 排列在 <str2> 之后（取决于语言环境）│
    └────────────────────────────────────────────────────────────┘


    算术整数的比较在条件表达式中为 [35;1m"-eq"[;m，[35;1m"-ne"[;m，[35;1m"-lt"[;m，[35;1m"-le"[;m，[35;1m"-gt"[;m
    和 [35;1m"-ge"[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.1.4. shell 循环[;m

    这里有几种可用于 POSIX shell 的循环形式。

[33;1m      *[;m [35;1m"for x in foo1 foo2 … ; do command ; done"[;m，该循环会将 "foo1
        foo2 …[35;1m" 赋予变量 "[;mx[35;1m" 并执行 "[;mcommand"。

[33;1m      *[;m [35;1m"while condition ; do command ; done"[;m，当 [35;1m"condition"[;m 为真时
        ，会重复执行 [35;1m"command"[;m。

[33;1m      *[;m [35;1m"until condition ; do command ; done"[;m，当 [35;1m"condition"[;m 为假时
        ，会重复执行 [35;1m"command"[;m。

[33;1m      *[;m [35;1m"break"[;m 可以用来退出循环。

[33;1m      *[;m [35;1m"continue"[;m 可以用来重新开始下一次循环。

    [36;1m提示[m

    C 语言中的数值迭代可以用 [34;1mseq(1)[m 实现来生成 [35;1m"foo1 foo2 ..."[;m。

    [36;1m提示[m

    参见第 9.3.9 节 [35;1m“使用文件循环来重复一个命令”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.1.5. shell 命令行的处理顺序[;m

    shell 大致以下列的顺序来处理一个脚本。

[33;1m      *[;m shell 读取一行。

[33;1m      *[;m 如果该行包含有[35;1m"…"[;m 或 [35;1m'…'[;m，shell 对该行各部分进行分组作为一个
        标识（one token）（译注：one token 是指 shell 识别的一个结构
        单元）.

[33;1m      *[;m shell 通过下列方式将行中的其它部分分隔进标识（tokens）。

[33;1m          +[;m 空白字符：<空格> <tab> <换行符>

[33;1m          +[;m 元字符：< > | ; & ( )

[33;1m      *[;m shell 会检查每一个不位于 [35;1m"…"[;m 或 [35;1m'...'[;m 的 token 中的保留字来调
        整它的行为。

[33;1m          +[;m 保留字：if then elif else fi for in while unless do done
            case esac

[33;1m      *[;m shell 展开不位于 [35;1m"…"[;m 或 [35;1m'...'[;m 中的别名。

[33;1m      *[;m shell 展开不位于 [35;1m"…"[;m 或 [35;1m'...'[;m 中的波浪线。

[33;1m          +[;m [35;1m"~"[;m → 当前用户的家目录

[33;1m          +[;m [35;1m"~<user>"[;m → <user> 的家目录

[33;1m      *[;m shell 将不位于 [35;1m'...'[;m 中的变量展开为它的值。

[33;1m          +[;m 变量：[35;1m"$PARAMETER"[;m 或 [35;1m"${PARAMETER}"[;m

[33;1m      *[;m shell 展开不位于 [35;1m'...'[;m 中的命令替换。

[33;1m          +[;m [35;1m"$( command )"[;m → [35;1m"command"[;m 的输出

[33;1m          +[;m [35;1m"` command `"[;m → [35;1m"command"[;m 的输出

[33;1m      *[;m shell 将不位于 [35;1m"…"[;m 或 [35;1m'...'[;m 中的 glob 路径展开为匹配的文件名
        。

[33;1m          +[;m * → 任何字符

[33;1m          +[;m ? → 一个字符

[33;1m          +[;m […] → 任何位于 [35;1m"…"[;m 中的字符

[33;1m      *[;m shell 从下列几方面查找命令并执行。

[33;1m          +[;m 函数定义

[33;1m          +[;m 内建命令

[33;1m          +[;m [35;1m“$PATH”[;m 中的可执行文件

[33;1m      *[;m shell 前往下一行，并按照这个顺序从头再次进行处理。

    双引号中的单引号是没有效果的。

    在 shell 中执行 [35;1m“set -x”[;m 或使用 [35;1m“-x”[;m 选项启动 shell 可以让 shell
    显示出所有执行的命令。这对调试来说是非常方便的。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.1.6. 用于 shell 脚本的应用程序[;m

    为了使你的 shell 程序在 Debian 系统上尽可能地具有可移植性，你应该
    只使用必要的软件包所提供的应用程序。

[33;1m      *[;m [35;1m"aptitude search ~E"[;m，列出必要的软件包。

[33;1m      *[;m [35;1m"dpkg -L <package_name> |grep [35;1m'/man/man.*/'[;m"[;m，列出
        <package_name> 软件包所提供的 man 手册。

    表 12.8. 包含用于 shell 脚本的小型应用程序的软件包

    ┌───────────────────────────────────────────────────────────┐
    │   软件包   │   流行度   │大小 │           说明            │
    ├────────────┼────────────┼─────┼───────────────────────────┤
    │coreutils   │V:892, I:999│15016│GNU 核心工具               │
    ├────────────┼────────────┼─────┼───────────────────────────┤
    │debianutils │V:946, I:999│214  │用于 Debian 的各种工具     │
    ├────────────┼────────────┼─────┼───────────────────────────┤
    │bsdmainutils│V:870, I:998│587  │来自 FreeBSD 更多的工具集合│
    ├────────────┼────────────┼─────┼───────────────────────────┤
    │bsdutils    │V:866, I:999│256  │来自 4.4BSD-Lite 的基础工具│
    ├────────────┼────────────┼─────┼───────────────────────────┤
    │moreutils   │V:4, I:23   │205  │额外的 Unix 工具           │
    └───────────────────────────────────────────────────────────┘


    [36;1m提示[m

    尽管 moreutils 可能不存在 Debian 之外，但它提供了一些有趣的小程序
    。最值得注意的一个是 [34;1msponge(8)[m，当你项覆盖原来的文件时，它会非常
    好用。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.1.7. shell 脚本对话框[;m

    一个简单的 shell 程序的用户界面中，echo 和 read 命令的交互性较为
    一般，你可以使用对话程序等来提升交互性。

    表 12.9. 用户界面程序列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包  │流行度 │大小│                  说明                  │
    ├─────────┼───────┼────┼────────────────────────────────────────┤
    │x11-utils│V:240, │631 │[34;1mxmessage(1)[m：在一个窗口中显示一条消息或 │
    │         │I:633  │    │疑问（X）                               │
    ├─────────┼───────┼────┼────────────────────────────────────────┤
    │whiptail │V:414, │74  │从 shell 脚本中显示用户友好的对话框（   │
    │         │I:996  │    │newt）                                  │
    ├─────────┼───────┼────┼────────────────────────────────────────┤
    │dialog   │V:18,  │1118│从 shell 脚本中显示用户友好的对话框（   │
    │         │I:132  │    │ncurses）                               │
    ├─────────┼───────┼────┼────────────────────────────────────────┤
    │zenity   │V:93,  │369 │从 shell 脚本中显示图形对话框（gtk2.0） │
    │         │I:403  │    │                                        │
    ├─────────┼───────┼────┼────────────────────────────────────────┤
    │ssft     │V:0,   │75  │Shell 脚本前端工具 (zenity, kdialog, and│
    │         │I:0    │    │带有 gettext 的 dialog 封装)            │
    ├─────────┼───────┼────┼────────────────────────────────────────┤
    │gettext  │V:50,  │6502│[35;1m“/usr/bin/gettext.sh”[;m：翻译信息         │
    │         │I:358  │    │                                        │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.1.8. zenity 的 shell 脚本案例[;m

    下面是一个简单的脚本，它通过 [34;1mdvdisaster(1)[m 创建了带有 RS02 补充数
    据的 ISO 映像。

[31;1m    #!/bin/sh -e[;m
[31;1m    # gmkrs02 : Copyright (C) 2007 Osamu Aoki <osamu@debian.org>, Public Domain[;m
[31;1m    #set -x[;m
    error_exit()
    {
      echo [35;1m"$1"[;m >&2
      exit 1
    }
[31;1m    # Initialize variables[;m
    DATA_ISO=[35;1m"$HOME/Desktop/iso-$$.img"[;m
    LABEL=$(date +%Y%m%d-%H%M%S-%Z)
    if [ $# != 0 ] && [ -d [35;1m"$1"[;m ]; then
      DATA_SRC=[35;1m"$1"[;m
    else
[31;1m      # Select directory for creating ISO image from folder on desktop[;m
[33m      DATA_SRC=$(zenity --file-selection --directory  \[m
[33m        --title=[35;1m"Select the directory tree root to create ISO image"[;m) \[m
        || error_exit [35;1m"Exit on directory selection"[;m
    fi
[31;1m    # Check size of archive[;m
    xterm -T [35;1m"Check size $DATA_SRC"[;m -e du -s $DATA_SRC/*
    SIZE=$(($(du -s $DATA_SRC | awk [35;1m'{print $1}'[;m)/1024))
    if [ $SIZE -le 520 ] ; then
[33m      zenity --info --title=[35;1m"Dvdisaster RS02"[;m --width 640  --height 400 \[m
[33m        --text=[35;1m"The data size is good for CD backup:\\n $SIZE MB"[;m[m
    elif [ $SIZE -le 3500 ]; then
[33m      zenity --info --title=[35;1m"Dvdisaster RS02"[;m --width 640  --height 400 \[m
[33m        --text=[35;1m"The data size is good for DVD backup :\\n $SIZE MB"[;m[m
    else
[33m      zenity --info --title=[35;1m"Dvdisaster RS02"[;m --width 640  --height 400 \[m
[33m        --text=[35;1m"The data size is too big to backup : $SIZE MB"[;m[m
      error_exit [35;1m"The data size is too big to backup :\\n $SIZE MB"[;m
    fi
[31;1m    # only xterm is sure to have working -e option[;m
[31;1m    # Create raw ISO image[;m
    rm -f [35;1m"$DATA_ISO"[;m || true
    xterm -T [35;1m"genisoimage $DATA_ISO"[;m \
      -e genisoimage -r -J -V [35;1m"$LABEL"[;m -o [35;1m"$DATA_ISO"[;m [35;1m"$DATA_SRC"[;m
[31;1m    # Create RS02 supplemental redundancy[;m
    xterm -T [35;1m"dvdisaster $DATA_ISO"[;m -e  dvdisaster -i [35;1m"$DATA_ISO"[;m -mRS02 -c
[33m    zenity --info --title=[35;1m"Dvdisaster RS02"[;m --width 640  --height 400 \[m
[33m      --text=[35;1m"ISO/RS02 data ($SIZE MB) \\n created at: $DATA_ISO"[;m[m
[31;1m    # EOF[;m

    你可能想要在桌面创建一个启动器，其中的命令设置为类似 “/usr/local/
    bin/gmkrs02 %d” 的形式。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.2. make[;m

    Make 是一个维护程序组的工具。一旦执行 [34;1mmake(1)[m，make 会读取规则文
    件 Makefile，自从上次目标文件被修改后，如果目标文件依赖的相关文件
    发生了改变，那么就会更新目标文件，或者目标文件不存在，那么这些文
    件更新可能会同时发生。

    规则文件的语法如下所示。

    目标：[相关文件 ...]
    [TAB] 命令1
    [TAB] -命令2 # 忽略错误
    [TAB] @命令3 # 禁止回显

    这里面的 [35;1m"[TAB]"[;m 是一个 TAB 代码。每一行在进行变量替换以后会被
    shell 解释。在行末使用 [35;1m"\"[;m 来继续此脚本。使用 [35;1m"$$"[;m 输入 [35;1m"$"[;m 来获
    得 shell 脚本中的环境变量值。

    目标跟相关文件也可以通过隐式规则给出，例如，如下所示。

    %.o: %.c header.h

    在这里，目标包含了 [35;1m"%"[;m 字符 (只是它们中确切的某一个）。[35;1m"%"[;m 字符能
    够匹配实际的目标文件中任意一个非空的子串。相关文件同样使用 [35;1m"%"[;m 来
    表明它们是怎样与目标文件建立联系的。

    表 12.10. 自动变量的列表

    ┌─────────────────────────────────────────────────┐
    │自动变量│                   值                   │
    ├────────┼────────────────────────────────────────┤
    │$@      │当前目标                                │
    ├────────┼────────────────────────────────────────┤
    │$<      │首个相关文件                            │
    ├────────┼────────────────────────────────────────┤
    │$?      │所有较新的相关文件                      │
    ├────────┼────────────────────────────────────────┤
    │$^      │所有相关文件                            │
    ├────────┼────────────────────────────────────────┤
    │$*      │目标模式中，$* 指代匹配符 [35;1m"%"[;m 匹配的部分│
    └─────────────────────────────────────────────────┘


    表 12.11. 变量扩展的列表

    ┌──────────────────────┐
    │ 变量扩展  │   说明   │
    ├───────────┼──────────┤
    │foo1 := bar│一次性扩展│
    ├───────────┼──────────┤
    │foo2 = bar │递归扩展  │
    ├───────────┼──────────┤
    │foo3 += bar│增加      │
    └──────────────────────┘


    运行 [35;1m"make -p -f/dev/null"[;m 命令来查看内部自动化的规则。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.3. C[;m

    你可以通过下列方法设置适当的环境来编译使用 C 编程语言编写的程序。

[31;1m    # apt-get install glibc-doc manpages-dev libc6-dev gcc build-essential[;m

    libc6-dev 软件包，即 GNU C 库，提供了 C 标准库，它包含了 C 编程语
    言所使用的头文件和库例程。

    参考信息如下。

[33;1m      *[;m [35;1m“info libc”[;m（C 库函数参考）

[33;1m      *[;m [34;1mgcc(1)[m 和 [35;1m“info gcc”[;m

[33;1m      *[;m [34;1meach_C_library_function_name(3)[m

[33;1m      *[;m Kernighan & Ritchie，[35;1m“C 程序设计语言”[;m，第二版（Prentice Hall
        ）

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.3.1. 简单的 C 程序（gcc）[;m

    一个简单的例子 [35;1m“example.c”[;m 可以通过如下方式和 [35;1m“libm”[;m 库一起编译为
    可执行程序 [35;1m“run_example”[;m。

[32;1m    $ cat > example.c << EOF[;m
[31;1m    #include <stdio.h>[;m
[31;1m    #include <math.h>[;m
[31;1m    #include <string.h>[;m

    int main(int argc, char **argv, char **envp){
            double x;
            char y[11];
            x=sqrt(argc+7.5);
            strncpy(y, argv[0], 10); /* prevent buffer overflow */
            y[10] = [35;1m'\0'[;m; /* fill to make sure string ends with [35;1m'\0'[;m */
            printf([35;1m"%5i, %5.3f, %10s, %10s\n"[;m, argc, x, y, argv[1]);
            return 0;
    }
    EOF
[32;1m    $ gcc -Wall -g -o run_example example.c -lm[;m
[32;1m    $ ./run_example[;m
            1, 2.915, ./run_exam,     (null)
[32;1m    $ ./run_example 1234567890qwerty[;m
            2, 3.082, ./run_exam, 1234567890qwerty

    为了使用 [34;1msqrt(3)[m，必须使用 [35;1m“-lm”[;m 链接来自 libc6 软件包的库 “/usr/
    lib/libm.so”。实际的库文件位于 [35;1m“/lib/”[;m，文件名为 [35;1m“libm.so.6”[;m，它
    是指向 [35;1m“libm-2.7.so”[;m 的一个链接。

    请看一下输出文本的最后一段。即使指定了 [35;1m“%10s”[;m，它依旧超出了 10 个
    字符。

    使用没有边界检查的指针内存操作函数，比如 [34;1msprintf(3)[m 和 [34;1mstrcpy(3)[m,
    是不建议使用，是为防止缓存溢出泄露而导致上面的溢出问题。请使用
    [34;1msnprintf(3)[m 和 [34;1mstrncpy(3)[m 来替代.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4. 调试[;m

    调试是程序中很重要的一部分。知道怎样去调试程序使得作为 Debian 使
    用者的你, 能够做出有意义的错误报告。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4.1. 基本的 gdb 使用命令[;m

    Debian 上原始的调试器是 [34;1mgdb(1)[m, 它能让你在程序执行的时候检查程序
    。

    让我们通过如下所示的命令来安装 gdb 及其相关程序。

[31;1m    # apt-get install gdb gdb-doc build-essential devscripts[;m

    gdb 的好的教程由 [35;1m"info gdb"[;m 提供或者可以在网上的其他地方找到。如
    下是用 [34;1mgdb(1)[m 在[35;1m"程序"[;m带有 [35;1m"-g"[;m 选项编译的时候来产生调试信息。

[32;1m    $ gdb program[;m
    (gdb) b 1                # 在第一行设置断点
    (gdb) run args           # 带参数运行程序
    (gdb) next               # 执行下一步
    ...
    (gdb) step               # 单步进入
    ...
    (gdb) p parm             # 打印 parm 的值
    ...
    (gdb) p parm=12          # 把值设为 12
    ...
    (gdb) quit

    [36;1m提示[m

    许多 [34;1mgdb(1)[m 命令都能被缩写。Tab 扩展跟在 shell 一样都能工作。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4.2. 调试 Debian 软件包[;m

    因为在 Debian 系统上默认所有已安装的二进制程序都是精简的，绝大多
    数的调试符号已经从常规的软件包中移除了。为了能用 [34;1mgdb(1)[m 调试
    Debian 软件包，相对应的 *-dbg 软件包或 *-dbgsym 软件包需要被安装
    (例如 libc6 需要安装 libc6-dbg，coreutils 需要安装
    coreutils-dbgsym)。

    老式的软件包将提供相应的 *-dbg 软件包。它将和原始软件包一起，直接
    放在 Debian main 档案库。对于新的软件包，当它们编译时，将会自动产
    生 *-dbgsym 软件包，那些调试软件包将被独立放在 debian-debug 档案
    库. 更多信息请参阅 Debian Wiki 文档 .

    如果一个需要被调试的软件包没有提供其 *-dbg 软件包或 *-dbgsym 软件
    包，你需要按如下所示的从源代码中重构并且安装它。

[32;1m    $ mkdir /path/new ; cd /path/new[;m
[32;1m    $ sudo apt-get update[;m
[32;1m    $ sudo apt-get dist-upgrade[;m
[32;1m    $ sudo apt-get install fakeroot devscripts build-essential[;m
[32;1m    $ apt-get source package_name[;m
[32;1m    $ cd package_name*[;m
[32;1m    $ sudo apt-get build-dep ./[;m

    按需修改 bug。

    软件包调试版本跟它的官方 Debian 版本不冲突，例如当重新编译已存在
    的软件包版本产生的 [35;1m"+debug1"[;m 后缀，如下所示是编译未发行的软件包版
    本产生的 [35;1m"~pre1"[;m 后缀。

[32;1m    $ dch -i[;m

    如下所示编译并安装带有调试符号的软件包。

[32;1m    $ export DEB_BUILD_OPTIONS=nostrip,noopt[;m
[32;1m    $ debuild[;m
[32;1m    $ cd ..[;m
[32;1m    $ sudo debi package_name*.changes[;m

    你需要检查软件包的构建脚本并确保编译二进制的时候使用了 "CFLAGS=-g
    -Wall" 选项。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4.3. 获得栈帧[;m

    当你碰到程序崩溃的时候，报告 bug 时附上栈帧信息是个不错的注意。

    如下所示的步骤就可以取得栈帧信息。

[33;1m      *[;m 在 [34;1mgdb(1)[m 中运行程序。

[33;1m      *[;m 重现崩溃。

[33;1m          +[;m 它使得你重新回到 gdb 提示符。

[33;1m      *[;m 在 gdb 提示符后输入 [35;1m"bt"[;m。

    程序在终端中的 gdb 环境运行时，如果它没反应，你可以按下 Ctrl-C来
    中止程序来取得 gdb 提示符。

    [36;1m提示[m

    通常，你会看到堆栈顶部有一行或者多行有 [35;1m"malloc()"[;m 或 "g_malloc()
    ".当这个出现的时候，你的堆栈不是非常有用的。找到一些有用信息的一
    个简单方法是设置环境变量 [35;1m"$MALLOC_CHECK_"[;m 的值为 2 ([34;1mmalloc(3)[m).你
    可以通过下面的方式在运行 gdb 时设置。

[32;1m     $ MALLOC_CHECK_=2 gdb hello[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4.4. 高级 gdb 命令[;m

    表 12.12. 高级 gdb 命令列表

    ┌───────────────────────────────────────────────────────────────┐
    │          命令          │            命令用途的描述            │
    ├────────────────────────┼──────────────────────────────────────┤
    │(gdb) thread apply all  │得到多线程程序的所有线程栈帧          │
    │bt                      │                                      │
    ├────────────────────────┼──────────────────────────────────────┤
    │(gdb) bt full           │查看函数调用栈中的参数信息            │
    ├────────────────────────┼──────────────────────────────────────┤
    │(gdb) thread apply all  │和前面的选项一起得到堆栈和参数        │
    │bt full                 │                                      │
    ├────────────────────────┼──────────────────────────────────────┤
    │(gdb) thread apply all  │得到前10个调用的栈帧和参数信息，以此来│
    │bt full 10              │去除不相关的输出                      │
    ├────────────────────────┼──────────────────────────────────────┤
    │(gdb) set logging on    │把 gdb 的日志输出到文件 (默认的是     │
    │                        │[35;1m"gdb.txt"[;m)                            │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4.5. 调试与 X 相关的错误[;m

    如果一个 GNOME 程序 preview1 收到了一个 X 错误，您应当看见一条下
    面这样的信息。

    [35;1m'preview1'[;m 程序出现 X 桌面系统错误。

[33m    如果就是这种情况，你可以尝试在运行程序的时候加上 [35;1m"--sync"[;m 选项，[m
    并且在 [35;1m"gdk_x_error"[;m 函数处设置中断来获得栈帧信息。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4.6. 检查库依赖性[;m

    按如下所示使用 [34;1mldd(1)[m 来找出程序的库依赖性。

[32;1m    $ ldd /bin/ls[;m
            librt.so.1 => /lib/librt.so.1 (0x4001e000)
            libc.so.6 => /lib/libc.so.6 (0x40030000)
            libpthread.so.0 => /lib/libpthread.so.0 (0x40153000)
            /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

    因为 [34;1mls(1)[m 运行在 `chroot`ed 环境，以上的库在 `chroot`ed 环境也必
    须是可用的。

    参见第 9.3.6 节 [35;1m“跟踪程序活动”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4.7. 内存泄漏检测工具[;m

    Debian 上有一些可用的内存泄漏检测工具。

    表 12.13. 内存泄漏检测工具的列表

    ┌───────────────────────────────────────────────────────────────┐
    │    软件包    │  流行度   │大小 │             说明             │
    ├──────────────┼───────────┼─────┼──────────────────────────────┤
    │libc6-dev     │V:286,     │18102│[34;1mmtrace(1)[m：调试 glibc 中的    │
    │              │I:621      │     │malloc                        │
    ├──────────────┼───────────┼─────┼──────────────────────────────┤
    │valgrind      │V:7, I:54  │72218│内存调试器和分析器            │
    ├──────────────┼───────────┼─────┼──────────────────────────────┤
    │electric-fence│V:0, I:5   │70   │malloc(e) 调试器              │
    ├──────────────┼───────────┼─────┼──────────────────────────────┤
    │leaktracer    │V:0, I:2   │56   │C++ 程序内存泄露跟踪器        │
    ├──────────────┼───────────┼─────┼──────────────────────────────┤
    │libdmalloc5   │V:0, I:3   │360  │内存分配库调试                │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4.8. 静态代码分析工具[;m

    如下是类似 lint 的静态代码分析工具。

    表 12.14. 静态代码分析工具的列表

    ┌───────────────────────────────────────────────────────────────┐
    │   软件包    │ 流行度  │大小│               说明               │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │splint       │V:0, I:4 │2239│静态检查 C 程序 bug 的工具        │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │flawfinder   │V:0, I:0 │175 │检查 C/C++ 源代码和查找安全漏洞的 │
    │             │         │    │工具                              │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │perl         │V:591,   │568 │带有内部静态代码检测的解释器：    │
    │             │I:993    │    │B::Lint(3perl)                    │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │pylint       │V:6, I:17│2648│Python 代码静态检查器             │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │weblint-perl │V:0, I:2 │35  │用于 HTML 的小巧的语法检查器      │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │linklint     │V:0, I:1 │343 │快速的网站维护工具及链接检查器    │
    ├─────────────┼─────────┼────┼──────────────────────────────────┤
    │libxml2-utils│V:21,    │169 │使用 [34;1mxmllint(1)[m 来检查 XML 文件   │
    │             │I:304    │    │                                  │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.4.9. 反汇编二进制程序[;m

    你可以使用下面的方式通过 [34;1mobjdump(1)[m 反编译二进制代码。

[32;1m    $  objdump -m i386 -b binary -D /usr/lib/grub/x86_64-pc/stage1[;m

    [33;1m注意[m

    [34;1mgdb(1)[m 可以用来交互式反汇编代码。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.5. Flex — 一个更好的 Lex[;m

    Flex 是兼容 Lex 的快速语法分析程序生成器。

    可以使用 [35;1m“info flex”[;m 查看 [34;1mflex(1)[m 的教程。

    你需要提供你自己的 [35;1m"main()"[;m 和 [35;1m"yywrap()"[;m.否则，你的 flex 程序，
    看起来像这样的，编译的时候将不会带库。这是因为 [35;1m"yywrap"[;m 是一个宏
    ， [35;1m"%option main"[;m 隐性打开了 [35;1m"%option noyywrap"[;m.

    %option main
    %%
    .|\n    ECHO ;
    %%

    另外一种方法，在你的 [34;1mcc(1)[m 命令行结尾，你可以使用编译链接器选项，
    [35;1m"-lfl"[;m。(像使用 [35;1m"-ll"[;m 的 AT&T-Lex ). 在这种情况下，不需要
    [35;1m"%option"[;m.

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.6. Bison — 一个更好的 Yacc[;m

    在 Debian 里，有几个软件包提供 Yacc兼容的前瞻性的 LR 解析或 LALR
    解析的生成器。

    表 12.15. 兼容 Yacc 的 LALR 解析器生成器列表

    ┌───────────────────────────────────────────────────────────┐
    │软件包│  流行度   │大小│               说明                │
    ├──────┼───────────┼────┼───────────────────────────────────┤
    │bison │V:11, I:112│2061│GNU LALR 解析器生成器              │
    ├──────┼───────────┼────┼───────────────────────────────────┤
    │byacc │V:0, I:6   │160 │伯克利（Berkeley）LALR 解析器生成器│
    ├──────┼───────────┼────┼───────────────────────────────────┤
    │btyacc│I:0        │207 │基于 byacc 的回溯解析生成器        │
    └───────────────────────────────────────────────────────────┘


    可以使用 [35;1m“info bison”[;m 查看 [34;1mbison(1)[m 的教程。

    你需要提供你自己的的 [35;1m"main()"[;m 和 [35;1m"yyerror()"[;m.通常，Flex 创建的
    [35;1m"main()"[;m 调用 [35;1m"yyparse()"[;m，它又调用了 [35;1m"yylex()"[;m.

     %%

     %%

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.7. Autoconf[;m

    autoconf 是一种用于自动生成软件源代码包配置 shell 脚本的工具，以
    适应使用完整 GNU 构建系统的各种类 Unix 系统。

    [34;1mautoconf(1)[m 生成配置脚本 [35;1m“configure”[;m。[35;1m“configure”[;m 使用
    [35;1m“Makefile.in”[;m 模板自动生成一个自定义的 [35;1m“Makefile”[;m。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.7.1. 编译并安装程序[;m

    [31;1m警告[m

    当你安装编译好的程序的时候，注意不要覆盖系统文件。

    Debian 不会在 [35;1m"/usr/local"[;m 或 [35;1m"/opt"[;m 目录下创建文件。如果你想要源
    码编译程序，把它安装到 [35;1m"/usr/local/"[;m 目录下，因为这并不会影响到
    Debian。

[32;1m    $ cd src[;m
[33m[32;1m    $ ./configure --prefix=/usr/local[;m[m
[32;1m    $ make[;m
[32;1m    $ make install # 这一步是把文件安装到系统上[;m

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.7.2. 卸载程序[;m

    如果你有源码并且它使用 [34;1mautoconf(1)[m/[34;1mautomake(1)[m，如果你能记得你是
    怎样配置它的话，执行如下的命令来卸载程序。

[32;1m    $ ./configure "all-of-the-options-you-gave-it"[;m
[31;1m    # make uninstall[;m

    或者，如果你十分确信安装进程把文件都放在了 [35;1m"/usr/local/"[;m 下并且这
    里没什么重要的东西，你可以通过如下的命令来清除它所有的内容。

[31;1m    # find /usr/local -type f -print0 | xargs -0 rm -f[;m

    如果你不确定文件被安装到了哪里，你可以考虑使用 checkinstall 软件
    包中的 [34;1mcheckinstall(8)[m，它将会提供一个清晰的卸载路径。现在，它支
    持创建带有 [35;1m“-D”[;m 选项的 Debian 软件包。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.8. Perl 短脚本的疯狂[;m

    虽然任何 AWK 脚本都可以通过 [34;1ma2p(1)[m 转换成 Perl，但单行的 AWK 脚本
    最好还是手动转换为单行的 Perl 脚本。

    让我们来看看下面这个 AWK 脚本片段。

    awk [35;1m'($2==[35;1m"1957"[;m) { print $3 }'[;m |

    这等价于下列的任意一行。

    perl -ne [35;1m'@f=split; if ($f[1] eq [35;1m"1957"[;m) { print [35;1m"$f[2]\n"[;m}'[;m |

    perl -ne [35;1m'if ((@f=split)[1] eq [35;1m"1957"[;m) { print [35;1m"$f[2]\n"[;m}'[;m |

    perl -ne [35;1m'@f=split; print $f[2] if ( $f[1]==1957 )'[;m |

    perl -lane [35;1m'print $F[2] if $F[1] eq [35;1m"1957"[;m'[;m |

    perl -lane [35;1m'print$F[2]if$F[1]eq+1957'[;m |

    最后一个简直就是个迷。它用上了下面列出的这些 Perl 的特性。

[33;1m      *[;m 空格为可选项。

[33;1m      *[;m 存在从数字到字符串的自动转换。

    更多的命令行选项参见 [34;1mperlrun(1)[m。想要更疯狂的 Perl 脚本，可以使用
    Perl Golf。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.9. Web[;m

    基本的动态交互网页可由如下方法制作。

[33;1m      *[;m 呈现给浏览器用户的是 HTML 形式。

[33;1m      *[;m 填充并点击表单条目将会从浏览器向 web 服务器发送带有编码参数的
        下列 URL 字符串之一。

[33;1m          +[;m "http://www.foo.dom/cgi-bin/program.pl?VAR1=VAL1&VAR2=
            VAL2&VAR3=VAL3"

[33;1m          +[;m "http://www.foo.dom/cgi-bin/program.py?VAR1=VAL1&VAR2=
            VAL2&VAR3=VAL3"

[33;1m          +[;m "http://www.foo.dom/program.php?VAR1=VAL1&VAR2=VAL2&VAR3=
            VAL3"

[33;1m      *[;m 在 URL 里面 [35;1m"%nn"[;m 是使用一个 16 进制字符的 nn 值代替。

[33;1m      *[;m 环境变量设置为: [35;1m"QUERY_STRING="[;mVAR1=VAL1 VAR2=VAL2 VAR3=
        VAL3[35;1m""[;m.

[33;1m      *[;m Web服务器上的CGI程序 (任何一个 [35;1m"program.*"[;m)在执行时，都会使用
        [35;1m"$QUERY_STRING"[;m环境变量.

[33;1m      *[;m CGI 程序的 stdout发送到浏览器，作为交互式的动态 web 页面展示
        。

    出于安全考虑，最好不要自己从头编写解析CGI参数的手艺. 在Perl和
    Python中有现有的模块可以使用. PHP 中包含这些功能. 当需要客户端数
    据存储时, 可使用HTTP cookies . 当需要处理客户端数据时, 通常使用
    Javascript.

    更多信息，参见通用网关接口, Apache 软件基金会, 和 JavaScript.

    直接在浏览器地址中输入 http://www.google.com/search?hl=en&ie=
    UTF-8&q=CGI+tutorial 就可以在 Google 上搜索 [35;1m“CGI tutorial”[;m。这是
    在 Google 服务器上查看 CGI 脚本运行的好方法。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.10. 源代码转换[;m

    源代码转换程序。

    表 12.16. 源代码转换工具列表

    ┌───────────────────────────────────────────────────────────────┐
    │ 软件包  │ 流行度 │大 │ 关键词  │             说明             │
    │         │        │小 │         │                              │
    ├─────────┼────────┼───┼─────────┼──────────────────────────────┤
    │perl     │V:591,  │568│AWK→PERL │把源代码从 AWK 转换为 PERL:   │
    │         │I:993   │   │         │[34;1ma2p(1)[m                        │
    ├─────────┼────────┼───┼─────────┼──────────────────────────────┤
    │f2c      │V:0, I:8│430│FORTRAN→C│把源代码从 FORTRAN 77 转换成 C│
    │         │        │   │         │/C++: [34;1mf2c(1)[m                  │
    ├─────────┼────────┼───┼─────────┼──────────────────────────────┤
    │intel2gas│V:0, I:0│174│intel→gas│从 NASM (Intel 格式)转换成 GNU│
    │         │        │   │         │汇编程序(GAS)                 │
    └───────────────────────────────────────────────────────────────┘


[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
[37;1m12.11. 制作 Debian 包[;m

    如果你想制作一个 Debian 包，阅读下面内容。

[33;1m      *[;m 第 2 章 Debian 软件包管理理解基本的包管理系统

[33;1m      *[;m 第 2.7.13 节 [35;1m“移植一个软件包到 stable 系统”[;m 理解基本的移植过
        程

[33;1m      *[;m 第 9.10.4 节 [35;1m“Chroot 系统”[;m 理解基本的 chroot 技术

[33;1m      *[;m [34;1mdebuild(1)[m, [34;1mpbuilder(1)[m 和 [34;1mpdebuild(1)[m

[33;1m      *[;m 第 12.4.2 节 [35;1m“调试 Debian 软件包”[;m 编译和除错

[33;1m      *[;m Debian 新维护者指引作为一个教程(maint-guide 包)

[33;1m      *[;m Debian 开发者参考手册 (developers-reference 包)

[33;1m      *[;m Debian 策略手册 (debian-policy 包)

[33;1m      *[;m Debian 维护者指引 (debmake-doc 包)

    debmake, dh-make, dh-make-perl 等软件包，对软件包打包过程，也有帮
    助。

[33m                           -- Osamu Aoki (青木修), Debian 参考手册（版本 2.73）[m
%
如何使用 reportbug 在 Debian 中报告问题
───────────────────────────────────────
https://www.debian.org/Bugs/Reporting.zh-cn.html

  我们强烈建议您在 Debian 中报告问题、缺陷与错误时使用 reportbug 程序。

  reportbug 在大多数系统上已默认安装。
  如果在您的系统上暂时不可用，您可以使用软件包管理工具进行安装。

  reportbug 工具可以从图形界面系统菜单中的"系统"分区中找到并启动，
  您也可以在命令行输入 reportbug 来启动它。

  该程序将引导您一步一步完成缺陷报告流程。

  如果您对 reportbug 提供的交互式功能有疑问或者其功能无法满足您的需求的话，
  请参考本文后面叙述的文档内容，或者在 Debian 用户邮件列表（英文）[1]
  询问。

[1] mailto:debian-user@lists.debian.org
%
自由的重新分发

Debian 组件的许可证不得限制任何一方将此软件作为含有
 若干不同来源的程序的一套软件集合中的一个组件用于销售或者捐赠。
该许可证不得向诸如此类销售行为的销售方索取专利费或者其它费用。

[33m    -- Debian [32m《Debian 自由软件方针》[m第一条[m
%
源代码

程序必须包括源代码，而且必须允许以源代码以及预先编译好的形式发行。

[33m    -- Debian [32m《Debian 自由软件方针》[m第二条[m
%
作品的衍生

许可证必须允许对其所属作品的修改以及衍生，而且必须允许这些作品在原始
软件的许可证条款下发行。

[33m    -- Debian [32m《Debian 自由软件方针》[m第三条[m
%
作者源代码的完整性

许可证只有在允许"补丁文件"随其所属作品的源代码一同发行，
以便在编译时修改程序 的情况之下，方可限制对其所属作品的
源代码在发行时的修改行为。许可证必须清楚表明用已修改的
源代码编译而成的软件，是允许发行的。许可证可要求衍生软
件使用有别于原来软件的名称或者版本号。( 这是一种妥协，
Debian 组织鼓励所有作者不要限制任何源代码文件或者二进制文件的修改。) 

[33m    -- Debian [32m《Debian 自由软件方针》[m第四条[m
%
禁止歧视人士或者组织

许可证不能歧视任何人士或者由多人组成的组织。

[33m    -- Debian [32m《Debian 自由软件方针》[m第五条[m
%
禁止歧视用途

许可证不能歧视程序可以被用于的任何特定领域。
例如，许可证不得限制程序用于商业或者基因研究。

[33m    -- Debian [32m《Debian 自由软件方针》[m第六条[m
%
许可证的发行

程序附带的权利必须适用于程序再次 发行的每一个受众，
无需他们再执行一个附加的许可证。

[33m    -- Debian [32m《Debian 自由软件方针》[m第七条[m
%
许可证不能特定于 Debian

程序附带的权利不能由该程序是否为 Debian 的一部分来决定。
如果这个程序从 Debian 中摘取出 来，即使在 Debian 之外但
仍然在该程序的许可证条款下使用 或者发行，那么它再次发行
的每一个受众都将拥有和那些在该 程序与 Debian 系统结合时
被授予的完全相同的权利。 

[33m    -- Debian [32m《Debian 自由软件方针》[m第八条[m
%
许可证的规定不得污染其他软件

许可证不得对其他与此软件一同分发的软件作出任何限制的规定。
例如，许可证不得要求所有与它在同一媒体中一同分发的软件都是自由软件。

[33m    -- Debian [32m《Debian 自由软件方针》[m第九条[m
%
许可证示例

"GPL"、 "BSD" 和 "Artistic" 均是我们视为"自由"的许可证的示例。

[33m    -- Debian [32m《Debian 自由软件方针》[m第十条[m
%
[1;36m  │[;m
[1;36m  │[;m scp [0;33mfiles[;m [0;33muser@host:path[;m
[1;36m  │[;m
[1;36m  │[;m 复制文件到其他机器(或者相反)。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m ssh -X [0;33muser@host[;m
[1;36m  │[;m
[1;36m  │[;m 在别的机器上登录。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m /sbin/ip
[1;36m  │[;m
[1;36m  │[;m 显示和操作网络接口和路由，需要 [0;36miproute2[;m。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [1;35m/etc/network/interfaces[;m
[1;36m  │[;m
[1;36m  │[;m 根据上述文件的配置来启动，停止网络接口。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m ifup, ifdown [1;33m[[;m[0;33mdevice[;m[1;33m][;m
[1;36m  │[;m
[1;36m  │[;m 启动，停止网络接口
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[33m[1;36m  │[;m dpkg [0;36m--get-selections[;m > [0;33mfile[;m[m
[1;36m  │[;m
[1;36m  │[;m 将软件包选择写入文件。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[33m[1;36m  │[;m dpkg [0;36m--compare-versions [;m [0;36m [;m [0;33mv1[;m gt [0;33mv2[;m[m
[1;36m  │[;m
[1;36m  │[;m 比较版本号，使用 [1;32mecho $?[;m 来检查结果。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m dpkg-divert [1;33m[[;moptions[1;33m][;m [0;33mfile[;m
[1;36m  │[;m
[1;36m  │[;m 覆盖一个文件在软件包中的旧版本。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m 检查已安装软件包的校验和，需要 [0;36mdebsums[;m。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m dpkg -i [0;33mpkg[;m.deb
[1;36m  │[;m
[1;36m  │[;m 安装软件包文件。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m dpkg -S [0;33mfilename[;m
[1;36m  │[;m
[1;36m  │[;m 显示某个文件属于哪个软件包。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m dpkg -c [0;33mpkg[;m.deb
[1;36m  │[;m
[1;36m  │[;m 列出软件包文件里的内容。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m dpkg -I [0;33mpkg[;m.deb
[1;36m  │[;m
[1;36m  │[;m 显示软件包信息。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m dpkg -l [1;33m[[;m[0;33mnames[;m[1;33m][;m
[1;36m  │[;m
[1;36m  │[;m 列出软件包。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m synaptic
[1;36m  │[;m
[1;36m  │[;m APT 的图形化界面(新立得)，需要 [0;36msynaptic[;m。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m aptitude
[1;36m  │[;m
[1;36m  │[;m APT 的命令行界面，需要 [0;36maptitude[;m。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt-file list [0;33mpackage-name[;m
[1;36m  │[;m
[1;36m  │[;m 列出软件包的内容。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt-file search [0;33mfile-name[;m
[1;36m  │[;m
[1;36m  │[;m 在软件包中查找文件。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt-file update
[1;36m  │[;m
[1;36m  │[;m 从软件包仓库升级内容列表，参见 [1;32mapt update[;m
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt rdepends [0;33mpackage-name[;m
[1;36m  │[;m
[1;36m  │[;m 列出所有需要所给出软件包的软件包。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt depends [0;33mpackage-name[;m
[1;36m  │[;m
[1;36m  │[;m 列出所给出软件包依赖的所有软件包。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt autoremove
[1;36m  │[;m
[1;36m  │[;m 移除系统中不再被需要依赖的软件包。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt remove [0;33mpackage-names[;m
[1;36m  │[;m
[1;36m  │[;m 移除软件包。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt full-upgrade
[1;36m  │[;m
[1;36m  │[;m 和 [1;32mapt upgrade[;m 类似，但有更高级的冲突解决方案。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt upgrade
[1;36m  │[;m
[1;36m  │[;m 安装所有当前已经安装的软件包的最新版本。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt install [0;33mpackage-names[;m
[1;36m  │[;m
[1;36m  │[;m 从仓库安装软件包以及所有的依赖。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt show -a [0;33mpackage-name[;m
[1;36m  │[;m
[1;36m  │[;m 显示软件包信息，包括说明信息。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt list -a [0;33mpackage-name[;m
[1;36m  │[;m
[1;36m  │[;m 显示软件包的版本和优先级别。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt search [0;33msearch-string[;m
[1;36m  │[;m
[1;36m  │[;m 在软件包名和说明中查找 [0;33msearch-string[;m.
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m apt update
[1;36m  │[;m
[1;36m  │[;m 从列在 [1;35m/etc/apt/sources.list[;m 中的软件仓库更新软件包列表信息。无论何时那个文件或者软件仓库的内容改变时都要执行此命令。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [0;33mcommand[;m [0;36m&lt;[;m [0;33mfile[;m
[1;36m  │[;m
[1;36m  │[;m 将文件内容作为命令的输入。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [0;33mcmd1[;m [0;36m|[;m [0;33mcmd2[;m
[1;36m  │[;m
[1;36m  │[;m 使用命令1的输出作为命令2的输入。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [0;33mcommand[;m [0;36m>>[;m [0;33mfile[;m
[1;36m  │[;m
[1;36m  │[;m 将该命令的输出附加到文件末尾。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [0;33mcommand[;m [0;36m>[;m [0;33mfile[;m
[1;36m  │[;m
[1;36m  │[;m 使用该命令的输出替换文件内容。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m sudo [0;33mcommand[;m
[1;36m  │[;m
[1;36m  │[;m 作为普通用户以 [0;36mroot[;m 身份执行命令，请见 [1;35m/etc/sudoers[;m。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m su - [1;33m[[;m[0;33musername[;m[1;33m][;m
[1;36m  │[;m
[1;36m  │[;m 切换为另一个用户，比如 [0;36mroot[;m。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m kill [1;33m[[;m[0;33m-9[;m[1;33m][;m [0;33mnumber[;m
[1;36m  │[;m
[1;36m  │[;m 向进程发送信号(比如终止它)。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m ps [1;33m[[;m[0;33moptions[;m[1;33m][;m
[1;36m  │[;m
[1;36m  │[;m 显示当前进程。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m ln -s [0;33mfile[;m [0;33mlink[;m
[1;36m  │[;m
[1;36m  │[;m 创建到一个文件的软链接。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m grep [0;33msearch-string[;m [0;33mfiles[;m
[1;36m  │[;m
[1;36m  │[;m 在文件中查找所指定的字符串。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m find [0;33mdirectories expressions[;m
[1;36m  │[;m
[1;36m  │[;m 查找文件，比如 [0;36m-name [0;33mname[;m[;m 或者 [0;36m-size [0;33m+1000[;m[;m，等等。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m tar [1;33m[[;mc[1;33m][;m[1;33m[[;mx[1;33m][;m[1;33m[[;mt[1;33m][;m[1;33m[[;mz[1;33m][;m[1;33m[[;mj[1;33m][;m[1;33m[[;mJ[1;33m][;m -f [0;33mfile[;m.tar [0;36m [;m [1;33m[[;m[0;33mfiles[;m[1;33m][;m
[1;36m  │[;m
[1;36m  │[;m 创建([0;31mC[;m)，释放([0;31mX[;m)，列出档案文件列表([0;31mT[;m), [0;31mz[;m, [0;31mj[;m 分别用于 [1;35m.gz[;m, [1;35m.bz2[;m。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m rmdir [0;33mdirs[;m
[1;36m  │[;m
[1;36m  │[;m 移除空目录。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m rm [0;33mfiles[;m
[1;36m  │[;m
[1;36m  │[;m 移除文件。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m mv [0;33mfile1[;m[0;36m [;m[0;33mfile2[;m
[1;36m  │[;m
[1;36m  │[;m 移动，重命名文件。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m mkdir [0;33mdirectory-names[;m
[1;36m  │[;m
[1;36m  │[;m 创建目录。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m ls [1;33m[[;m[0;33mfiles[;m[1;33m][;m
[1;36m  │[;m
[1;36m  │[;m 列出文件。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m pager [0;33mfiles[;m
[1;36m  │[;m
[1;36m  │[;m 显示文件内容。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m gzip, bzip2, xz [1;33m[[;m[0;36m-d[;m[1;33m][;m [0;33mfiles[;m
[1;36m  │[;m
[1;36m  │[;m 压缩，解压缩文件。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m echo [0;33mstring[;m
[1;36m  │[;m
[1;36m  │[;m 显示字符串到屏幕。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m cp [0;33mfiles[;m [0;33mdest[;m
[1;36m  │[;m
[1;36m  │[;m 复制文件和目录。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m cd [0;33mdirectory[;m
[1;36m  │[;m
[1;36m  │[;m 改变目录。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m cat [0;33mfiles[;m
[1;36m  │[;m
[1;36m  │[;m 将文件打印到屏幕。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [1;35m/etc/default/[;m
[1;36m  │[;m
[1;36m  │[;m 许多守护进程和服务的默认值。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [1;35m/var/log/[;m
[1;36m  │[;m
[1;36m  │[;m 所有日志文件在这个目录下。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m systemctl hibernate
[1;36m  │[;m
[1;36m  │[;m 休眠
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m systemctl suspend
[1;36m  │[;m
[1;36m  │[;m 待机
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m systemctl poweroff
[1;36m  │[;m
[1;36m  │[;m 关闭系统。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m systemctl reboot
[1;36m  │[;m
[1;36m  │[;m 重启系统
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m systemctl halt
[1;36m  │[;m
[1;36m  │[;m 关闭系统
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [1;35msystemctl start [0;33mname[;m.service[;m
[1;36m  │[;m
[1;36m  │[;m 启动服务，系统守护进程。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [1;35msystemctl stop [0;33mname[;m.service[;m
[1;36m  │[;m
[1;36m  │[;m 停止服务，系统守护进程。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [1;35msystemctl restart [0;33m name[;m.service[;m
[1;36m  │[;m
[1;36m  │[;m 重新启动服务，系统守护进程。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m update-grub
[1;36m  │[;m
[1;36m  │[;m 在修改 [1;35m/etc/default/grub[;m 之后。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m update-alternatives [0;33moptions[;m
[1;36m  │[;m
[1;36m  │[;m 管理命令替换。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m dpkg-reconfigure [0;33mpackage-name[;m
[1;36m  │[;m
[1;36m  │[;m 重新配置软件包，比如键盘设置, 时区设置, 语言设置。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m CUPS [url="http://localhost:631"] at [0;36mhttp://hostname:631[;m
[1;36m  │[;m
[1;36m  │[;m 打印系统的浏览器界面。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m editor [0;33mfiles[;m
[1;36m  │[;m
[1;36m  │[;m 默认文本编辑器。可能是 [1;32mnano[;m, [1;32memacs[;m, [1;32mvi[;m, [1;32mjoe[;m.
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m [1;35m/etc/[;m
[1;36m  │[;m
[1;36m  │[;m 所有系统配置文件都在目录 [1;35m/etc/[;m 下。
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m reportbug
[1;36m  │[;m
[1;36m  │[;m 使用电子邮件报告 bug。
[1;36m  │[;m
[1;36m  │[;m Bug报告方法请见:
[1;36m  │[;m  [0;36mhttps://www.debian.org/Bugs/Reporting[;m
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m 所有关于现存的和已经修正的 bug。
[1;36m  │[;m
[1;36m  │[;m 请看 [0;36mhttps://bugs.debian.org/[0;33mpackage-name[;m/[;m
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m CD镜像 [url="https://www.debian.org/distrib/"]
[1;36m  │[;m
[1;36m  │[;m 从 [0;36mhttps://www.debian.org/distrib/[;m 下载
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m 安装程序 [url="https://www.debian.org/devel/debian-installer/"]
[1;36m  │[;m
[1;36m  │[;m 在 [0;36mhttps://www.debian.org/devel/debian-installer/[;m 有关于它的所有信息
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m 参考，手册，常见问题解答，HOWTO 等，可以在 [0;36mhttps://www.debian.org/doc/[;m 找到
[1;36m  │[;m
[1;36m  │[;m 邮件列表 [url="https://lists.debian.org/"] at [0;36mhttps://lists.debian.org/[;m
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m 在线文档 [url="https://www.debian.org/doc/"]
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m 在这里查找所有文档，里面可能有文件 [1;35mREADME.Debian[;m包含具体说明。
[1;36m  │[;m [1;35m/usr/share/doc/[1;33m[[;m[0;33mpackage-name[;m/[1;33m][;m[;m
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m 阅读所有命令和许多配置文件的联机帮助。
[1;36m  │[;m
[33m[1;36m  │[;m [0;33mcommand[;m [0;36m [;m [1;33m[[;m[0;36m--[;mhelp, [0;36m-[;mh[1;33m][;m[m
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
[1;36m  │[;m
[1;36m  │[;m 获得帮助
[1;36m  │[;m
[1;36m  │[;m man [0;33mpage[;m or man bash
[1;36m  │[;m

[33m                                                             -- Debian 参考卡片[m
%
与目的无关，随心运行程序的自由（自由0）。
学习程序如何运作，并改变它为你所用的自由（自由1）。
重新发布副本的自由，如此你便可以帮助你周围的人（自由 2）。
发布自己修改版本给他人的自由（自由 3）。

[33m  -- 自由软件的四项自由原则[m
%
Facebook 不是你的朋友，是监控引擎。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
Android 和 GNU/Linux 有很大的区别，因为其中几乎没有 GNU。
的确，Android 和 GNU/Linux 之间仅有一个共同组件，那就是内核 - Linux。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
计算机行业是唯一一个比女性时尚业更容易受潮流影响的行业了。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
关于云计算，有趣的是我们已经重新定义了云计算来包含我们曾干过的所有事。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
无论神存在与否，都没有绝对的伦理道德。没有这份理所当然，我们该如何？也唯有尽善吧。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
自由软件是尊重个人自由和社会团结的软件。所以才能如自由般自由自在。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
如果你想为这世界做些什么，仅有理想是不够的，你需要找条通往目标的道路并走完。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
分享很棒，而且数字化技术也使分享变得容易。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
Facebook 蹂躏它们的用户。它不是你们的朋友；它就是个监控引擎。
举个例子，你是否曾在一些网页或网站上看到 Facebook 的 “like” 按键。
对，Facebook 知道你的电脑曾访问过那些网页。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
给你个为什么不应该使用 web 应用的理由，因为你失去了计算机的控制权。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
如果你使用私有程序或他人的 web 服务器，那么你只能任人鱼肉。
被软件的开发者轻易操纵。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
印刷出来的书，当然是自由的。你可以付现金匿名买书，这也是我一直买书的方式。
我绝不会使用信用卡，我买书时不会被任何数据库记下。是亚马逊把自由夺走了。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
我可以找份工作赚钱，并沉浸在编码的快乐中。
但在职业生涯结束后，回首目睹自己筑就的高墙将人与人分隔开，
我会觉得我耗尽毕生精力只换来了一个更糟糕的世界。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
私有软件使用户孤立、无助。
因为禁止将软件给他人使用所以孤立，因为无法改变源码所以无助。
他们不能学习其中真正的工作方式，所以整个私有软件体系就是一种不公的力量。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
智能手机就是电脑 —— 虽然做的和常用的电脑不同 —— 但是却能干电脑能干的活。
所以我们所说的一切有关于电脑上的软件应该能自由运行 —— 必须坚持这一点
 —— 在智能手机上也是这样，当然也包括平板。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
CD 商店有一个弱势就是需要昂贵的库存，但是电子商店就没有这方面的需求：
他们只需要将售卖的副本写入记忆棒，并在你忘带自己的记忆棒时卖你一个就是了。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
竞争范式就像是赛跑：奖励胜者，鼓励每一个跑得更快的人。
当资本主义真的这样运作时，当然是件好事；
但是维护它的人若是假设它一直这样运作的话那就大错特错了。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
有时会有人问我在 Emacs 的阵营使用 vi 是不是一种罪过。
使用自由版的 vi 并不是一种罪过；是一种自我惩罚。所以好好享受其中乐趣吧。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
历史告诉我们不珍惜自由便失去自由，
然而有的人不懂吸取教训，只知道说“别拿政治烦我们”。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
和专利一个一个的战斗并不能解决软件专利带来的危害，
就像打再多的蚊子也消灭不了疟疾一样。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
软件专利对于软件的开发者来说十分危险，因为它们加剧了对于软件理念的垄断。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
其实，版权制度对作者也没有什么好处，撇开最受欢迎的那个，
其他作者的主旨可能更好理解，所以分享无论对他们还是你的读者都是一件好事。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
劳有所得，或寻求收入的最大化并没有什么错，只要不是不择手段。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
Chrome OS 确实是 GNU/Linux 的操作系统。
但是，它在发布时没有安装常用应用，并为安装他们设置了阻碍。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
许多的 GNU/Linux 用户并没有听过自由软件。
他们并没有意识到，这个系统是因为道德理想才存在的，
与此一起被忽视的还有所谓的“开源”。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
如果页面上有 “like” 按键，Facebook 就能知道谁访问了页面。
即使不是 Facebook 的用户，也可以得到访问该页面电脑的 IP 地址。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
编程不是科学，编程是手艺。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
Lisp 和 C 语言是我的最爱。
然而自 1992 年以来我主要工作在自由软件活动上，导致我太忙了，没法做更多的编程。
大概在 2008 年我便停止了做编程项目。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
C++ 设计的真糟糕、真丑陋。在 Emacs 上用它应该觉得羞愧。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
(时过境迁，)人们没法再像我当初那样通过改进实实在在的操作系统来学习编程了。
上世纪 80 年代，我常遇见计算机专业的毕业生，有生以来没见过真正的程序。
他们接触的到的只有小玩意和学校的作业，因为每一个程序都是商业机密。
他们没有机会为用户去写真正实用的特性，修复用户真正遭遇的问题。
而这些正是真正的工作中你需要掌握的(东西)。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
对于如“hacking”这般多样化的东西真的很难简单的下定义，
不过在我看来诸如此类的行为都会有以下的这些共同点：嬉乐、智慧和探索。
因此，hacking 意味着对可能的极限的探索，一颗向往快乐与智慧的心。
能带来快乐与智慧的行为就有 “hack 的价值” 。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
出于个人原因，我不会在我的电脑上浏览网页。
（大部分时间处于没有网络连接的状态。）
要浏览网页，我需要给一个守护进程发 mail，
然后它会运行 wget 并把页面通过 mail 发还给我。
这对我而言已经是最效率了，但那真的比实时慢太多了。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
朋友之间彼此分享音乐，绝不会希望因为系统的一句：“禁止私下拷贝！”而生分。
[33m  -- 理查德·马修·斯托曼 (RMS) [m
%
Debian 将始终是 100% 的自由软件

我们制订一个名为"Debian 自由软件指导方针"的标准便于我们判定某项作品
"自由"与否。我们保证 Debian 系统机器附带的软件包遵循这些自由软件的方针。
我们将同时支持在 Debian 上开 发及使用自由或者非自由软件的用户。
但是，我们决不让这个系统依赖于任何非自由软件。

[33m    -- Debian [32m《社会契约》[m第一条[m
%
我们将回报自由软件社群

当我们编写 Debian 系统的新的部件之时，我们将使其遵循 Debian 自由软件
指导方针的理念。我们将尽最大努力，打造最优秀的系统，以利自由软件得到
最广泛的使用及传播。我们将反馈那些作品被我们系统收录的"上游"作者，
例如缺陷的修正 、改良的意见以及用户的需求等这些信息。

[33m    -- Debian [32m《社会契约》[m第二条[m
%
我们绝不隐瞒问题

我们将始终把我们整个的缺陷报告数据库开放给公众阅读。
由用户在线提交的报告，将会很快的出现在其他人的眼前。

[33m    -- Debian [32m《社会契约》[m第三条[m
%
我们将优先考虑我们的用户及自由软件

我们由我们的用户及自由软件社群的需要所导向。我们将优先考虑他们的利益。
我们将在多种计算环境中支持我们的用户的操作需要。
我们不反对在 Debian 系统上 使用非自由软件，我们也不会尝试向创建和使用
这部分软件的用户索取费用。我们允许他人，在没有我们的资金的参与下，制造
包括 Debian 以及商业软件的增值套件。为了达成这些目标，我们将提供一
集成的、高质量的、100% 自由的软件，而不附加任何可能阻止在这些方面使用
的法律限制。

[33m    -- Debian [32m《社会契约》[m第四条[m
%
哪些作品不符合我们的自由软件规范

我们明白，某些我们的用户需要使用不符合 Debian 自由软件指导方针的作品。
 我们为这些作品，在我们的 FTP 库中留出了"contrib"以及 "non-free"目录。
在这些目录下的软件包，并不属于 Debian 系统 尽管它们已被配置成可以
在 Debian 下使用。我们鼓励光盘制造商阅读这些目录下 的软件的许可证，
以判断他们是否可以在光盘中发行这些软件 。所以，尽管非自由软件
并非 Debian 系统的一部分，我们仍支持它们的使用，并且我们为
非自由软件提供了公共资源 (诸如我们的缺陷跟踪系统以及邮件列表)。

[33m    -- Debian [32m《社会契约》[m第五条[m
%
模块原则：使用简洁的接口拼合简单的部件。
[33m    -- Eric S. Raymond, UNIX哲学基础第一条，[32m《UNIX编程艺术》[m[m
%
清晰原则：清晰胜于技巧。
[33m    -- Eric S. Raymond, UNIX哲学基础第二条，[32m《UNIX编程艺术》[m[m
%
组合原则：设计时考虑拼接组合。
[33m    -- Eric S. Raymond, UNIX哲学基础第三条，[32m《UNIX编程艺术》[m[m
%
分离原则：策略同机制分离，接口同引擎分离。
[33m    -- Eric S. Raymond, UNIX哲学基础第四条，[32m《UNIX编程艺术》[m[m
%
简洁原则：设计要简洁，复杂度能低则低。
[33m    -- Eric S. Raymond, UNIX哲学基础第五条，[32m《UNIX编程艺术》[m[m
%
吝啬原则：除非别无他法，不要编写庞大的程序。
[33m    -- Eric S. Raymond, UNIX哲学基础第六条，[32m《UNIX编程艺术》[m[m
%
透明性原则：设计要可见，以便审查和调试。
[33m    -- Eric S. Raymond, UNIX哲学基础第七条，[32m《UNIX编程艺术》[m[m
%
健壮原则：健壮源于透明与简洁。
[33m    -- Eric S. Raymond, UNIX哲学基础第八条，[32m《UNIX编程艺术》[m[m
%
表示原则：将知识叠入数据，以求逻辑质朴而健壮。
[33m    -- Eric S. Raymond, UNIX哲学基础第九条，[32m《UNIX编程艺术》[m[m
%
通俗原则：接口设计应避免标新立异。
[33m    -- Eric S. Raymond, UNIX哲学基础第十条，[32m《UNIX编程艺术》[m[m
%
缄默原则：如果一个程序没有什么好说的，那就保持沉默。
[33m    -- Eric S. Raymond, UNIX哲学基础第十一条，[32m《UNIX编程艺术》[m[m
%
补救原则：出现异常时，马上退出并给出足量错误信息。
[33m    -- Eric S. Raymond, UNIX哲学基础第十二条，[32m《UNIX编程艺术》[m[m
%
经济原则：宁花机器一分，不花程序员一秒。
[33m    -- Eric S. Raymond, UNIX哲学基础第十三条，[32m《UNIX编程艺术》[m[m
%
生成原则：避免手工Hack，尽量编写程序去生成程序。
[33m    -- Eric S. Raymond, UNIX哲学基础第十四条，[32m《UNIX编程艺术》[m[m
%
优化原则：雕琢前先得有原型，跑之前先学会走。
[33m    -- Eric S. Raymond, UNIX哲学基础第十五条，[32m《UNIX编程艺术》[m[m
%
多样原则：绝不相信“不二法门”的断言。
[33m    -- Eric S. Raymond, UNIX哲学基础第十六条，[32m《UNIX编程艺术》[m[m
%
扩展原则：设计着眼未来，未来总比预想快。
[33m    -- Eric S. Raymond, UNIX哲学基础第十七条，[32m《UNIX编程艺术》[m[m
%
[33mK.I.S.S -- Keep It Simple, Stupid![m
[33m    -- UNIX哲学，[32m《UNIX编程艺术》[m[m
%
不懂UNIX的人最终还要重复发明一个蹩脚的UNIX。
[33m    -- Usenet签名，1987年11月，Henry Spencer[m
%
忘记过去的人，注定要重蹈覆辙。
[33m    -- [32m《The Lift of Reason》[m, 1905 by George Santayana[m
%
如果你不知道如何表现地高人一等，找个Unix用户，让他做给你看。
[33m    -- Dilbert newsletter 3.0, 1994[m
%
彻头彻尾的反Unix系统，就是没有任何统一性理念，
胡乱堆砌起的一些唬人特性而已。
[33m    -- Eric S. Raymond, [32m《UNIX编程艺术》[m[m
%
[33m彻头彻尾的反Unix系统，就是绝无多任务处理能力 -- 或者通过对进程管理[m
[33m增设诸多规定、限制和特殊情况来削弱多任务处理能力 -- 的一个废物。[m
[33m    -- Eric S. Raymond, [32m《UNIX编程艺术》[m[m
%
彻头彻尾的反Unix系统，就是让进程的生成代价高昂，让进程的控制
困难而死板，让IPC可有可无，对它不予支持或支持很少。
[33m    -- Eric S. Raymond, [32m《UNIX编程艺术》[m[m
%
彻头彻尾的反Unix系统，应用一套拙劣的记录结构，任何特定的工具能否像
文件编写者希望的那样读懂文件，完全是靠运气。
[33m    -- Eric S. Raymond, [32m《UNIX编程艺术》[m[m
%
彻头彻尾的反Unix系统，让所有文件格式都采用不透明的二进制格式，
后者要用重量级的工具才能读取和编辑。
[33m    -- Eric S. Raymond, [32m《UNIX编程艺术》[m[m
%
[33m彻头彻尾的反Unix系统，就是没有CLI，没有脚本编程能力 -- 或者，[m
存在CLI不能驱动的重要功能。
[33m    -- Eric S. Raymond, [32m《UNIX编程艺术》[m[m
%
彻头彻尾的反Unix系统，就是一个自认为比你自己更懂你在干什么的操作系统，
然后雪上加霜的是，它还做错了。
[33m    -- Eric S. Raymond, [32m《UNIX编程艺术》[m[m
%
彻头彻尾的反Unix系统，不可能进行轻松编程。
[33m    -- Eric S. Raymond, [32m《UNIX编程艺术》[m[m
%
软件设计有两种方式：一种是设计得极为简洁，没有看得到的缺陷；
另一种是设计得极为复杂，有缺陷也看不出来。第一种方式的难度要大得多。
[33m    -- The Emperor's Old Clothes, CACM February 1981[m
%
从好的符号体味出的巧妙和启发，就算身边的老师也不过如此。
[33m    -- The world of Mathematics (1956), Bertrand Russel[m
%
程序员束手无策...只有跳脱代码，直起腰，仔细思考数据才是最好的行动。
表达是编程的精髓。
[33m    -- The Mythical Man-Month, Anniversary Edition (1975-1995), pp. 103,[m
%                                                             Fred Brooks
我们所有的知识都来源于我们的感知。
[33m    -- Leonardo Da Vinci[m
%
过早优化乃万恶之源。
[33m    -- C. A. R. Hoare[m
%
我语言的极限便是我世界的极限。
[33m    -- Tractatus Logico-Philosophicus 5.6, 1918[m
%
[33mUnix是用户友好的 -- 只不过是挑剔的友好。[m
[33m    -- 佚名[m
%
软件和性一样，越自由越好。
[33m    -- Linus Torvalds[m
%
预测未来最好的方法就是去创造未来。
[33m    -- 1971年XEROX PARC会议，Alan Kay[m
%
欲做精金美玉的人品，定从烈火中煅来；
思立掀天揭地的事功，须向薄冰上履过。 
[33m    --[32m《菜根谭》[m[m
%
一念错，便觉百行皆非，防之当如渡海浮囊，勿容一针之罅漏；
万善全，始得一生无愧。修之当如凌云宝树，须假众木以撑持。
[33m    --[32m《菜根谭》[m[m
%
忙处事为，常向闲中先检点，过举自稀。
动时念想，预从静里密操持，非心自息。
[33m    --[32m《菜根谭》[m[m
%
为善而欲自高胜人，施恩而欲要名结好，
修业而欲惊世骇俗，植节而欲标异见奇，
此皆是善念中戈矛，理路上荆棘，最易夹带，最难拔除者也。
须是涤尽渣滓，斩绝萌芽，才见本来真体。
[33m    --[32m《菜根谭》[m[m
%
能轻富贵，不能轻一轻富贵之心；
能重名义，又复重一重名义之念。
是事境之尘氛未扫，而心境之芥蒂未忘。
此处拔除不净，恐石去而草复生矣。
[33m    --[32m《菜根谭》[m[m
%
纷扰固溺志之场，而枯寂亦槁心之地。
故学者当栖心元默，以宁吾真体。
亦当适志恬愉，以养吾圆机。
[33m    --[32m《菜根谭》[m[m
%
昨日之非不可留，留之则根烬复萌，而尘情终累乎理趣；
今日之是不可执，执之则渣滓未化，而理趣反转为欲根。
[33m    --[32m《菜根谭》[m[m
%
无事便思有闲杂念想否。有事便思有粗浮意气否。
得意便思有骄矜辞色否。失意便思有怨望情怀否。
时时检点，到得从多入少、从有入无处，才是学问的真消息。
[33m    --[32m《菜根谭》[m[m
%
士人有百折不回之真心，才有万变不穷之妙用。
立业建功，事事要从实地着脚，若少慕声闻，便成伪果；
讲道修德，念念要从虚处立基，若稍计功效，便落尘情。
[33m    --[32m《菜根谭》[m[m
%
身不宜忙，而忙于闲暇之时，亦可儆惕惰气；
心不可放，而放于收摄之后，亦可鼓畅天机。
[33m    --[32m《菜根谭》[m[m
%
钟鼓体虚，为声闻而招击撞；麋鹿性逸，因豢养而受羁糜。
可见名为招祸之本，欲乃散志之媒。学者不可不力为扫除也。
[33m    --[32m《菜根谭》[m[m
%
一念常惺，才避去神弓鬼矢；纤尘不染，方解开地网天罗。
[33m    --[32m《菜根谭》[m[m
%
一点不忍的念头，是生民生物之根芽；
一段不为的气节，是撑天撑地之柱石。
故君子于一虫一蚁不忍伤残，一缕一丝勿容贪冒，变可为万物立命、天地立心矣。
[33m    --[32m《菜根谭》[m[m
%
拨开世上尘氛，胸中自无火焰冰竞；
消却心中鄙吝，眼前时有月到风来。
[33m    --[32m《菜根谭》[m[m
%
学者动静殊操、喧寂异趣，还是锻炼未熟，心神混淆故耳。
须是操存涵养，定云止水中，有鸢飞鱼跃的景象；
风狂雨骤处，有波恬浪静的风光，才见处一化齐之妙。
[33m    --[32m《菜根谭》[m[m
%
心是一颗明珠。
以物欲障蔽之，犹明珠而混以泥沙，其洗涤犹易；
以情识衬贴之，犹明珠而饰以银黄，其洗涤最难。
故学者不患垢病，而患洁病之难治；不畏事障，而畏理障之难除。
[33m    --[32m《菜根谭》[m[m
%
躯壳的我要看得破，则万有皆空而其心常虚，虚则义理来居；
性命的我要认得真，则万理皆备而其心常实，实则物欲不入。
[33m    --[32m《菜根谭》[m[m
%
面上扫开十层甲，眉目才无可憎；胸中涤去数斗尘，语言方觉有味。
[33m    --[32m《菜根谭》[m[m
%
完得心上之本来，方可言了心；尽得世间之常道，才堪论出世。
[33m    --[32m《菜根谭》[m[m
%
我果为洪炉大冶，何患顽金钝铁之不可陶熔。
我果为巨海长江，何患横流污渎之不能容纳。
[33m    --[32m《菜根谭》[m[m
%
白日欺人，难逃清夜之鬼报；红颜失志，空贻皓首之悲伤。
[33m    --[32m《菜根谭》[m[m
%
以积货财之心积学问，以求功名之念求道德，
以爱妻子之心爱父母，以保爵位之策保国家，
出此入彼，念虑只差毫末，而超凡入圣，人品且判星渊矣。
人胡不猛然转念哉！
[33m    --[32m《菜根谭》[m[m
%
立百福之基，只在一念慈祥；开万善之门，无如寸心挹损。
[33m    --[32m《菜根谭》[m[m
%
塞得物欲之路，才堪辟道义之门；驰得尘俗之肩，方可挑圣贤之担。
[33m    --[32m《菜根谭》[m[m
%
容得性情上偏私，便是一大学问；消得家庭内嫌雪，才为火内栽莲。
[33m    --[32m《菜根谭》[m[m
%
事理因人言而悟者，有悟还有迷，总不如自悟之了了；
意兴从外境而得者，有得还有失，总不如自得之休休。
[33m    --[32m《菜根谭》[m[m
%
情之同处即为性,舍情则性不可见，欲之公处即为理，舍欲则理不可明。
故君子不能灭情，惟事平情而已；不能绝欲，惟期寡欲而已。
[33m    --[32m《菜根谭》[m[m
%
欲遇变而无仓忙，须向常时念念守得定；欲临死而无贪恋，须向生时事事看得轻。
[33m    --[32m《菜根谭》[m[m
%
一念过差，足丧生平之善；终身检饬，难盖一事之愆。
[33m    --[32m《菜根谭》[m[m
%
从五更枕席上参勘心体，气未动，情未萌，才见本来面目；
向三时饮食中谙练世味，浓不欣，淡不厌，方为切实工夫。
[33m    --[32m《菜根谭》[m[m
%
操存要有真宰，无真宰则遇事便倒，何以植顶天立地之砥柱！
应用要有圆机，无圆机则触物有碍，何以成旋乾转坤之经纶！
[33m    --[32m《菜根谭》[m[m
%
士君子之涉世，於人不可轻为喜怒，喜怒轻，则心腹肝胆皆为人所窥；
於物不可重为爱憎，爱憎重，则意气精神悉为物所制。
[33m    --[32m《菜根谭》[m[m
%
倚高才而玩世，背后须防射影之虫；饰厚貌以欺人，面前恐有照胆之镜。
[33m    --[32m《菜根谭》[m[m
%
心体澄彻，常在明镜止水之中，则天下自无可厌之事；
意气和平，赏在丽日光风之内，则天下自无可恶之人。
当是非邪正之交，不可少迁就，少迁就则失从违之正；
值利害得失之会，不可太分明，太分明则起趋避之私。
[33m    --[32m《菜根谭》[m[m
%
苍蝇附骥，捷则捷矣，难辞处后之羞；
萝茑依松，高则高矣，未免仰攀之耻。
所以君子宁以风霜自挟，毋为鱼鸟亲人。
[33m    --[32m《菜根谭》[m[m
%
好丑心太明，则物不契；贤愚心太明，则人不亲。
士君子须是内精明而外浑厚，使好丑两得其平，贤愚共受其益，才是生成的德量。
[33m    --[32m《菜根谭》[m[m
%
伺察以为明者，常因明而生暗，故君子以恬养智；
奋迅以为速者，多因速度而致迟，故君子以重持轻。
士君子济人利物，宜居其实，不宜居其名，居其名则德损；
士大夫忧国为民，当有其心，不当有其语，有其语则毁来。
[33m    --[32m《菜根谭》[m[m
%
遇大事矜持者，小事必纵弛；处明庭检饰者，暗室必放逸。
君子只是一个念头持到底，自然临小事如临大敌，坐密室若坐通衢。
[33m    --[32m《菜根谭》[m[m
%
使人有面前之誉，不若使其无背后之毁；
使人有乍交之欢，不若使其无久处之厌。
[33m    --[32m《菜根谭》[m[m
%
善启迪人心者，当因其所明而渐通之，毋强开其所闭；
善移风化者，当因其所易而渐及之，毋轻矫其所难。
[33m    --[32m《菜根谭》[m[m
%
彩笔描空，笔不落色，而空亦不受染；
利刀割水，刀不损锷，而水亦不留痕。
得此意以持身涉世，感与应俱适，心与境两忘矣。
[33m    --[32m《菜根谭》[m[m
%
己之情欲不可纵，当用逆之之法以制之，其道只在一忍字；
人之情欲不可拂，当用顺之之法以调之，其道只在一恕字。
今人皆恕以适己而忍以制人，毋乃不可乎！
[33m    --[32m《菜根谭》[m[m
%
好察非明，能察能不察之谓明；必胜非勇，能胜能不胜之谓勇。
[33m    --[32m《菜根谭》[m[m
%
随时之内善救时，若和风之消酷暑；混俗之中能脱俗，似淡月之映轻云。
[33m    --[32m《菜根谭》[m[m
%
思入世而有为者，须先领得世外风光，否则无以脱垢浊之尘缘；
思出世而无染者，须先谙尽世中滋味。否则无以持空寂之后苦趣。
[33m    --[32m《菜根谭》[m[m
%
与人者，与其易疏于终，不若难亲于始；御事者，与其巧持于后，不若拙守于前。
[33m    --[32m《菜根谭》[m[m
%
酷烈之祸，多起于玩忽之人；盛满之功，常败于细微之事。
故语云：“人人道好，须防一人着脑；事事有功，须防一事不终。”
[33m    --[32m《菜根谭》[m[m
%
功名富贵，直从灭处观究竟，则贪恋自轻；横逆困穷，直从起处究由来，则怨尤自息。
[33m    --[32m《菜根谭》[m[m
%
宇宙内事要力担当，又要善摆脱。不担当，则无经世之事业；不摆脱，则无出世之襟期。
[33m    --[32m《菜根谭》[m[m
%
待人而留有余，不尽之恩礼，则可以维系无厌之人心；
御事而留有余，不尽之才智，则可以提防不测之事变。
[33m    --[32m《菜根谭》[m[m
%
了心自了事，犹根拔而草不生；逃世不逃名，似膻存蚋而仍集。
[33m    --[32m《菜根谭》[m[m
%
仇边之弩易避，而恩里之戈难防；苦时之坎易逃，而乐处之阱难脱。
[33m    --[32m《菜根谭》[m[m
%
膻秽则蝇蚋丛嘬，芳馨则蜂蝶交侵。
故君子不作垢业，亦不立芳名。
只是元气浑然，圭角不露，便是持身涉世一安乐窝也。
[33m    --[32m《菜根谭》[m[m
%
从静中观物动，向闲处看人忙，才得超尘脱俗的趣味；
遇忙处会偷闲，处闹中能取静，便是安身立命的工。
[33m    --[32m《菜根谭》[m[m
%
邀千百人之欢，不如释一人之怨；希千百事之荣，不如免一事之丑。
[33m    --[32m《菜根谭》[m[m
%
落落者，难合亦难分；欣欣者，易亲亦易散。是以君子宁以刚方见惮，毋以媚悦取容。
[33m    --[32m《菜根谭》[m[m
%
意气与天下相期，如春风之鼓畅庶类，不宜存半点隔阂之形；
肝胆与天下相照，似秋月之洞彻群品，不可作一毫暧昧之状。
[33m    --[32m《菜根谭》[m[m
%
仕途虽赫奕，常思林下的风味，则权且之念自轻；
世途虽纷华，常思泉下的光景，则利欲之心自淡。
鸿未至先援弓，兔已亡再呼矢，总非当机作用；
风息时休起浪，岸到处便离船，才是了手工夫。
[33m    --[32m《菜根谭》[m[m
%
从热闹场中出几句清冷言语，便扫除无限杀机；
向寒微路上用一点赤热心肠，自培植许多生意。
随缘便是遣缘，似舞蝶与飞花共适；顺事自然无事，若满月偕盂水同圆。
[33m    --[32m《菜根谭》[m[m
%
淡泊之守，须从浓艳场中试来；镇定之操，还向纷纭境上勘过。
不然操持未定，应用未圆，恐一临机登坛，而上品禅师又成一下品俗士矣。
[33m    --[32m《菜根谭》[m[m
%
廉所以戒贪。我果不贪，又何必标一廉名，以来贪夫之侧目。
让所以戒争。我果不争，又何必立一让的，以致暴客之弯弓。
[33m    --[32m《菜根谭》[m[m
%
无事常如有事时，提防才可以弥意外之变；有事常如无事时，镇定方可以消局中之危。
[33m    --[32m《菜根谭》[m[m
%
处世而欲人感恩，便为敛怨之道；遇事而为人除害，即是导利之机。
[33m    --[32m《菜根谭》[m[m
%
持身如泰山九鼎凝然不动，则愆尤自少；应事若流水落花悠然而逝，则趣味常多。
[33m    --[32m《菜根谭》[m[m
%
君子严如介石而畏其难亲，鲜不以明珠为怪物而起按剑之心；
小人滑如脂膏而喜其易合，鲜不以毒螫为甘饴而纵染指之欲。
[33m    --[32m《菜根谭》[m[m
%
遇事只一味镇定从容，纵纷若乱丝，终当就绪；
待人无半毫矫伪欺隐，虽狡如山鬼，亦自献诚。
[33m    --[32m《菜根谭》[m[m
%
肝肠煦若春风，虽囊乏一文，还怜茕独；气骨清如秋水，纵家徒四壁，终傲王公。
[33m    --[32m《菜根谭》[m[m
%
讨了人事的便宜，必受天道的亏；贪了世味的滋益，必招性分的损。
涉世者宜蕃择之，慎毋贪黄雀而坠深井，舍隋珠而弹飞禽也。
费千金而结纳贤豪，孰若倾半瓢之粟，以济饥饿之人；
构千楹而招来宾客，孰若葺数椽之茅，以庇孤寒之士。
[33m    --[32m《菜根谭》[m[m
%
解斗者助之以威，则怒气自平；惩贪者济之以欲，则利心反淡。
所谓因其势而利导之，亦救时应变一权宜法也。
[33m    --[32m《菜根谭》[m[m
%
市恩不如报德之为厚。雪忿不若忍耻为高。
要誉不如逃名之为适。矫情不若直节之为真。
[33m    --[32m《菜根谭》[m[m
%
救既败之事者，如驭临崖之马，休轻策一鞭；
图垂成之功者，如挽上滩之舟，莫少停一棹。
[33m    --[32m《菜根谭》[m[m
%
先达笑弹冠，休向侯门轻曳裾；相知犹按剑，莫从世路暗投珠。
[33m    --[32m《菜根谭》[m[m
%
杨修之躯见杀于曹操，以露己之长也；
韦诞之墓见伐于钟繇，以秘己之美也。
故哲士多匿采以韬光，至人常逊美而公善。
[33m    --[32m《菜根谭》[m[m
%
少年的人，不患其不奋迅，常患畚迅而成卤莽，故当抑其躁心；
老成的人，不患其不持重，常患以持重而成退缩，故当振其惰气。
[33m    --[32m《菜根谭》[m[m
%
望重缙绅，怎似寒微之颂德。朋来海宇，何如骨肉之孚心。
[33m    --[32m《菜根谭》[m[m
%
舌存常见齿亡，刚强终不胜柔弱；户朽未闻枢蠹，偏执岂能及圆融。
[33m    --[32m《菜根谭》[m[m
%
物莫大于天地日月，而子美云：“日月笼中鸟，乾坤水上萍。”
事莫大于揖逊征诛，而康节云：“唐虞揖逊三杯酒，汤武征诛一局棋。”
人能以此胸襟眼界吞吐六合，上下千古，
事来如沤生大海，事去如影灭长空，自经纶万变而不动一尘矣。
[33m    --[32m《菜根谭》[m[m
%
君子好名，便起欺人之念；小人好名，犹怀畏人之心。
故人而皆好名，则开诈善之门。使人而不好名，则绝为善之路。
此讥好名者，当严责君子，不当过求于小人也。
[33m    --[32m《菜根谭》[m[m
%
大恶多从柔处伏，哲士须防绵里之针；深仇常自爱中来，达人宜远刀头之蜜。
[33m    --[32m《菜根谭》[m[m
%
持身涉世，不可随境而迁。须是大火流金而清风穆然，严霜杀物而和气蔼然，
阴霾翳空而慧日朗然，洪涛倒海而坻柱屹然，方是宇宙内的真人品。
爱是万缘之根，当知割舍。识是众欲之本，要力扫除。
[33m    --[32m《菜根谭》[m[m
%
作人要脱俗，不可存一矫俗之心；应世要随时，不可起一趋时之念。
[33m    --[32m《菜根谭》[m[m
%
宁有求全之毁，不可有过情之誉；宁有无妄之灾，不可有非分之福。
[33m    --[32m《菜根谭》[m[m
%
毁人者不美，而受人毁者遭一番讪谤便加一番修省，可释回而增美；
欺人者非福，而受人欺者遇一番横逆便长一番器宇，可以转祸而为福。
[33m    --[32m《菜根谭》[m[m
%
梦里悬金佩玉，事事逼真，睡去虽真觉后假；
闲中演偈谈元，言言酷似，说来虽是用时非。
[33m    --[32m《菜根谭》[m[m
%
天欲祸人，必先以微福骄之，所以福来不必喜，要看他会受；
天欲福人，必先以微祸儆之，所以祸来不必忧，要看他会救。
[33m    --[32m《菜根谭》[m[m
%
荣与辱共蒂，厌辱何须求荣；生与死同根，贪生不必畏死。
[33m    --[32m《菜根谭》[m[m
%
作人只是一味率真，踪迹虽隐还显；存心若有半毫未净，事为虽公亦私。
[33m    --[32m《菜根谭》[m[m
%
鹩占一枝，反笑鹏心奢侈；兔营三窟，转嗤鹤垒高危。
智小者不可以谋大，趣卑者不可与谈高。信然矣！
[33m    --[32m《菜根谭》[m[m
%
贫贱骄人，虽涉虚骄，还有几分侠气；英雄欺世，纵似挥霍，全没半点真心。
糟糠不为彘肥，何事偏贪钩下饵；锦绮岂因牺贵，谁人能解笼中囵［囗＋化］。
[33m    --[32m《菜根谭》[m[m
%
琴书诗画，达士以之养性灵，而庸夫徒赏其迹象；
山川云物，高人以之助学识，而俗子徒玩其光华。
可见事物无定品，随人识见以为高下。故读书穷理，要以识趣为先。
[33m    --[32m《菜根谭》[m[m
%
姜女不尚铅华，似疏梅之映淡月；禅师不落空寂，若碧沼之吐青莲。
[33m    --[32m《菜根谭》[m[m
%
廉官多无后，以其太清也；痴人每多福，以其近厚也。
故君子虽重廉介，不可无含垢纳污之雅量。
虽戒痴顽，亦不必有察渊洗垢之精明。
[33m    --[32m《菜根谭》[m[m
%
密则神气拘逼，疏则天真烂漫，此岂独诗文之工拙从此分哉！
吾见周密之人纯用机巧，疏狂之士独任性真，人心之生死亦於此判也。
[33m    --[32m《菜根谭》[m[m
%
翠筱傲严霜，节纵孤高，无伤冲雅；红蕖媚秋水，色虽艳丽，何损清修。
[33m    --[32m《菜根谭》[m[m
%
贫贱所难，不难在砥节，而难在用情；富贵所难，不难在推恩，而难在好礼。
[33m    --[32m《菜根谭》[m[m
%
簪缨之士，常不及孤寒之子可以抗节致忠；
庙堂之士，常不及山野之夫可以料事烛理。
何也？彼以浓艳损志，此以淡泊全真也。
[33m    --[32m《菜根谭》[m[m
%
荣宠旁边辱等待，不必扬扬；困穷背后福跟随，何须戚戚。
[33m    --[32m《菜根谭》[m[m
%
古人闲适处，今人却忙过了一生；古人实受处，今人又虚度了一世。
总是耽空逐妄，看个色身不破，认个法身不真耳。
[33m    --[32m《菜根谭》[m[m
%
芝草无根醴无源，志士当勇奋翼；彩云易散琉璃脆，达人当早回头。
[33m    --[32m《菜根谭》[m[m
%
少壮者，事事当用意而意反轻，徒汛汛作水中凫而已，何以振云霄之翮？
衰老者，事事宜忘情而情反重，徒碌碌为辕下驹而已，何以脱缰锁之身？
[33m    --[32m《菜根谭》[m[m
%
帆只扬五分，船便安。水只注五分，器便稳。
如韩信以勇备震主被擒，陆机以才名冠世见杀，
霍光败于权势逼君，石崇死于财赋敌国，皆以十分取败者也。
康节云：“饮酒莫教成酩酊，看花慎勿至离披。”旨哉言乎！
[33m    --[32m《菜根谭》[m[m
%
附势者如寄生依木，木伐而寄生亦枯；窃利者如□［虫营］□［虫丁］盗人，
人死而□［虫营］□［虫丁］亦灭。始以势利害人，终以势利自毙。势利之为害也，如是夫！
[33m    --[32m《菜根谭》[m[m
%
失血于杯中，堪笑猩猩之嗜酒；为巢于幕上，可怜燕燕之偷安。
[33m    --[32m《菜根谭》[m[m
%
鹤立鸡群，可谓超然无侣矣。然进而观于大海之鹏，则眇然自小。
又进而求之九霄之凤，则巍乎莫及。所以至人常若无若虚，而盛德多不矜不伐也。
贪心胜者，逐兽而不见泰山在前，弹雀而不知深井在后；
疑心胜者，见弓影而惊杯中之蛇，听人言而信市上之虎。
人心一偏，遂视有为无，造无作有。如此，心可妄动乎哉！
[33m    --[32m《菜根谭》[m[m
%
蛾扑火，火焦蛾，莫谓祸生无本；
果种花，花结果，须知福至有因。
[33m    --[32m《菜根谭》[m[m
%
车争险道，马骋先鞭，到败处未免噬脐；
粟喜堆山，金夸过斗，临行时还是空手。
[33m    --[32m《菜根谭》[m[m
%
花逞春光，一番雨、一番风，催归尘土；
竹坚雅操，几朝霜、几朝雪，傲就琅［王干］。
[33m    --[32m《菜根谭》[m[m
%
富贵是无情之物，看得他重，他害你越大；
贫贱是耐久之交，处得他好，他益你深。
故贪商於而恋金谷者，竟被一时之显戮；
乐箪瓢而甘敝温（“纟”旁）者，终享千载之令名。
[33m    --[32m《菜根谭》[m[m
%
鸽恶铃而高飞，不知敛翼而铃自息；
人恶影而疾走，不知处阴而影自灭。
故愚夫徒疾走高飞，而平地反为苦海；
达士知处阴敛翼，而ＣＨＡＮ岩亦是坦途。
秋虫春鸟共畅天机，何必浪生悲喜；
老树新花同含生意，胡为妄别媸妍。
[33m    --[32m《菜根谭》[m[m
%
多栽桃李少栽荆，便是开条福路；不积诗书偏积玉，还如筑个祸基。
[33m    --[32m《菜根谭》[m[m
%
万境一辙原无地，著个穷通；万物一体原无处，分个彼我。
世人迷真逐妄，乃向坦途上自设一坷坎，从空洞中自筑一藩蓠。良足慨哉！
[33m    --[32m《菜根谭》[m[m
%
大聪明的人，小事必朦胧；大懵懂的人，小事必伺察。
盖伺察乃懵懂之根，而朦胧正聪明之窟也。
[33m    --[32m《菜根谭》[m[m
%
大烈鸿猷，常出悠闲镇定之士，不必忙忙；
休徵景福，多集宽洪长厚之家，何须琐琐。
[33m    --[32m《菜根谭》[m[m
%
贫士肯济人，才是性天中惠泽；
闹场能学道，方为心地上工夫。
[33m    --[32m《菜根谭》[m[m
%
人生只为欲字所累，便如马如牛，听人羁络；
为鹰为犬，任物鞭笞。
若果一念清明，淡然无欲，天地也不能转动我，鬼神也不能役使我，况一切区区事物乎！
[33m    --[32m《菜根谭》[m[m
%
贫得者身富而心贫，知足者身贫而心富；
居高者形逸而神劳，处下者形劳而神逸。
孰得孰失，孰幻孰真，达人当自辨之。
[33m    --[32m《菜根谭》[m[m
%
众人以顺境为乐，而君子乐自逆境中来；
众人以拂意为忧，而君子忧从快意处起。
盖众人忧乐以情，而君子忧乐以理也。
[33m    --[32m《菜根谭》[m[m
%
谢豹覆面，犹知自愧；唐鼠易肠，犹知自悔。
盖愧悔二字，乃吾人去恶迁善之门，起死回生之路也。
人生若无此念头，便是既死之寒灰，已枯之槁木矣。
何处讨些生理？
[33m    --[32m《菜根谭》[m[m
%
异宝奇琛，俱民必争之器；瑰节奇行，多冒不祥之名。
总不若寻常历履易简行藏，可以完天地浑噩之真，享民物和平之福。
[33m    --[32m《菜根谭》[m[m
%
福善不在杳冥，即在食息起居处牖其衷；
祸淫不在幽渺，即在动静语默间夺其魄。
可见人之精爽常通于天，于之威命即寓于人，天人岂相远哉！
[33m    --[32m《菜根谭》[m[m
%
昼闲人寂，听数声鸟语悠扬，不觉耳根尽彻；
夜静天高，看一片云光舒卷，顿令眼界俱空。
[33m    --[32m《菜根谭》[m[m
%
世事如棋局，不着得才是高手；
人生似瓦盆，打破了方见真空。
[33m    --[32m《菜根谭》[m[m
%
龙可豢非真龙，虎可搏非真虎，故爵禄可饵荣进之辈，必不可笼淡然无欲之人；
鼎镬可及宠利之流，必不可加飘然远引之士。
[33m    --[32m《菜根谭》[m[m
%
一场闲富贵，狠狠争来，虽得还是失；
百岁好光阴，忙忙过了，纵寿亦为夭。
[33m    --[32m《菜根谭》[m[m
%
高车嫌地僻，不如鱼鸟解亲人。
驷马喜门高，怎似莺花能避俗。
[33m    --[32m《菜根谭》[m[m
%
红烛烧残，万念自然厌冷；
黄梁梦破，一身亦似云浮。
[33m    --[32m《菜根谭》[m[m
%
千载奇逢，无如好书良友；
一生清福，只在碗茗炉烟。
[33m    --[32m《菜根谭》[m[m
%
蓬茅下诵诗读书，日日与圣贤晤语，谁云贫是病？
樽垒边幕天席地，时时共造化氤氲，孰谓非禅？
兴来醉倒落花前，天地即为衾枕。
机息坐忘盘石上，古今尽属蜉蝣。
[33m    --[32m《菜根谭》[m[m
%
昴藏老鹤虽饥，饮啄犹闲，肯同鸡鹜之营营而竞食？
偃蹇寒松纵老，丰标自在，岂似桃李之灼灼而争妍！
[33m    --[32m《菜根谭》[m[m
%
吾人适志于花柳烂漫之时，得趣于笙歌腾沸之处，乃是造花之幻境，人心之荡念也。
须从木落草枯之后，向声希味淡之中，觅得一些消息，才是乾坤的橐龠，人物的根宗。
[33m    --[32m《菜根谭》[m[m
%
静处观人事，即伊吕之勋庸、夷齐之节义，无非大海浮沤；
闲中玩物情，虽木石之偏枯、鹿豕之顽蠢，总是吾性真如。
[33m    --[32m《菜根谭》[m[m
%
花开花谢春不管，拂意事休对人言；
水暖水寒鱼自知，会心处还期独赏。
[33m    --[32m《菜根谭》[m[m
%
闲观扑纸蝇，笑痴人自生障碍；
静觇竞巢鹊，叹杰士空逞英雄。
[33m    --[32m《菜根谭》[m[m
%
看破有尽身躯，万境之尘缘自息；
悟入无坏境界，一轮之心月独明。
[33m    --[32m《菜根谭》[m[m
%
木床石枕冷家风，拥衾时魂梦亦爽；
麦饭豆羹淡滋味，放箸处齿颊犹香。
[33m    --[32m《菜根谭》[m[m
%
谈纷华而厌者，或见纷华而喜；
语淡泊而欣者，或处淡泊而厌。
须扫除浓淡之见，灭却欣厌之情，才可以忘纷华而甘淡泊也。
[33m    --[32m《菜根谭》[m[m
%
“鸟惊心”“花溅泪”，怀此热肝肠，如何领取得冷风月；
“山写照”“水传神”，识吾真面目，方可摆脱得幻乾坤。
富贵得一世宠荣，到死时反增了一个恋字，如负重担；
贫贱得一世清苦，到死时反脱了一个厌字，如释重枷。
人诚想念到此，当急回贪恋之首而猛舒愁苦之眉矣。
[33m    --[32m《菜根谭》[m[m
%
人之有生也，如太仓之粒米，如灼目之电光，如悬崖之朽木，如逝海之一波。
知此者如何不悲？如何不乐？如何看他不破而怀贪生之虑？如何看他不重而贻虚生之羞？
[33m    --[32m《菜根谭》[m[m
%
鹬蚌相持，兔犬共毙，冷觑来令人猛气全消；
鸥凫共浴，鹿豕同眠，闲观去使我机心顿息。
[33m    --[32m《菜根谭》[m[m
%
迷则乐境成苦海，如水凝为冰；悟则苦海为乐境，犹冰涣作水。
可见苦乐无二境，迷悟非两心，只在一转念间耳。
[33m    --[32m《菜根谭》[m[m
%
遍阅人情，始识疏狂之足贵；备尝世味，方知淡泊之为真。
[33m    --[32m《菜根谭》[m[m
%
地宽天高，尚觉鹏程之窄小；云深松老，方知鹤梦之悠闲。
[33m    --[32m《菜根谭》[m[m
%
两个空拳握古今，握住了还当放手；一条竹杖挑风月，挑到时也要息肩。
[33m    --[32m《菜根谭》[m[m
%
阶下几点飞翠落红，收拾来无非诗料；窗前一片浮青映白，悟入处尽是禅机。
[33m    --[32m《菜根谭》[m[m
%
忽睹天际彩云，常疑好事皆虚事；再观山中闲木，方信闲人是福人。
[33m    --[32m《菜根谭》[m[m
%
东海水曾闻无定波，世事何须扼腕？北邙山未省留闲地，人生且自舒眉。
[33m    --[32m《菜根谭》[m[m
%
天地尚无停息，日月且有盈亏，况区区人世能事事园满而时时暇逸乎？
只是向忙里偷闲，遇缺处知足，则操纵在我，作息自如，即造物不得与之论劳逸较亏盈矣！
[33m    --[32m《菜根谭》[m[m
%
“霜天闻鹤唳，雪夜听鸡鸣，”得乾坤清纯之气。
“晴空看鸟飞，活水观鱼戏，”识宇宙活泼之机。
[33m    --[32m《菜根谭》[m[m
%
闲烹山茗听瓶声，炉内识阴阳之理；
漫履楸枰观局戏，手中悟生杀之机。
[33m    --[32m《菜根谭》[m[m
%
芳菲园林看蜂忙，觑破几般尘情世态；
寂寞衡茅观燕寝，引起一种冷趣幽思。
[33m    --[32m《菜根谭》[m[m
%
会心不在远，得趣不在多。
盆池拳石间，便居然有万里山川之势，片言只语内，
便宛然见万古圣贤之心，才是高士的眼界，达人的胸襟。
[33m    --[32m《菜根谭》[m[m
%
心与竹俱空，问是非何处安脚？貌偕松共瘦，知忧喜无由上眉。
[33m    --[32m《菜根谭》[m[m
%
趋炎虽暖，暖后更觉寒威；
食蔗能甘，甘余便生苦趣。
何似养志于清修而炎凉不涉，栖心于淡泊而甘苦俱忘，其自得为更多也。
[33m    --[32m《菜根谭》[m[m
%
席拥飞花落絮，坐林中锦绣团［衤因］；
炉烹白雪清冰，熬天上玲珑液髓。
[33m    --[32m《菜根谭》[m[m
%
逸态闲情，惟期自尚，何事处修边幅；
清标傲骨，不愿人怜，无劳多买胭脂。
[33m    --[32m《菜根谭》[m[m
%
天地景物，如山间之空翠，水上之涟漪，潭中之云影，
            草际之烟光，月下之花容，风中之柳态。
若有若无，半真半幻，最足以悦人心目而豁人性灵。真天地间一妙境也。
[33m    --[32m《菜根谭》[m[m
%
“乐意相关禽对语，生香不断树交花”，此是无彼无此得真机。
“野色更无山隔断，天光常与水相连”，此是彻上彻下得真意。
吾人时时以此景象注之心目，何患心思不活泼，气象不宽平！
[33m    --[32m《菜根谭》[m[m
%
鹤唳、雪月、霜天、想见屈大夫醒时之激烈；
鸥眠、春风、暖日，会知陶处士醉里之风流。
[33m    --[32m《菜根谭》[m[m
%
黄鸟情多，常向梦中呼醉客；
白云意懒，偏来僻处媚幽人。
[33m    --[32m《菜根谭》[m[m
%
栖迟蓬户，耳目虽拘而神情自旷；
结纳山翁，仪文虽略而意念常真。
[33m    --[32m《菜根谭》[m[m
%
满室清风满几月，坐中物物见天心；
一溪流水一山云，行处时时观妙道。
[33m    --[32m《菜根谭》[m[m
%
炮凤烹龙，放箸时与□盐无异；
悬金佩玉，成灰处共瓦砾何殊。
[33m    --[32m《菜根谭》[m[m
%
“扫地白云来”，才着工夫便起障。
“凿池明月入”，能空境界自生明。
[33m    --[32m《菜根谭》[m[m
%
造花唤作小儿，切莫受渠戏弄；
天地丸为大块，须要任我炉锤。
[33m    --[32m《菜根谭》[m[m
%
想到白骨黄泉，壮士之肝肠自冷；
坐老清溪碧嶂，俗流之胸次亦闲。
[33m    --[32m《菜根谭》[m[m
%
夜眠八尺，日啖二升，何须百般计较；
书读五车，才分八斗，未闻一日清闲。
[33m    --[32m《菜根谭》[m[m
%
君子之心事，天青日白，不可使人不知；
君子之才华，玉韫珠藏，不可使人易知。
[33m    --[32m《菜根谭》[m[m
%
耳中常闻逆耳之言，心中常有拂心之事，才是进德修行的砥石。
若言言悦耳，事事快心，便把此生埋在鸩毒中矣。
[33m    --[32m《菜根谭》[m[m
%
疾风怒雨，禽鸟戚戚；
霁月光风，草木欣欣，可见天地不可一日无和气，人心不可一日无喜神。
[33m    --[32m《菜根谭》[m[m
%
［酉农］肥辛甘非真味，真味只是淡；
神奇卓异非至人，至人只是常。
[33m    --[32m《菜根谭》[m[m
%
夜深人静独坐观心；
始知妄穷而真独露，每于此中得大机趣；
既觉真现而妄难逃，又于此中得大惭忸。
[33m    --[32m《菜根谭》[m[m
%
恩里由来生害，故快意时须早回头；
败后或反成功，故拂心处切莫放手。
[33m    --[32m《菜根谭》[m[m
%
藜口苋肠者，多冰清玉洁；
衮衣玉食者，甘婢膝奴颜。
盖志以淡泊明，而节从肥甘丧矣。
[33m    --[32m《菜根谭》[m[m
%
面前的田地要放得宽，使人无不平之叹；
身后的惠泽要流得长，使人有不匮之思。
[33m    --[32m《菜根谭》[m[m
%
路径窄处留一步，与人行；
滋味浓的减三分，让人嗜。
此是涉世一极乐法。
[33m    --[32m《菜根谭》[m[m
%
作人无甚高远的事业，摆脱得俗情便入名流；
为学无甚增益的工夫，减除得物累便臻圣境。
[33m    --[32m《菜根谭》[m[m
%
宠利毋居人前，德业毋落人后，受享毋逾分外，修持毋减分中。
[33m    --[32m《菜根谭》[m[m
%
处世让一步为高，退步即进步的张本；
待人宽一分是福，利人实利己的根基。
[33m    --[32m《菜根谭》[m[m
%
盖世的功劳，当不得一个矜字；
弥天的罪过，当不得一个悔字。
[33m    --[32m《菜根谭》[m[m
%
完名美节，不宜独任，分些与人，可以远害全身；
辱行污名，不宜全推，引些归己，可以韬光养德。
[33m    --[32m《菜根谭》[m[m
%
事事要留个有余不尽的意思，便造物不能忌我，鬼神不能损我。
若业必求满，功必求盈者，不生内变，必招外忧。
[33m    --[32m《菜根谭》[m[m
%
家庭有个真佛，日用有种真道，人能诚心和气、愉色婉言，使父母兄弟间形体万倍也。
[33m    --[32m《菜根谭》[m[m
%
攻人之恶毋太严，要思其堪受；教人以善毋过高，当使其可从。
[33m    --[32m《菜根谭》[m[m
%
粪虫至秽变为蝉，而饮露于秋风；
腐草无光化为荧，而耀采于夏月。
故知洁常自污出，明每从暗生也。
[33m    --[32m《菜根谭》[m[m
%
矜高倨傲，无非客气降伏得，客气下而后正气伸；
情欲意识，尽属妄心消杀得，妄心尽而后真心现。
[33m    --[32m《菜根谭》[m[m
%
饱后思味，，则浓淡之境都消；
色后思淫，则男女之见尽绝。
故人当以事后之悔，悟破临事之痴迷，则性定而动无不正。
[33m    --[32m《菜根谭》[m[m
%
居轩冕之中，不可无山林的气味；
处林泉之下，须要怀廊庙的经纶。
处世不必邀功，无过便是功；
与人不要感德，无怨便是德。
[33m    --[32m《菜根谭》[m[m
%
忧勤是美德，太苦则无以适性怡情；
淡泊是高风，太枯则无以济人利物。
[33m    --[32m《菜根谭》[m[m
%
事穷势蹙之人，当原其初心；
功成行满之士，要观其末路。
[33m    --[32m《菜根谭》[m[m
%
富贵家宜宽厚而反忌［克寸］，是富贵而贫贱，其行如何能享？
聪明人宜敛藏而反炫耀，是聪明而愚懵，其病如何不败！
[33m    --[32m《菜根谭》[m[m
%
人情反覆，世路崎岖。
行不去，须知退一步之法；
行得去，务加让三分之功。
[33m    --[32m《菜根谭》[m[m
%
待小人不难于严，而难于不恶；
待君子不难于恭，而难于有礼。
[33m    --[32m《菜根谭》[m[m
%
宁守浑噩而黜聪明，留些正气还天地；
宁谢纷华而甘淡泊，遗个清名在乾坤。
[33m    --[32m《菜根谭》[m[m
%
降魔者先降其心，心伏则群魔退听；
驭横者先驭其气，气平则外横不侵。
[33m    --[32m《菜根谭》[m[m
%
养弟子如养闺女，最要严出入，谨交游。
若一接近匪人，是清净田中下一不净的种子，便终身难植嘉苗矣。
[33m    --[32m《菜根谭》[m[m
%
欲路上事，毋乐其便而姑为染指，一染指便深入万仞；
理路上事，毋惮其难而稍为退步，一退步便远隔千山。
[33m    --[32m《菜根谭》[m[m
%
念头浓者自待厚，待人亦厚，处处皆厚；
念头淡者自待薄，待人亦薄，事事皆薄。
故君子居常嗜好，不可太浓艳，亦不宜太枯寂。
[33m    --[32m《菜根谭》[m[m
%
彼富我仁，彼爵我义，君子故不为君相所牢笼；
人定胜天，志壹动气，君子亦不受造化之陶铸。
[33m    --[32m《菜根谭》[m[m
%
立身不高一步立，如尘里振衣、泥中濯足，如何超达？
处世不退一步处，如飞而蛾投烛、羝羊触藩，如何安乐？
[33m    --[32m《菜根谭》[m[m
%
学者要收拾精神并归一处。
如修德而留意于事功名誉，必无实谊；
读书而寄兴于吟咏风雅，定不深心。
[33m    --[32m《菜根谭》[m[m
%
人人有个大慈悲，维摩屠刽无二心也；
处处有种真趣味，金屋茅檐非两地也。
只是欲闭情封，当面错过，便咫尺千里矣。
[33m    --[32m《菜根谭》[m[m
%
进德修行，要个木石的念头，若一有欣羡便趋欲境；
济世经邦，要段云水的趣味，若一有贪著便堕危机。
[33m    --[32m《菜根谭》[m[m
%
肝受病则目不能视，肾受病则耳不能听。
病受于人所不见，必发于人所共见。
故君子欲无得罪于昭昭，先无得罪于冥冥。
[33m    --[32m《菜根谭》[m[m
%
福莫福于少事，祸莫祸于多心。
惟少事者方知少事之为福；惟平心者始知多心之为祸。
[33m    --[32m《菜根谭》[m[m
%
处治世宜方，处乱世当圆，处叔季之世当方圆并用。
待善人宜宽，待恶人当严，待庸众之人宜宽严互存。
[33m    --[32m《菜根谭》[m[m
%
我有功于人不可念，而过则不可不念；
人有恩于我不可忘，而怨则不可不忘。
[33m    --[32m《菜根谭》[m[m
%
心地干净，方可读书学古。
不然，见一善行，窃以济私；
闻一善言，假以覆短。是又藉寇兵而赍盗粮矣。
[33m    --[32m《菜根谭》[m[m
%
奢者富而不足，何如俭者贫而有余。
能者劳而俯怨，何如拙者逸而全真。
[33m    --[32m《菜根谭》[m[m
%
读书不见圣贤，如铅椠佣。
居官不爱子民，如衣冠盗。
讲学不尚躬行，如口头禅。
立业不思种德。如眼前花。
[33m    --[32m《菜根谭》[m[m
%
人心有部真文章，都被残编断简封固了；
有部真鼓吹，都被妖歌艳舞湮没了。
学者须扫除外物直觅本来，才有个真受用。
苦心中常得悦心之趣；得意时便一失意之悲。
[33m    --[32m《菜根谭》[m[m
%
富贵名誉自道德来者，如山林中花，自是舒徐。
繁衍自功业来者，如盆槛中花，便有迁徙废兴。
若以权力得者，其根不植，其萎可立而待矣。
[33m    --[32m《菜根谭》[m[m
%
栖守道德者，寂寞一时；依阿权势者，凄凉万古。
达人观物外之物，思身后之身，宁受一时之寂寞，毋取万古之凄凉。
[33m    --[32m《菜根谭》[m[m
%
春至时和，花尚铺一段好色，鸟且啭几句好音。
士君子幸列头角，复遇温饱，不思立好言、行好事，虽是在世百年，恰似未生一日。
[33m    --[32m《菜根谭》[m[m
%
学者有段兢业的心思，又要有段潇洒的趣味。
若一味敛束清苦，是有秋杀无春生，何以发育万物？
[33m    --[32m《菜根谭》[m[m
%
真廉无廉名，立名者正所以为贪；大巧无巧术，用术者乃所以为拙。
[33m    --[32m《菜根谭》[m[m
%
心体光明，暗室中有青天；念头暗昧，白日下有厉鬼。
[33m    --[32m《菜根谭》[m[m
%
人知名位为乐，不知无名无位之乐为最真；
人知饥寒为忧，不知不饥不寒之忧为更甚。
[33m    --[32m《菜根谭》[m[m
%
为恶而畏人知，恶中犹有善路；为善而急人知，善处即是恶根。
[33m    --[32m《菜根谭》[m[m
%
天之机缄不测，抑而伸、伸而抑，皆是播弄英雄、颠倒豪杰处。
君子只是逆来顺受、居安思危，天亦无所用其伎俩矣。
[33m    --[32m《菜根谭》[m[m
%
福不可邀，养喜神以为招福之本；祸不可避，去杀机以为远祸之方。
[33m    --[32m《菜根谭》[m[m
%
十语九中未必称奇，一语不中，则愆尤骈集；
十谋九成未必归功，一谋不成则訾议丛兴。
君子所以宁默毋躁、宁拙毋巧。
[33m    --[32m《菜根谭》[m[m
%
天地之气，暖则生，寒则杀。故性气清冷者，受享亦凉薄。
惟气和暖心之人，其福亦厚，其泽亦长。
[33m    --[32m《菜根谭》[m[m
%
天理路上甚宽，稍游心胸中，使觉广大宏朗；
人欲路上甚窄，才寄迹眼前，俱是荆棘泥涂。
[33m    --[32m《菜根谭》[m[m
%
一苦一乐相磨练，练极而成福者，其福始久；
一疑一信相参勘，勘极而成知者，其知始真。
[33m    --[32m《菜根谭》[m[m
%
地之秽者多生物，水之清者常无鱼，故君子当存含垢纳污之量，不可持好洁独行之操。
[33m    --[32m《菜根谭》[m[m
%
泛驾之马可就驰驱，跃冶之金终归型范。
只一优游不振，便终身无个进步。
白沙云：“为人多病未足羞，一生无病是吾忧。”真确实之论也。
[33m    --[32m《菜根谭》[m[m
%
人只一念贪私，便销刚为柔，塞智为昏，变恩为惨，染洁为污，坏了一生人品。
故古人以不贪为宝，所以度越一世。
[33m    --[32m《菜根谭》[m[m
%
耳目见闻为外贼，情欲意识为内贼，只是主人公惺惺不昧，独坐中堂，贼便化为家人矣。
[33m    --[32m《菜根谭》[m[m
%
图未就之功，不如保已成之业；
悔既往之失，亦要防将来之非。
[33m    --[32m《菜根谭》[m[m
%
气象要高旷，而不可疏狂。
心思要缜缄，而不可琐屑。
趣味要冲淡，而不可偏枯。
操守要严明，而不可激烈。
[33m    --[32m《菜根谭》[m[m
%
风来疏竹，风过而竹不留声；
雁度寒潭，雁去而潭不留影。
故君子事来而心始现，事去而心随空。
[33m    --[32m《菜根谭》[m[m
%
清能有容，仁能善断，明不伤察，直不过矫，是谓蜜饯不甜、海味不咸，才是懿德。
[33m    --[32m《菜根谭》[m[m
%
贫家净扫地，贫女净梳头。景色虽不艳丽，气度自是风雅。
士君子当穷愁寥落，奈何辄自废弛哉！
[33m    --[32m《菜根谭》[m[m
%
闲中不放过，忙中有受用。静中不落空，动中有受用。暗中不欺隐，明中有受用。
[33m    --[32m《菜根谭》[m[m
%
念头起处，才觉向欲路上去，便挽从理路上来。
一起便觉，一觉便转，此是转祸为福、起死回生的关头，切莫当面错过。
[33m    --[32m《菜根谭》[m[m
%
天薄我以福，吾厚吾德以迓之；天劳我以形，吾逸吾心以补之；
天扼我以遇，吾亨吾道以通之。天且奈我何哉！
[33m    --[32m《菜根谭》[m[m
%
真士无心邀福，天即就无心处牖其衷；
险人著意避祸，天即就著意中夺其魂。
可见天之机权最神，人之智巧何益！
[33m    --[32m《菜根谭》[m[m
%
声妓晚景从良，一世之烟花无碍；
贞妇白头失守，半生之清苦俱非。
语云：“看人只看后半截”，真名言也。
[33m    --[32m《菜根谭》[m[m
%
平民肯种德施惠，便是无位的卿相；
仕夫徒贪权市宠，竟成有爵的乞人。
[33m    --[32m《菜根谭》[m[m
%
问祖宗之德泽，吾身所享者，是当念其积累之难；
问子孙之福祉，吾身所贻者，是要思其倾覆之易。
[33m    --[32m《菜根谭》[m[m
%
君子而诈善，无异小人之肆恶；
君子而改节，不若小人之自新。
[33m    --[32m《菜根谭》[m[m
%
家人有过不宜暴扬，不宜轻弃。此事难言，借他事而隐讽之。
今日不悟，俟来日正警之。如春风之解冻、和气之消冰，才是家庭的型范。
[33m    --[32m《菜根谭》[m[m
%
此心常看得圆满，天下自无缺陷之世界；
此心常放得宽平，天下自无险侧之人情。
[33m    --[32m《菜根谭》[m[m
%
淡薄之士，必为浓艳者所疑；
检饬之人，多为放肆者所忌。
君子处此固不可少变其操履，亦不可太露其锋芒。
[33m    --[32m《菜根谭》[m[m
%
居逆境中，周身皆针砭药石，砥节□［石厉］行而不觉；
处顺境内，满前尽兵刃戈矛，销膏靡骨而不知。
[33m    --[32m《菜根谭》[m[m
%
生长富贵丛中的，嗜欲如猛火、权势似烈焰。
若不带些清冷气味，其火焰不至焚人，必将自焚。
[33m    --[32m《菜根谭》[m[m
%
人心一真，便霜可飞、城可陨、金石可贯。
若伪妄之人，形骸徒具，真宰已亡。
对人则面目可憎，独居则形影自愧。
[33m    --[32m《菜根谭》[m[m
%
文章做到极处，无有他奇，只是恰好；
人品做到极处，无有他异，只是本然。
[33m    --[32m《菜根谭》[m[m
%
以幻迹言，无论功名富贵，即肢体亦属委；
以真境言，无论父母兄弟，即万物皆吾一体。
人能看得破，认得真，才可以任天下之负担，亦可脱世间之缰锁。
[33m    --[32m《菜根谭》[m[m
%
爽口之味，皆烂肠腐骨之药，五分便无殃；
快心之事，悉败身散德之媒，五分便无悔。
[33m    --[32m《菜根谭》[m[m
%
不责人小过，不发人阴私，不念人旧恶，三者可以养德，亦可以远害。
[33m    --[32m《菜根谭》[m[m
%
天地有万古，此身不再得；人生只百年，此日最易过。
幸生其间者，不可不知有生之乐，亦不可不怀虚生之忧。
[33m    --[32m《菜根谭》[m[m
%
老来疾病都是壮时招得；衰时罪孽都是盛时作得。
故持盈履满，君子尤兢兢焉。
[33m    --[32m《菜根谭》[m[m
%
市私恩不如扶公议，结新知不如敦旧好，立荣名不如种阴得，尚奇节不如谨庸行。
[33m    --[32m《菜根谭》[m[m
%
公平正论不可犯手，一犯手则遗羞万世；
权门私窦不可著脚，一著脚则玷污终身。
[33m    --[32m《菜根谭》[m[m
%
曲意而使人喜，不若直节而使人忌；
无善而致人誉，不如无恶而致人毁。
[33m    --[32m《菜根谭》[m[m
%
处父兄骨肉之变，宜从容不宜激烈；
遇朋友交游之失，宜剀切不宜优游。
[33m    --[32m《菜根谭》[m[m
%
小处不渗漏，暗处不欺隐，末路不怠荒，才是真正英雄。
[33m    --[32m《菜根谭》[m[m
%
惊奇喜异者，终无远大之识；
苦节独行者，要有恒久之操。
[33m    --[32m《菜根谭》[m[m
%
当怒火欲水正腾沸时，明明知得，又明明犯着。
知得是谁，犯着又是谁。此处能猛然转念，邪魔便为知真君子矣。
[33m    --[32m《菜根谭》[m[m
%
毋偏信而为奸所欺，毋自任而为气所使，毋以己之长而形人之短，毋因己之拙而忌人之能。
[33m    --[32m《菜根谭》[m[m
%
人之短处，要曲为弥缝，如暴而扬之，是以短攻短；
人有顽的，要善为化诲，如忿而嫉之，是以顽济顽。
[33m    --[32m《菜根谭》[m[m
%
遇沉沉不语之士，且莫输心；见悻悻自好之人，应须防口。
[33m    --[32m《菜根谭》[m[m
%
念头昏散处，要知提醒；念头吃紧时，要知放下。
不然恐去昏昏之病，又来憧憧之扰矣。
[33m    --[32m《菜根谭》[m[m
%
霁日青天，倏变为迅雷震电；疾风怒雨，倏转为朗月晴空。
气机何尝一毫凝滞，太虚何尝一毫障蔽，人之心体亦当如是。
[33m    --[32m《菜根谭》[m[m
%
胜私制欲之功，有曰识不早、力不易者，有曰识得破、忍不过者。
盖识是一颗照魔的明珠，力是一把斩魔的慧剑，两不可少也。
[33m    --[32m《菜根谭》[m[m
%
横逆困穷，是煅炼豪杰的一副炉锤。
能受其煅炼者，则身心交益；不受其煅炼者，则身心交损。
[33m    --[32m《菜根谭》[m[m
%
害人之心不可有，防人之心不可无，此戒疏于虑者。
宁受人之欺，毋逆人之诈，此警伤于察者。二语并存，精明浑厚矣。
[33m    --[32m《菜根谭》[m[m
%
毋因群疑而阻独见，毋任己意而废人言，毋私不惠而伤大体，毋借公论以快私情。
[33m    --[32m《菜根谭》[m[m
%
善人未能急亲，不宜预扬，恐来谗谮之奸；
恶人未能轻去，不宜先发，恐招媒孽之祸。
[33m    --[32m《菜根谭》[m[m
%
青天白日的节义，自暗室屋漏中培来；
旋乾转坤的经纶，从临深履薄中操出。
[33m    --[32m《菜根谭》[m[m
%
父慈子孝、兄友弟恭，纵做到极处，俱是合当如是，着不得一毫感激的念头。
如施者任德，受者怀恩，便是路人，便成市道矣。
[33m    --[32m《菜根谭》[m[m
%
炎凉之态，富贵更甚于贫贱；妒忌之心，骨肉尤狠于外人。
此处若不当以冷肠，御以平气，鲜不日坐烦恼障中矣。
[33m    --[32m《菜根谭》[m[m
%
功过不宜少混，混则人怀惰隳之心；
恩仇不可太明，明则人起携贰之志。
[33m    --[32m《菜根谭》[m[m
%
恶忌阴，善忌阳，故恶之显者祸浅，而隐者祸深。善之显者功小，而隐者功大。
[33m    --[32m《菜根谭》[m[m
%
德者才之主，才者德之奴用事矣，几何不魍魉猖狂。
[33m    --[32m《菜根谭》[m[m
%
锄奸杜［亻幸］，要放他一条去路。
若使之一无所容，便如塞鼠穴者，一切去路都塞尽，则一切好物都咬破矣。
[33m    --[32m《菜根谭》[m[m
%
士君子不能济物者，遇人痴迷处，出一言提醒之，
遇人急难处，出一言解救之，亦是无量功德矣。
[33m    --[32m《菜根谭》[m[m
%
处己者触事皆成药石，尤人者动念即是戈矛，
一以辟众善之路，一以浚诸恶之源，相去霄壤矣。
[33m    --[32m《菜根谭》[m[m
%
事业文章随身销毁，而精神万古如新；
功名富贵逐世转移，而气节千载一时。群信不以彼易此也。
[33m    --[32m《菜根谭》[m[m
%
鱼网之设，鸿则罹其中；螳螂之贪，雀又乘其后。
机里藏机变外生变，智巧何足恃哉。
[33m    --[32m《菜根谭》[m[m
%
作人无一点真恳的念头，便成个花子，事事皆虚；
涉世无一段圆活的机趣，便是个木人，处处有碍。
[33m    --[32m《菜根谭》[m[m
%
事有急之不白者，宽之或自明，毋躁急以速其忿；
人有切之不从者，纵之或自化，毋操切以益其顽。
[33m    --[32m《菜根谭》[m[m
%
节义傲青云，文章高白雪，若不以德性陶□［钅容］之，终为血气之私、技能之末。
[33m    --[32m《菜根谭》[m[m
%
谢事当谢于正盛之时，居身宜居于独后之地，谨德须谨于至微之事，施恩务施于不报之人。
[33m    --[32m《菜根谭》[m[m
%
德者事业之基，未有基不固而栋宇坚久者；
心者修裔之根，未有根不植而枝叶荣茂者。
[33m    --[32m《菜根谭》[m[m
%
道是一件公众的物事，当随人而接引；
学是一个寻常的家饭，当随事而警惕。
[33m    --[32m《菜根谭》[m[m
%
念头宽厚的，如春风煦育，万物遭之而生；
念头忌□［克寸］的，如朔雪阴凝，万物遭之而死。
[33m    --[32m《菜根谭》[m[m
%
勤者敏于德义，而世人借勤以济其贪；
俭者淡于货利，而世人假俭以饰其吝。
君子持身之符，反为小人营私之具矣，惜哉！
[33m    --[32m《菜根谭》[m[m
%
人之过误宜恕，而在己则不可恕；
己之困辱宜忍，而在人则不可忍。
[33m    --[32m《菜根谭》[m[m
%
恩宜自淡而浓，先浓后淡者人忘其惠；
威宜自严而宽，先宽后严者人怨其酷。
[33m    --[32m《菜根谭》[m[m
%
士君子处权门要路，操履要严明，心气要和易。
毋少随而近腥膻之党，亦毋过激而犯蜂虿之毒。
[33m    --[32m《菜根谭》[m[m
%
遇欺诈的人，以诚心感动之；遇暴戾的人，以和气熏蒸之；
遇倾邪私曲的人，以名义气节激励之。天下无不入我陶熔中矣。
[33m    --[32m《菜根谭》[m[m
%
一念慈祥，可以酝酿两间和气；寸心洁白，可以昭垂百代清芬。
[33m    --[32m《菜根谭》[m[m
%
阴谋怪习、异行奇能，俱是涉世的祸胎。只一个庸德庸行，便可以完混沌而招和平。
[33m    --[32m《菜根谭》[m[m
%
语云：“登山耐险路，踏雪耐危桥”。一耐字极有意味。
如倾险之人情、坎坷之世道，若不得一耐字撑持过去，几何不坠入榛莽坑堑哉！
[33m    --[32m《菜根谭》[m[m
%
夸逞功业炫耀文章，皆是靠外物做人。
不知心体莹然，本来不失，即无寸功只字，亦自有堂堂正正做人处。
[33m    --[32m《菜根谭》[m[m
%
不昧己心，不拂人情，不竭物力，三者可以为天地立心，为生民立命，为子孙造福。
[33m    --[32m《菜根谭》[m[m
%
居官有二语曰：“惟公则生明，惟廉则生威”。
居家有二语曰：“惟恕则平情，惟俭则足用”。
[33m    --[32m《菜根谭》[m[m
%
处富贵之地，要知贫贱的痛痒；当少壮之时，须念衰老的辛酸。
[33m    --[32m《菜根谭》[m[m
%
持身不可太皎洁，一切污辱垢秽要茹纳的；
与人不可太分明，一切善恶贤愚要包容的。
[33m    --[32m《菜根谭》[m[m
%
休与小人仇雠，小人自有对头；
休向君子谄媚，君子原无私惠。
[33m    --[32m《菜根谭》[m[m
%
磨［石厉］当如百炼之金，急就者非邃养施为宜。
似千钧之弩，轻发者无宏功。
[33m    --[32m《菜根谭》[m[m
%
建功立业者，多虚圆之士；偾事失机者，必执拗之人。
[33m    --[32m《菜根谭》[m[m
%
俭，美德也，过则为悭吝、为鄙啬，反伤雅道；
让，懿行也，过则为足恭、为曲礼，多出机心。
[33m    --[32m《菜根谭》[m[m
%
毋忧拂意，毋喜快心，毋恃久安，毋惮初难。
[33m    --[32m《菜根谭》[m[m
%
饮宴之乐多，不是个好人家。声华之习胜，不是个好士子。
名位之念重，不是个好臣工。
[33m    --[32m《菜根谭》[m[m
%
仁人心地宽舒，便福厚而庆长，事事成个宽舒气象；
鄙夫念头迫促，便禄薄而泽短，事事成个迫促规模。
[33m    --[32m《菜根谭》[m[m
%
用人不宜刻，刻则思效者去；交友不宜滥，滥则贡谀者来。
[33m    --[32m《菜根谭》[m[m
%
大人不可不畏，畏大人则无放逸之心；
小民亦不可不畏，畏小民则无豪横之名。
[33m    --[32m《菜根谭》[m[m
%
事稍拂逆，便思不如我的人，则怨尤自消；
心稍怠荒，便思胜似我的人，则精神自奋。
[33m    --[32m《菜根谭》[m[m
%
不可乘喜而轻诺，不可因醉而生［目真］，不可乘快而多事，不可因倦而鲜终。
[33m    --[32m《菜根谭》[m[m
%
钓水，逸事也，尚持生杀之柄；弈棋，清戏也，且动战争之心。
可见喜事不如省事之为适，多能不如无能之全真。
[33m    --[32m《菜根谭》[m[m
%
听静夜之钟声，唤醒梦中之梦；观澄潭之月影，窥见身外之身。
[33m    --[32m《菜根谭》[m[m
%
鸟语虫声，总是传心之诀；花英草色，无非见道之文。
学者要天机清彻，胸次玲珑，触物皆有会心处。
[33m    --[32m《菜根谭》[m[m
%
人解读有字书，不解读无字书；
知弹有弦琴，不知弹无弦琴。
以迹用不以神用，何以得琴书佳趣？
[33m    --[32m《菜根谭》[m[m
%
山河大地已属微尘，而况尘中之尘！
血肉身驱且归泡影，而况影外之影！
非上上智，无了了心。
[33m    --[32m《菜根谭》[m[m
%
石火光中，争长兢短，几何光阴？
蜗牛角上，较雌论雄，许大世界？
[33m    --[32m《菜根谭》[m[m
%
有浮云富贵之风，而不必岩栖穴处；
无膏盲泉石之癖，而常自醉酒耽诗。
兢逐听人而不嫌尽醉，恬［忄詹］适己而不夸独醒，
此释氏所谓不为法缠、不为空缠，身心两自在者。
[33m    --[32m《菜根谭》[m[m
%
延促由于一念，宽窄系之寸心。故机闲者一日遥于千古，意宽者斗室广于两间。
[33m    --[32m《菜根谭》[m[m
%
都来眼前事，知足者仙境，不知足者凡境；
总出世上因，善用者生机，不善用者杀机。
[33m    --[32m《菜根谭》[m[m
%
趋炎附势之祸，甚惨亦甚速；栖恬守逸之味，最淡亦最长。
[33m    --[32m《菜根谭》[m[m
%
色欲火炽，而一念及病时，便兴似寒灰；
名利饴甘，而一想到死地，便味如咀蜡。
故人常忧死虑病，亦可消幻业而长道心。
[33m    --[32m《菜根谭》[m[m
%
争先的径路窄，退后一步自宽平一步；
浓艳的滋味短，清淡一分自悠长一分。
[33m    --[32m《菜根谭》[m[m
%
隐逸林中无荣辱，道义路上泯炎凉。
进步处便思退步，庶免触藩之祸。
着手时光图放手，才脱骑虎之危。
[33m    --[32m《菜根谭》[m[m
%
贪得者分金恨不得玉，封公怨不授侯，权豪自甘乞丐；
知足者藜羹旨于膏梁，布袍暖于狐貉，编民不让王公。
[33m    --[32m《菜根谭》[m[m
%
矜名不如逃名趣，练事何如省事闲。
孤云出岫，去留一无所系；
朗镜悬空，静躁两不相干。
[33m    --[32m《菜根谭》[m[m
%
山林是胜地，一营恋便成市朝；
书画是雅事，一贪痴便成商贾。
盖心无染著，俗境是仙都；
心有丝牵，乐境成悲地。
[33m    --[32m《菜根谭》[m[m
%
时当喧杂，则平日所记忆者皆漫然忘去；
境在清宁，则夙昔所遗忘者又恍尔现前。
可见静躁稍分，昏明顿异也。
[33m    --[32m《菜根谭》[m[m
%
芦花被下卧雪眠云，保全得一窝夜气；
竹叶杯中吟风弄月，躲离了万丈红尘。
[33m    --[32m《菜根谭》[m[m
%
出世之道，即在涉世中，不必绝人以逃世；
了心之功即在尽心内，不必绝欲以灰心。
[33m    --[32m《菜根谭》[m[m
%
此身常放在闲处，荣辱得失，谁能差遣我？
此心常安在静中，是非利害，谁能瞒昧我？
[33m    --[32m《菜根谭》[m[m
%
我不希荣，何忧乎利禄之香饵；
我不兢进，何畏乎仕宦之危机。
[33m    --[32m《菜根谭》[m[m
%
多藏厚亡，故知富不如贫之无虑；
高步疾颠，故知贵不如贱之常安。
[33m    --[32m《菜根谭》[m[m
%
世上只缘认得“我”字太真，故多种种嗜好、种种烦恼。
前人云：“不复知有我，安知物为贵。”
又云：“知身不是我，烦恼更何侵。”真破的之言也。
[33m    --[32m《菜根谭》[m[m
%
人情世态，倏忽万端，不宜认得太真。
尧夫支：“昔日所云我，今朝却是伊；不知今日我，又属后来谁？”
人常作是观，便可解却胸□［上“罟”去“古”下“绢”去“纟”］矣。
[33m    --[32m《菜根谭》[m[m
%
有一乐境界，就有一不乐的相对待；
有一好光景，就有一不好的相乘除。
只是寻常家饭、素位风光，才是个安乐窝巢。
[33m    --[32m《菜根谭》[m[m
%
知成之必败，则求成之心不必太坚；
知生之必死，则保生之道不必过劳。
眼看西晋之荆榛，犹矜白刃；
身属北邙之狐兔，尚惜黄金。
语云：“猛兽易伏，人心难降。溪壑易填，人心难满”。信哉！
[33m    --[32m《菜根谭》[m[m
%
心地上无风涛，随在皆青山绿树；
性天中有化育，触处都鱼跃鸢飞。
[33m    --[32m《菜根谭》[m[m
%
狐眠败砌，兔走荒台，尽是当年歌舞之地；
露冷黄花，烟迷衰草，悉属旧时争战之场。
盛衰何常，强弱安在，念此令人心灰。
[33m    --[32m《菜根谭》[m[m
%
宠辱不惊，闲看庭前花开花落；去留无意，漫随天外支卷云舒。
[33m    --[32m《菜根谭》[m[m
%
晴空朗月，何天不可翱翔，而飞蛾独投夜烛；
清泉绿竹，何物不可饮啄，而鸱［号鸟］偏嗜腐鼠。
噫！世之不为飞蛾鸱［号鸟］者，几何人哉！
[33m    --[32m《菜根谭》[m[m
%
权贵龙骧，英雄虎战，以冷眼视之，如蝇聚膻、如蚁兢血；
是非蜂起，得失猬兴，以冷情当之，如冶化金，如汤消雪。
[33m    --[32m《菜根谭》[m[m
%
真空不空，执相非真，破相亦非真。问世情如何发付？
在世出世，徇俗是苦，绝俗亦是苦，听吾侪善自修持。
[33m    --[32m《菜根谭》[m[m
%
烈士让千乘，贪夫争一文，人品星渊也，而好名不殊好利；
天子营家国，乞人号□［上“雍”下“食”］飧，位分霄壤也，而焦思何异焦声。
[33m    --[32m《菜根谭》[m[m
%
性天澄彻，即饥餐渴饮，无非康济身心；
心地沉迷，纵演偈淡禅，总是播弄精魄。
[33m    --[32m《菜根谭》[m[m
%
人心有真境，非丝非竹而自恬愉，不烟不茗而自清芬。
须念净境空，虑忘形释，才得以游衍其中。
[33m    --[32m《菜根谭》[m[m
%
天地中万物，人伦中万情，世界中万事，
以俗眼观，纷纷各异，以道眼观，种种是常，何须分别，何须取舍！
[33m    --[32m《菜根谭》[m[m
%
缠脱只在自心，心了则屠肆糟糠居然净土。
不然纵一琴一鹤、一花一竹，嗜好虽清，魔障终在。
语云：“能休尘境为真境，未了僧家是俗家。”
[33m    --[32m《菜根谭》[m[m
%
以我转物者得，固不喜失亦不忧，大地尽属逍遥；
以物役我者逆，固生憎顺亦生爱，一毫便生缠缚。
[33m    --[32m《菜根谭》[m[m
%
试思未生之前有何象貌，又思既死之后有何景色，
则万念灰冷，一性寂然，自可超物处而游象先。
[33m    --[32m《菜根谭》[m[m
%
优人傅粉调［石朱］，效妍丑于毫端。俄而歌残场罢，妍丑何存？
弈者争先兢后，较雌雄于着手。俄而局尽子收，雌雄安在？
[33m    --[32m《菜根谭》[m[m
%
把握未定，宜绝迹尘嚣，使此心不见可欲而不乱，以澄吾静体；
操持既坚，又当混迹风尘，使此心见可欲而亦不乱，以养吾圆机。
[33m    --[32m《菜根谭》[m[m
%
喜寂厌喧者，往往避人以求静。不知意在无人，便成我相，心着于静，便是动根。
如何到得人我一空、动静两忘的境界！
[33m    --[32m《菜根谭》[m[m
%
人生祸区福境，皆念想造成。故释氏云：刊欲炽然，即是火坑。贪爱沉溺，便为苦海。
一念清净，烈焰成池。一念惊觉，航登彼岸。念头稍异，境界顿殊。可不慎哉！
绳锯材断，水滴石穿，学道者须要努索；水到渠成，瓜熟蒂落，得道者一任天机。
[33m    --[32m《菜根谭》[m[m
%
就一身                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            