作者在 2010-01-23 21:16:35 发布以下内容
目录
第 1 章 - 序言......................................................4
1.1 官方文档................................................4
1.2 文档约定................................................4
1.3 脚本样例................................................5
1.4 基本设置................................................5
1.5 Ubuntu 发行版(distributions)基本概念..................5
第 2 章 - Ubuntu 基础...............................................6
2.1 Ubuntu 文件.............................................6
2.2 Ubuntu 软件包管理系统...................................9
2.3 Ubuntu 系统升级........................................14
2.4 Ubuntu 系统引导进程....................................16
2.5 多样性支持.............................................17
2.6 国际化.................................................17
2.7 Ubuntu 和系统内核......................................17
第 3 章 - Ubuntu 系统安装提示......................................19
3.1 常规 Linux 安装提示....................................19
3.2 Bash 设置..............................................26
3.3 鼠标设置...............................................26
3.4 NFS 设置...............................................29
3.5 Samba 设置.............................................29
3.6 打印机设置.............................................30
3.7 桌面 PC 的 CRON........................................31
3.8 其它主机安装提示.......................................31
第 4 章 - Ubuntu 指南.............................................. 34
4.1 开始了.................................................34
4.2 Midnight Commander (MC)................................37
4.3 类 Unix 工作环境.......................................39
4.4 类 Unix 文本处理.......................................49
4.5 类 Unix 文件系统.......................................52
4.6 X 窗口系统.............................................59
4.7 进一步学习.............................................60
第 5 章 - 发行版升级到 Breezy、Dapper 或 Edgy......................60
5.1 升级到 Hoary...........................................61
5.2 准备升级工作...........................................61
5.3 升级...................................................61
第 6 章 - Ubuntu 软件包管理........................................62
6.1 介绍...................................................63
6.2 Ubuntu 软件包管理基础..................................64
6.3 Ubuntu 生存命令........................................67
6.4 Ubuntu 必杀技..........................................70
6.5 其他 Ubuntu 的特性.....................................76
第 7 章 - Ubuntu 下的 Linux 内核................................... 78
7.1 内核编译...............................................78
第 1 章 - 序言......................................................4
1.1 官方文档................................................4
1.2 文档约定................................................4
1.3 脚本样例................................................5
1.4 基本设置................................................5
1.5 Ubuntu 发行版(distributions)基本概念..................5
第 2 章 - Ubuntu 基础...............................................6
2.1 Ubuntu 文件.............................................6
2.2 Ubuntu 软件包管理系统...................................9
2.3 Ubuntu 系统升级........................................14
2.4 Ubuntu 系统引导进程....................................16
2.5 多样性支持.............................................17
2.6 国际化.................................................17
2.7 Ubuntu 和系统内核......................................17
第 3 章 - Ubuntu 系统安装提示......................................19
3.1 常规 Linux 安装提示....................................19
3.2 Bash 设置..............................................26
3.3 鼠标设置...............................................26
3.4 NFS 设置...............................................29
3.5 Samba 设置.............................................29
3.6 打印机设置.............................................30
3.7 桌面 PC 的 CRON........................................31
3.8 其它主机安装提示.......................................31
第 4 章 - Ubuntu 指南.............................................. 34
4.1 开始了.................................................34
4.2 Midnight Commander (MC)................................37
4.3 类 Unix 工作环境.......................................39
4.4 类 Unix 文本处理.......................................49
4.5 类 Unix 文件系统.......................................52
4.6 X 窗口系统.............................................59
4.7 进一步学习.............................................60
第 5 章 - 发行版升级到 Breezy、Dapper 或 Edgy......................60
5.1 升级到 Hoary...........................................61
5.2 准备升级工作...........................................61
5.3 升级...................................................61
第 6 章 - Ubuntu 软件包管理........................................62
6.1 介绍...................................................63
6.2 Ubuntu 软件包管理基础..................................64
6.3 Ubuntu 生存命令........................................67
6.4 Ubuntu 必杀技..........................................70
6.5 其他 Ubuntu 的特性.....................................76
第 7 章 - Ubuntu 下的 Linux 内核................................... 78
7.1 内核编译...............................................78
1
7.2 模块化的 2.4 内核......................................80
7.3 通过 proc 文件系统调整内核.............................83
7.4 2.6 版内核和 udev......................................84
第 8 章 - Ubuntu 小技巧............................................84
8.1 启动系统...............................................84
8.2 活动记录...............................................87
8.3 拷贝及创建子目录.......................................88
8.4 差异备份与数据同步.....................................90
8.5 系统冻结恢复...........................................91
8.6 记住这些可爱的小命令...................................91
8.7 需要注意的典型错误....................................107
第 9 章 - Ubuntu 系统微调......................................... 107
9.1 系统初始化............................................107
9.2 访问限制(Restricting access)........................109
9.3 刻录机................................................112
9.4 X.....................................................116
9.5 SSH...................................................130
9.6 邮件..................................................133
9.7 本地化(localization)................................137
9.8 多语言化(Multilingualization, m17n).................145
第 10 章 - 网络设置...............................................146
10.1 IP 网络设置基础......................................146
10.2 底层网络设置.........................................148
10.3 命名主机.............................................153
10.4 域名服务(DNS)........................................153
10.5 使用 DHCP 来配置网络接口.............................155
10.6 Debian 的高级网络设置................................156
10.7 处理内核对接口命名的不一致性.........................161
10.8 启动(triggering)网络设置.............................162
10.9 多阶段(Multi-stage)映射..............................165
10.10 网络服务设置........................................166
10.11 网络故障排除........................................168
10.12 建立路由网关........................................168
第 11 章 - 编辑器.................................................171
11.1 流行的编辑器.........................................171
11.2 应急的编辑器.........................................172
11.3 Emacs 和 Vim..........................................172
第 12 章 - 系统版本控制...........................................177
12.1 并行版本系统 (CVS)...................................177
12.2 Subversion...........................................181
第 13 章 - 编程...................................................183
13.1 从哪儿开始...........................................183
13.2 Shell................................................183
13.3 Awk..................................................188
7.2 模块化的 2.4 内核......................................80
7.3 通过 proc 文件系统调整内核.............................83
7.4 2.6 版内核和 udev......................................84
第 8 章 - Ubuntu 小技巧............................................84
8.1 启动系统...............................................84
8.2 活动记录...............................................87
8.3 拷贝及创建子目录.......................................88
8.4 差异备份与数据同步.....................................90
8.5 系统冻结恢复...........................................91
8.6 记住这些可爱的小命令...................................91
8.7 需要注意的典型错误....................................107
第 9 章 - Ubuntu 系统微调......................................... 107
9.1 系统初始化............................................107
9.2 访问限制(Restricting access)........................109
9.3 刻录机................................................112
9.4 X.....................................................116
9.5 SSH...................................................130
9.6 邮件..................................................133
9.7 本地化(localization)................................137
9.8 多语言化(Multilingualization, m17n).................145
第 10 章 - 网络设置...............................................146
10.1 IP 网络设置基础......................................146
10.2 底层网络设置.........................................148
10.3 命名主机.............................................153
10.4 域名服务(DNS)........................................153
10.5 使用 DHCP 来配置网络接口.............................155
10.6 Debian 的高级网络设置................................156
10.7 处理内核对接口命名的不一致性.........................161
10.8 启动(triggering)网络设置.............................162
10.9 多阶段(Multi-stage)映射..............................165
10.10 网络服务设置........................................166
10.11 网络故障排除........................................168
10.12 建立路由网关........................................168
第 11 章 - 编辑器.................................................171
11.1 流行的编辑器.........................................171
11.2 应急的编辑器.........................................172
11.3 Emacs 和 Vim..........................................172
第 12 章 - 系统版本控制...........................................177
12.1 并行版本系统 (CVS)...................................177
12.2 Subversion...........................................181
第 13 章 - 编程...................................................183
13.1 从哪儿开始...........................................183
13.2 Shell................................................183
13.3 Awk..................................................188
2
13.4 Perl.................................................189
13.5 Python...............................................190
13.6 Make.................................................191
13.7 C....................................................192
13.8 Web..................................................196
13.9 准备文档.............................................197
13.10 打包................................................200
第 14 章 - GnuPG..................................................201
14.1 安装 GnuPG...........................................201
14.2 使用 GnuPG...........................................202
14.3 管理 GnuPG...........................................202
14.4 在应用程序中使用 GnuPG...............................203
第 15 章 - Ubuntu 技术支持........................................203
15.1 参考资料.............................................203
15.2 查词意...............................................208
15.3 查找流行的 Debian 软件包.............................208
15.4 Debian bug 跟踪系统..................................208
15.5 邮件列表.............................................208
15.6 Internet Relay Chat (IRC)............................208
15.7 搜索引擎.............................................209
15.8 网站.................................................209
附录 A - 附录.....................................................210
A.1 作者..................................................210
A.2 保证..................................................213
A.3 反馈..................................................213
A.4 文档格式..............................................213
A.5 Debian 迷宫...........................................213
A.6 Debian 引言...........................................214
来源......................................................214
13.4 Perl.................................................189
13.5 Python...............................................190
13.6 Make.................................................191
13.7 C....................................................192
13.8 Web..................................................196
13.9 准备文档.............................................197
13.10 打包................................................200
第 14 章 - GnuPG..................................................201
14.1 安装 GnuPG...........................................201
14.2 使用 GnuPG...........................................202
14.3 管理 GnuPG...........................................202
14.4 在应用程序中使用 GnuPG...............................203
第 15 章 - Ubuntu 技术支持........................................203
15.1 参考资料.............................................203
15.2 查词意...............................................208
15.3 查找流行的 Debian 软件包.............................208
15.4 Debian bug 跟踪系统..................................208
15.5 邮件列表.............................................208
15.6 Internet Relay Chat (IRC)............................208
15.7 搜索引擎.............................................209
15.8 网站.................................................209
附录 A - 附录.....................................................210
A.1 作者..................................................210
A.2 保证..................................................213
A.3 反馈..................................................213
A.4 文档格式..............................................213
A.5 Debian 迷宫...........................................213
A.6 Debian 引言...........................................214
来源......................................................214
3
第 1 章 - 序言
本书《Ubuntu 参考手册》的目的是对整个 Ubuntu 系统作一个全面的介绍,提供一本
“安装之後的”用户使用手册。本手册的读者应该愿意阅读 shell 脚本(scripts) 我 也
。
假定读者在阅读之前已经具备了类 Unix 系统的基本操作技能。
我决定不在本书中解释所有的细节, 因为你可以在 manual 页 、info 页或 HOWTO 文档
中获得这些信息。我希望能给读者提供实用的信息,而非全面的解释。因此我会在正文中给
出实际的命令序列,或是在 examples/ 给出脚本示例作为参考。在按照这些示例下达命令
之前,你必须要先理解其内容的含义。 实际的命令序列可能会依你的系统的具体情况而有细
微的差别。
中获得这些信息。我希望能给读者提供实用的信息,而非全面的解释。因此我会在正文中给
出实际的命令序列,或是在 examples/ 给出脚本示例作为参考。在按照这些示例下达命令
之前,你必须要先理解其内容的含义。 实际的命令序列可能会依你的系统的具体情况而有细
微的差别。
书中的很多信息实际上是对在 参考资料, 第 15.1 节 中列出的众多权威参考文献的引用
和提示。
和提示。
本书最初是作为一本“快速参考手册”来写的,但是现在增加了很多内容。尽管如此,保持
文字简短紧凑(keep it short and simple, KISS)是我的指导思想。
文字简短紧凑(keep it short and simple, KISS)是我的指导思想。
如果你是在寻找紧急情况下系统维护方面的帮助,请直接阅读 Ubuntu 生存命令, 第 6.3
节。
节。
1.1 官方文档
本书的最新官方版本可在 http://wiki.ubuntu.org.cn/UbuntuManual/ 访问到。
1.2 文档约定
文中许多信息通过简短的 bash 命令给出,以下是其排版格式约定:
# command in root account root 用户命令
$ command in user account 普通用户命令
... description of action 命令动作描述
$ command in user account 普通用户命令
... description of action 命令动作描述
这些 shell 命令的例子使用 PS2=" "。 更多信息参见 Bash – GNU 标准交互式 shell, 第
13.2.1 节。
参考:
bash(1) 表示 Unix 风格 manual 页。
·
info libc 表示 GNU TEXINFO 信息。
·
The C Programming Language 表示参考书目。
·
http://www.debian.org/doc/manuals/debian-reference/ 表示 URL。
·
/usr/share/doc/Debian/reference/ 表示系统的文件。
·
·
info libc 表示 GNU TEXINFO 信息。
·
The C Programming Language 表示参考书目。
·
http://www.debian.org/doc/manuals/debian-reference/ 表示 URL。
·
/usr/share/doc/Debian/reference/ 表示系统的文件。
·
文中用到了下列缩写:
· LDP: Linux Documentation Project (http://www.tldp.org/)
· DDP: Debian Documentation Project (http://www.debian.org/doc/)
· DDP: Debian Documentation Project (http://www.debian.org/doc/)
4
本文中的其它缩写会在使用前定义。
本文中的其它缩写会在使用前定义。
文中只提供了 LDP 文档的 URL,然 而 , LDP 文档已经被 Ubuntu 打 包 。 当这些包被安装後 ,
LDP 文档会在 /usr/share/doc/HOWTO/ 里。
LDP 文档会在 /usr/share/doc/HOWTO/ 里。
参阅 参考资料, 第 15.1 节。
1.3 脚本样例
本文档的 脚本样例 需要通过网页访问下载。
1.4 基本设置
如果你的系统是最小安装,但你希望充分使用本文档, 请执行下面的命令来安装其它软件
包,这些软件包含有一些有用的文档。
包,这些软件包含有一些有用的文档。
# apt-get install info man-db doc-base dhelp apt apt-utils auto-apt \
dpkg less mc ssh nano-tiny elvis-tiny vim sash \
kernel-package \
manpages manpages-dev doc-debian doc-linux-text \
debian-policy developers-reference maint-guide \
apt-howto harden-doc install-doc \
libpam-doc glibc-doc samba-doc exim-doc cvsbook \
gnupg-doc
# apt-get install debian-reference # for Sarge, do this too :)
dpkg less mc ssh nano-tiny elvis-tiny vim sash \
kernel-package \
manpages manpages-dev doc-debian doc-linux-text \
debian-policy developers-reference maint-guide \
apt-howto harden-doc install-doc \
libpam-doc glibc-doc samba-doc exim-doc cvsbook \
gnupg-doc
# apt-get install debian-reference # for Sarge, do this too :)
对于 Woody 版,把 exim-doc-html 增加到上面的列表中。 对于 Sarge 版,请使用 exim4-
doc-html 和 exim4-doc-info 来代替 exim-doc 包。
1.5 Ubuntu 发行版(distributions)基本概念
Ubuntu 软件仓库包含上千个软件包,它们按照我们提供的基础等级和是否符合自由软件哲
学,被分成四种组件,即“main”( 主 要 ) “restricted”( 受 限 ) “universe”(公共)和
、 、
“multiverse”( 多元 化)。
学,被分成四种组件,即“main”( 主 要 ) “restricted”( 受 限 ) “universe”(公共)和
、 、
“multiverse”( 多元 化)。
Ubuntu 软件仓库被分成四组,
“main”、“restricted”、“universe”和“multiverse”,按
照我们所能提供的基础能力以及它们是否符合 自由软件哲学 来划分。
“main”、“restricted”、“universe”和“multiverse”,按
照我们所能提供的基础能力以及它们是否符合 自由软件哲学 来划分。
标准 Ubuntu 安装都采用 main 和 restricted 的软件。你可以通过 Synaptic 软件管理器和
Aptitude 软件包管理器 安装其他的软件。通过编辑/etc/apt/sources.list 文件,就可以
得到它们。如果要编辑 sources.list,请使用“man sources.list”来获得更多信息。
Aptitude 软件包管理器 安装其他的软件。通过编辑/etc/apt/sources.list 文件,就可以
得到它们。如果要编辑 sources.list,请使用“man sources.list”来获得更多信息。
Ubuntu 发行版有代码名称, 具体描述在 Ubuntu 发布版代号, 第 2.1.7 节 中 。 Warty 在
2004 年 10 月发布, 在 Warty 发布後,三个发行版对应为 Hoary、 Breezy 和 Dapper。
2004 年 10 月发布, 在 Warty 发布後,三个发行版对应为 Hoary、 Breezy 和 Dapper。
订阅低流量的邮件列表 ubuntu-zh@lists.ubuntu.com, 可以得到关于 ubuntu 的重要声明
信息。 参阅 Debian 文件, 第 2.1 节。
信息。 参阅 Debian 文件, 第 2.1 节。
如果你想使用比发行版自带软件包更新的软件包版本, 你可以按照 发行版升级到 Hoary、
Breezy 或 Dapper, 第 5 章 的描述,升级到一个新的发行版; 或者你只升级选择的软件
Breezy 或 Dapper, 第 5 章 的描述,升级到一个新的发行版; 或者你只升级选择的软件
5
包 。 如果该软件包不能够容易的升级,你可以按照 向 Breezy 系统引入软件包, 第 6.4.10
节. 的说明,把该软件包向後移植到你现在所使用的发行版上。
包 。 如果该软件包不能够容易的升级,你可以按照 向 Breezy 系统引入软件包, 第 6.4.10
节. 的说明,把该软件包向後移植到你现在所使用的发行版上。
如果使用混合型发行版, 例如在 Breezy 中加入 Dapper , 或是在 Hoary 中加入 Breezy,
会一不留神从 Breezy 或 Dapper 中下载像 libc6 一样的核心软件包。没有保证能够使这
些软件包不含有 bug ,请你高度注意!
会一不留神从 Breezy 或 Dapper 中下载像 libc6 一样的核心软件包。没有保证能够使这
些软件包不含有 bug ,请你高度注意!
运行 Breezy 或 Dapper 版本的 Ubuntu 意味着可能会遇到严重软件错误。包含一个稳定版
Ubuntu 的多启动方案可有效控制风险,另一个技巧是使用 chroot,详情参阅 chroot, 第
8.6.35 节。後者可以实际在不同的终端同时运行不同版本的 Ubuntu。
Ubuntu 的多启动方案可有效控制风险,另一个技巧是使用 chroot,详情参阅 chroot, 第
8.6.35 节。後者可以实际在不同的终端同时运行不同版本的 Ubuntu。
在 Ubuntu 基础, 第 2 章 中我们将讲解有关 Ubuntu 发行版的一些基本概念, 之後, 我将
向你介绍一些基本信息以帮助你与最新软件快乐相处, 并从 restricted 和 universe 组件
中获益。心急的读者可以直接翻到 Ubuntu 生存命令, 第 6.3 节。祝你升级愉快!
向你介绍一些基本信息以帮助你与最新软件快乐相处, 并从 restricted 和 universe 组件
中获益。心急的读者可以直接翻到 Ubuntu 生存命令, 第 6.3 节。祝你升级愉快!
第 2 章 - Ubuntu 基础
本章讲述非开发人员需要掌握的 Ubuntu 系统基础知识。有关知识的权威参考,请参阅:
· Desktop Guide
· Server Guide
· Install Guide
· Server Guide
· Install Guide
列表见 参考资料, 第 15.1 节。
如果你想查阅简要的“how-to”解释文档,可直接跳到 Ubuntu 软件包管理, 第 6 章 或其
它相关章节。
它相关章节。
本章的内容取自“Ubuntu FAQ”,经过较大的改编,以适于普通 Ubuntu 系统管理者上手。
2.1 Ubuntu 文件
2.1.1 目录结构
Ubuntu 软件包位于 Ubuntu 镜像站点 的目录树中,可通过 FTP 或 HTTP 访问它们。
下列目录存在于任何 Ubuntu 镜像站点的 ubuntu 目录下:
dists/::: 本目录包含“发行版”(distributions) ,此处是获得 Ubuntu 发布版本
(releases) 和已发布版本 (pre-releases)的软件包的正规途径。有些旧软件包及 Contens-
*.gz Packages.gz 等文件仍在其中。
(releases) 和已发布版本 (pre-releases)的软件包的正规途径。有些旧软件包及 Contens-
*.gz Packages.gz 等文件仍在其中。
pool/::: 所有 Ubuntu 发布版及已发布版的软件包的新的物理地址。
indices/::: 维护人员文件和重载文件。
project/::: 大部分为开发人员的资源,如: project/experimental/::: 本目录包含了处
于开发中的软件包和工具,它们均处于 alpha 测试阶段。用户不应使用这些软件,因为即
使是经验丰富的用户也会被搞得一团糟。 project/orphaned/::: 已不再有人维护的软件
包,它们已从发行版中孤立出来。
于开发中的软件包和工具,它们均处于 alpha 测试阶段。用户不应使用这些软件,因为即
使是经验丰富的用户也会被搞得一团糟。 project/orphaned/::: 已不再有人维护的软件
包,它们已从发行版中孤立出来。
6
2.1.2 Ubuntu 发行版
2.1.2 Ubuntu 发行版
现在在 dists 目录下有三个 Ubuntu 发行版。它们是“hoary”发 行 版 ,
“breezy”发行版,
和“dapper”发行版。有时还有一个“edgy”发行版。其中也包含了一个现不再支持"warty"
发行版。
“breezy”发行版,
和“dapper”发行版。有时还有一个“edgy”发行版。其中也包含了一个现不再支持"warty"
发行版。
到 2007 年 8 月,Ubuntu 发行版本又增加了 feisty 和 gutsy。
2.1.3 hoary 发行版
hoary 2005 年 4 月发布,其发行版软件包入口:
· hoary/main/:“main”组件包括了自由软件、可以被自由发布的软件和被 Ubuntu 团
队完全支持的软件。其中包括了大多数流行的和稳定的开源软件,当您安装 Ubuntu
时默认安装的就是这些软件。
· hoary/restricted/:“restricted”组件是专供普遍用途,而且没有自由软件版权,
但依然被 Ubuntu 团队支持的软件。请注意,因为不能直接修改软件,因而我们可能
不能提供完全的技术支持,即便如此,我们还能向实际作者反馈 Bug 报告。
· hoary/universe/:“universe”组件是整个自由、开源 Linux 世界的缩影。在
“universe”组件中,你可以找到大多数开源 软件,以及在开源版权下的软件,所
有这些都是在公共源的基础上建立的。这些软件都是使用“main”中的组件编写的,
它们能与“main”组件相安无事地 共同运行,但它们没有安全升级的保障。
“universe”组件包含了数以千计的软件。虽然是公共的,用户必须明白它们与稳
定的 Ubuntu 核心的软件的 差异和不稳定。
· hoary/multiverse/:multiverse”组件包含了“不自由”的软件,这意味着这些软
件不满足 Ubuntu 相对于“main”组件的各种版权政策。当您使用这些软件时,如
何调整各种权力以及遵重版权所有者的问题,就完全依靠您自己把握了。 这些软件
不被我们支持,而且通常不能被修改和更新,您将自己承担任何风险。
队完全支持的软件。其中包括了大多数流行的和稳定的开源软件,当您安装 Ubuntu
时默认安装的就是这些软件。
· hoary/restricted/:“restricted”组件是专供普遍用途,而且没有自由软件版权,
但依然被 Ubuntu 团队支持的软件。请注意,因为不能直接修改软件,因而我们可能
不能提供完全的技术支持,即便如此,我们还能向实际作者反馈 Bug 报告。
· hoary/universe/:“universe”组件是整个自由、开源 Linux 世界的缩影。在
“universe”组件中,你可以找到大多数开源 软件,以及在开源版权下的软件,所
有这些都是在公共源的基础上建立的。这些软件都是使用“main”中的组件编写的,
它们能与“main”组件相安无事地 共同运行,但它们没有安全升级的保障。
“universe”组件包含了数以千计的软件。虽然是公共的,用户必须明白它们与稳
定的 Ubuntu 核心的软件的 差异和不稳定。
· hoary/multiverse/:multiverse”组件包含了“不自由”的软件,这意味着这些软
件不满足 Ubuntu 相对于“main”组件的各种版权政策。当您使用这些软件时,如
何调整各种权力以及遵重版权所有者的问题,就完全依靠您自己把握了。 这些软件
不被我们支持,而且通常不能被修改和更新,您将自己承担任何风险。
现在, 作为以上位置的新增功能,实际上新的软件包都存储在 pool 目录中( pool 目录, 第
2.1.10 节 )。
2.1.10 节 )。
2.1.4 breezy 发行版
breezy 2005 年 10 月发布。现在,除了上述目录,新上载的软件包的物理存储位置为 pool
目录( pool 目录, 第 2.1.10 节)。在 breezy 下同样有 main、restricted、universe 和
multiverse 子目录,它们的作用与 hoary 中的一样。
目录( pool 目录, 第 2.1.10 节)。在 breezy 下同样有 main、restricted、universe 和
multiverse 子目录,它们的作用与 hoary 中的一样。
2.1.5 dapper 发行版
dapper 2006 年 6 月发布。提供了长达 3 年的支持,新版本以 Ubuntu 6.06 LTS(Long Term
Support)(长期支持), 它针对一些大组织的需求对桌面版和服务器版都做个一定程度上的增
强。新上载的软件包的物理存储位置为 pool 目录( pool 目录, 第 2.1.10 节 ) 。在 dapper
下同样有 main、restricted、universe 和 multiverse 子目录,它们的作用与 hoary 中的一
样。
Support)(长期支持), 它针对一些大组织的需求对桌面版和服务器版都做个一定程度上的增
强。新上载的软件包的物理存储位置为 pool 目录( pool 目录, 第 2.1.10 节 ) 。在 dapper
下同样有 main、restricted、universe 和 multiverse 子目录,它们的作用与 hoary 中的一
样。
2.1.6 edgy 发行版
edgy 发行版反映了系统的最新开发进展。欢迎广大用户使用并测试这些软件包,同时也提
醒你们这些软件包还不完善。 使用 edgy 发行版的好处就是你可以获得 Ubuntu 项目的最新更
新—不过新东西也会出新问题,你得好坏兼收:-)
醒你们这些软件包还不完善。 使用 edgy 发行版的好处就是你可以获得 Ubuntu 项目的最新更
新—不过新东西也会出新问题,你得好坏兼收:-)
7
2.1.7 Ubuntu 发布版其它仓库
2.1.7 Ubuntu 发布版其它仓库
存在于 dists 目录下的物理目录名,例如 breezy-updates 和 breezy-security,就是“附
加的仓库”。当某个 Ubuntu 发行版处于维护阶段。将包的必要升级和安全更新放在附加的
仓库里。其附加仓库通常有 ***-updates、***-security、***-proposed、***-backports。
加的仓库”。当某个 Ubuntu 发行版处于维护阶段。将包的必要升级和安全更新放在附加的
仓库里。其附加仓库通常有 ***-updates、***-security、***-proposed、***-backports。
2.1.8 已用过的发布版代号
已使用过的发行版代号有:Ubuntu 4.10 (The Warty Warthog)、 Ubuntu 5.04 (The Hoary
Hedgehog)、 Ubuntu 5.10 (The Breezy Badger)、 Ubuntu 6-06 (The Dapper Darke)。
Hedgehog)、 Ubuntu 5.10 (The Breezy Badger)、 Ubuntu 6-06 (The Dapper Darke)。
2.1.9 发布版代号
Warty Warthog 多疣的疣猪,
·
Hoary Hedgehog 灰白的刺猬,
·
Breezy Badger 活泼的獾,
·
Dapper Darke 漂亮的鸭子,
·
Edgy Eft 躁动的蜥蜴
·
·
Hoary Hedgehog 灰白的刺猬,
·
Breezy Badger 活泼的獾,
·
Dapper Darke 漂亮的鸭子,
·
Edgy Eft 躁动的蜥蜴
·
2.1.10 pool 目录
过去,软件包均放在 dists 目录下相应发行版的子目录中。这种做法产生了许多问题,当镜
像站点进行新版本发布时大量带宽被消耗。
像站点进行新版本发布时大量带宽被消耗。
现在软件包均放进一个巨大的“池子(pool)”,按照源码包名称分类存放。为了方便管理,
pool 目录下按属性再分类(main、 restricted、universe 和 multiverse),分类下 面再按
源码包名称的首字母归档。 这些目录包含的文件有: 运行于各种系统架构的二 进制软件包,
生成这些二进制软件包的源码包。
pool 目录下按属性再分类(main、 restricted、universe 和 multiverse),分类下 面再按
源码包名称的首字母归档。 这些目录包含的文件有: 运行于各种系统架构的二 进制软件包,
生成这些二进制软件包的源码包。
你可以执行命令 apt-cache showsrc mypackagename,查看“Directory:”行获知每个软件
包的存放位置。例如:apache 软件包存放在 pool/main/a/apache/软件包存放在 lib*软件
包数量巨大,它们以特殊的方式归档:例如,libpaper 软件包存放在
pool/main/libp/libpaper/。
包的存放位置。例如:apache 软件包存放在 pool/main/a/apache/软件包存放在 lib*软件
包数量巨大,它们以特殊的方式归档:例如,libpaper 软件包存放在
pool/main/libp/libpaper/。
诸如 apt 等命令访问的索引文件仍位于 dists 目录中。
通常,你大可不必注意这些,新版的 apt 和旧版 dpkg-ftp 会自动处理它们。
2.1.11 发布源目录结构
在每个主目录树下(dists/dapper/main、dists/dapper/restricted、
dists/dapper/universe、dists/dapper/multiverse/,等)按芯片架构又分了子目录,每
个子目录中存放着在该 芯片架构下编译的二进制软件包。
dists/dapper/universe、dists/dapper/multiverse/,等)按芯片架构又分了子目录,每
个子目录中存放着在该 芯片架构下编译的二进制软件包。
binary-amd64/ AMD64 或 EM64T 架构
·
binary-i386/ 所有的使用 Intel/AMD/等 处理器的 PC,
·
binary-powerpc/ Apple Macintosh G3, G4, 和 G5
·
binary-sparc/ Sun UltraSPARC 系统
·
·
binary-i386/ 所有的使用 Intel/AMD/等 处理器的 PC,
·
binary-powerpc/ Apple Macintosh G3, G4, 和 G5
·
binary-sparc/ Sun UltraSPARC 系统
·
2.1.12 源代码
8
Ubuntu 系统中的 main,universe 组件有源代码,不仅如此,许可证条款规定系统中所有的
程序必须和其源代码一起发行,或提供源代码出售。
通常源代码发布在 source 目录,该目录同时处于所有架构目录中,更新的源码则在 pool
目录中(参阅 pool 目录, 第 2.1.10 节) 。对于不太熟悉 Ubuntu 归档目录结构的用户想
获得源代码可以试试 apt-get source mypackagename 命令。
目录中(参阅 pool 目录, 第 2.1.10 节) 。对于不太熟悉 Ubuntu 归档目录结构的用户想
获得源代码可以试试 apt-get source mypackagename 命令。
有些软件包,如着名的 pine,由于许可证限制,只提供源码包。 (最近,pine-tracker 软件
包提供了一个简易的安装版) 安装源码包的方法可参阅 向系统引入软件包, 第 6.4.10 节,
打包, 第 13.10 节教你如何手工创建一个软件包。
包提供了一个简易的安装版) 安装源码包的方法可参阅 向系统引入软件包, 第 6.4.10 节,
打包, 第 13.10 节教你如何手工创建一个软件包。
restricted 和 multiverse 目录中的软件包可能不提供源代码,因为它们没有正式加入
Ubuntu 系统。
Ubuntu 系统。
2.2 Ubuntu 软件包管理系统
2.2.1 Ubuntu 软件包概述
软件包通常包含了实现一系列相关命令或特性所必须的所有的文件。Ubuntu 软件包采用了
和 Debian 相同的软件包格式,有两种类型的软件包:
和 Debian 相同的软件包格式,有两种类型的软件包:
· Binary packages(二进制软件包),它包含可执行文件、配置文件、man/info 页面 、
版权声明和 其它文档。这些软件包以 Ubuntu 特定的格式发布(参阅 Ubuntu 软件
包格式, 第 2.2.2 节) ;它们通常使用.deb 的扩展名以示区别。这种二进制软件包
可使用 Ubuntu 工具 dpkg 解包,详情见有关帮助页面。
· Source packages(源码包) ,包含一个.dsc 文件它用于描述源码包(包括下列文件
的名称) ,一个. orig.tar.gz 文件它是未经修改的原始源代码压缩文件,以及一
个.diff.gz 文件它包含了该软件包 Ubuntu 化时所做的修改。dpkg-source 工具可
用于打包/解包 Ubuntu 源码包,详情可参阅有关帮助页面。
版权声明和 其它文档。这些软件包以 Ubuntu 特定的格式发布(参阅 Ubuntu 软件
包格式, 第 2.2.2 节) ;它们通常使用.deb 的扩展名以示区别。这种二进制软件包
可使用 Ubuntu 工具 dpkg 解包,详情见有关帮助页面。
· Source packages(源码包) ,包含一个.dsc 文件它用于描述源码包(包括下列文件
的名称) ,一个. orig.tar.gz 文件它是未经修改的原始源代码压缩文件,以及一
个.diff.gz 文件它包含了该软件包 Ubuntu 化时所做的修改。dpkg-source 工具可
用于打包/解包 Ubuntu 源码包,详情可参阅有关帮助页面。
软件包管理系统安装的软件包时需要使用“倚赖关系”,它由软件包维护者声明。这些信息
记录在与每个软件包关联的 control 文件中。例如,包含 GNU C 编译器(gcc)的软件包依
赖于包含链接器和汇编器的 binutils 软件包。如果用户试图在没有安装 binutils 的情况下
安装 gcc,软件包管理 系统(dpkg)将会显示一条错误信息,告诉你需要安装 binutils,
并停止安装 gcc。(不过,倔强的用户可以对这个信息视而不见,参阅 dpkg (8))。 更 多 信
)
息,参阅下面的章节 软件包依赖关系, 第 2.2.8 节。
记录在与每个软件包关联的 control 文件中。例如,包含 GNU C 编译器(gcc)的软件包依
赖于包含链接器和汇编器的 binutils 软件包。如果用户试图在没有安装 binutils 的情况下
安装 gcc,软件包管理 系统(dpkg)将会显示一条错误信息,告诉你需要安装 binutils,
并停止安装 gcc。(不过,倔强的用户可以对这个信息视而不见,参阅 dpkg (8))。 更 多 信
)
息,参阅下面的章节 软件包依赖关系, 第 2.2.8 节。
Ubuntu 软件包管理工具可用于:
操作和管理软件包或软件包的局部内容,
·
帮助那些使用有限容量载体如软盘传输的用户分割软件包,
·
帮助开发者将开发文件打包成软件包,
·
帮助用户从远程 Ubuntu 文档站点安装软件包。
·
·
帮助那些使用有限容量载体如软盘传输的用户分割软件包,
·
帮助开发者将开发文件打包成软件包,
·
帮助用户从远程 Ubuntu 文档站点安装软件包。
·
2.2.2 Ubuntu 软件包格式
Ubuntu “软件包”,或称之为 Debian 包文件( Debian archive file),包含了可执行文
件、库文件、和相关程序的文档。通常 Ubuntu 文件的文件名以.deb 结尾。
件、库文件、和相关程序的文档。通常 Ubuntu 文件的文件名以.deb 结尾。
Ubuntu 二进制软件包内部格式描述见 deb(5)帮助页面。所以要操作.deb 文件请参阅 dpkg-
deb(8)。
deb(8)。
9
2.2.3 Ubuntu 软件包命名约定
2.2.3 Ubuntu 软件包命名约定
Ubuntu 软件包命名遵循下列约定:
foo_ver-rev_arch.deb
一般这里的 foo 是软件包的名称,ver 是软件本身的版本号,rev 是 Ubuntu 修订版本号,
arch 是目标架构名称。当然,文件很容易被改名;不过,你也可以通过运行下面的命令来找出
文件 filename 实际是那个软件包:
一般这里的 foo 是软件包的名称,ver 是软件本身的版本号,rev 是 Ubuntu 修订版本号,
arch 是目标架构名称。当然,文件很容易被改名;不过,你也可以通过运行下面的命令来找出
文件 filename 实际是那个软件包:
dpkg --info filename
Ubuntu 修订版本号由 Ubuntu 开发者或创建这个软件包的人指定。 通常,包被修改过之後,
会把修改版本号加一,有些也会加上 ubuntu 的标志以便和 Debian 区分开来。
会把修改版本号加一,有些也会加上 ubuntu 的标志以便和 Debian 区分开来。
2.2.4 保存本地配置
有可能被本机管理员修改的文件保存在/etc/目录中。 Ubuntu 策略中规定所有对本地配置
文件的修改都可以在软件包升级过程中被保留下来。
文件的修改都可以在软件包升级过程中被保留下来。
在软件包的发布中,如果包含默认的本地配置文件,这个文件就被称为“conffile”(默认
配置)。如果不得到管理员的允许,软件包管理 系统不会对上次 安装之後被修改过的默认
配置进行升级;不过,如果管理员没有改动过默认配置,那么它就会被升级成最新软件包中
的版本。这种策略几乎总是合理的,它有益于把 默认配置的改动减到最小。
配置)。如果不得到管理员的允许,软件包管理 系统不会对上次 安装之後被修改过的默认
配置进行升级;不过,如果管理员没有改动过默认配置,那么它就会被升级成最新软件包中
的版本。这种策略几乎总是合理的,它有益于把 默认配置的改动减到最小。
下面的命令可以列出一个软件包中包含那些默认配置文件:
dpkg --status package
文件列表位于“Conffiles”的後面。
在《 Ubuntu 策略手册》的“配置文件”一节,可以获得有关 conffile(默认配置)文件
的更多信息(参见 参考资料, 第 15.1 节 )。
的更多信息(参见 参考资料, 第 15.1 节 )。
2.2.5 Ubuntu 维护脚本
Ubuntu 维护脚本是一种可执行脚本,它在软件包安装之前或之後自动运行。它和一个名叫
control 的文件一起组成 Ubuntu 包文件的“管理”部分。
control 的文件一起组成 Ubuntu 包文件的“管理”部分。
这些文件是:
preinst:: 在 Ubuntu 包文件解包之前,运行这个脚本。许多“preinst”脚本的任务是停
止作用于待升级软件包的服务,直到软件包安装或升级完成。
止作用于待升级软件包的服务,直到软件包安装或升级完成。
postinst:: 该脚本的任务是完成 Debian 包文件解包文件的配置工作。通常,
“postinst”
脚本等待用户输入,或提醒用户,如果他接受当前默认值,要记得软件包安装完後返回重新
配置。许多 “postinst”脚本负责执行有关命令为新安装或升级的软件重启服务。
“postinst”
脚本等待用户输入,或提醒用户,如果他接受当前默认值,要记得软件包安装完後返回重新
配置。许多 “postinst”脚本负责执行有关命令为新安装或升级的软件重启服务。
prerm:: 该脚本负责停止与软件包关联的 daemon 服务。它在删除软件包关联文件之前执行。
postrm:: 该脚本负责修改软件包链接或文件关联,或删除由它创建的文件。
(参阅虚拟软件
包, 第 2.2.7 节)。
(参阅虚拟软件
包, 第 2.2.7 节)。
10
当前,所有的管理文件都存放在/var/lib/dpkg/info 目录。与 foo 软件包相关的文件,名
字以“foo”打头,以 “preinst”、“postinst”等为扩展名。目录中的 foo.list 文件列出
了 foo 软件包安装的所有文件。 (注意这些文件的位置在由 dpkg 来确定,可能会因 Debina
版本而异)
当前,所有的管理文件都存放在/var/lib/dpkg/info 目录。与 foo 软件包相关的文件,名
字以“foo”打头,以 “preinst”、“postinst”等为扩展名。目录中的 foo.list 文件列出
了 foo 软件包安装的所有文件。 (注意这些文件的位置在由 dpkg 来确定,可能会因 Debina
版本而异)
2.2.6 软件包优先级
每个 Ubuntu 软件包均被发布者指点了一个优先级,作为软件包管理系统 的一个辅助参数,
优先级的值有:
优先级的值有:
· Required(必须) 该级别软件包是保证系统正常运行必须的。
包含所有必要的系统修补工具。不要删除这些软件包,否则整个系统将受到损坏,甚至无法
使用 dpkg 恢复。只安装 Required 级软件包的系统不可能满足所有的用途,但它可以启动起
来,让系统管理员安装想要的软件。
使用 dpkg 恢复。只安装 Required 级软件包的系统不可能满足所有的用途,但它可以启动起
来,让系统管理员安装想要的软件。
· Important(重要) 在任何类 Unix 系统上均安装有该级别软件包。
系统若缺少这类软件,会运行困难或不好操作。该级别软件包并不包括 Emacs 或 X11 或 TeX
或其它大型应用程序,它们只是一些实现系统底层功能的程序。
或其它大型应用程序,它们只是一些实现系统底层功能的程序。
· Standard(基本) 该级别软件包是任何 Linux 系统的标准件,它们组成一个小而精
的字符模式的系统。
的字符模式的系统。
系统的默认安装就包括了它们。 “Standard”级软件包不包括许多大型应用程序,但它包括
Emacs(它比其它应用程序更底层)和 Tex 及 LaTeX 的精巧版(不支持 X)。
Emacs(它比其它应用程序更底层)和 Tex 及 LaTeX 的精巧版(不支持 X)。
· Optional(推荐) 该级别软件包包括那些你可能想安装的软件,即使对它们并不熟
悉,但对它们没有特殊的要求。
悉,但对它们没有特殊的要求。
它们包括 X11,TeX 完整发布版和许多应用程序。
· Extra(额外) 该级别软件包可能与其它高级别软件包冲突,仅当你知道其用途时
才会使用它们,或者有运行它们有专门要求,这些都使它们不适合定为“Optional”
级。
才会使用它们,或者有运行它们有专门要求,这些都使它们不适合定为“Optional”
级。
请注意软件包描述中“Priority: required”( 优 先 级 : 必 须 )“Section: base”( 组 件 :
、
基 本 )“Essential: yes”(必要:是)的区别。
、 “Section: base”(组件:基本)意味着在
安装新系统时这个软件包要先于其它所有软件安装。大多数在“Section: base”中的软件
包都被打上了“Priority: required”(优先级:必须)标签,或者至少是“Priority:
important”(优先级:重要) ;并且其中的很多也同时具有“Essential: yes”( 必要 :是 )
标签。 “Essential: yes”意味着要用软件包管理系统的 dpkg 等程序删除它时,必须给出额
外的强制选项才行。比如,libc6、mawk 和 makedev 软件包属于 “Priority: required”
和“Section: base”,但不是“Essential: yes”。
、
基 本 )“Essential: yes”(必要:是)的区别。
、 “Section: base”(组件:基本)意味着在
安装新系统时这个软件包要先于其它所有软件安装。大多数在“Section: base”中的软件
包都被打上了“Priority: required”(优先级:必须)标签,或者至少是“Priority:
important”(优先级:重要) ;并且其中的很多也同时具有“Essential: yes”( 必要 :是 )
标签。 “Essential: yes”意味着要用软件包管理系统的 dpkg 等程序删除它时,必须给出额
外的强制选项才行。比如,libc6、mawk 和 makedev 软件包属于 “Priority: required”
和“Section: base”,但不是“Essential: yes”。
2.2.7 虚拟软件包
虚拟软件包是一个统称,它代指一组具有相近功能的软件包中的任何一个。 例如, 和 trn
tin
都是新闻组阅读软件,当系统中某个程序需要使用新闻阅读 器时,它们中的任何一个都可
以满足要求。因此,这两个软件包一起提供了一个叫做 news-reader(新闻阅读器)的“虚
拟软件包”。
tin
都是新闻组阅读软件,当系统中某个程序需要使用新闻阅读 器时,它们中的任何一个都可
以满足要求。因此,这两个软件包一起提供了一个叫做 news-reader(新闻阅读器)的“虚
拟软件包”。
11
类似的,许多 exim、exim4、sendmail、postfix 这样的软件包都提供邮件传输代理的功能。
因此,它们在一起提供了一 个称为 mail-transport-agent(邮件传输代理)的虚拟包。安
装了它们中的任何一个,都会满足其它倚赖于邮件传输代理功能的程序的需要。
类似的,许多 exim、exim4、sendmail、postfix 这样的软件包都提供邮件传输代理的功能。
因此,它们在一起提供了一 个称为 mail-transport-agent(邮件传输代理)的虚拟包。安
装了它们中的任何一个,都会满足其它倚赖于邮件传输代理功能的程序的需要。
Ubuntu 有个机制,如果系统中提供同种虚拟包的软件包安装了多个,系统管理员可以指定
一个为首选软件。 相关的命令是 update-alternatives,更详细的描述参阅 Alternative 命
令, 第 6.5.3 节。
一个为首选软件。 相关的命令是 update-alternatives,更详细的描述参阅 Alternative 命
令, 第 6.5.3 节。
2.2.8 软件包依赖关系
Ubuntu 软件包管理系统依赖声明,它描述了这一事实:一些软件包需要其它软件包被安装
才能正常运行或运行得更好。
才能正常运行或运行得更好。
· 软件包 A 依赖(depends)软件包 B:要运行 A 必须安装 B。在有些情况下,A 不仅
依赖 B,还要求 B 的特定版本。版本依赖通常有最低版本限制,A 更依赖于 B 的最新
版而非某个特定版本。
软件包 A 推荐(recommends)软件包 B:软件包维护者认为所有用户都不会喜欢缺
·
少某些功能的 A,而这些功能需要 B 来提供。
软件包 A 建 议(suggests)软件包 B:B 中某些文件与 A 的功能相关, 并能够增强 A
·
的功能。这种关系通过声明软件包 B 增强 Enhances 软件包 A 来表示。
软件包 A 与软件包 B 冲突(conflicts) :如果系统中安装了 B 那么 A 无 法 运 行 。
·
“Conflicts”常和“replaces”同时出现。
软件包 A 替换(replaces)软件包 B:B 安装的文件被 A 中的文件移除和复盖了。
·
软件包 A 提供(provides)软件包 B:A 中包含了 B 中的所有文件和功能。
·
依赖 B,还要求 B 的特定版本。版本依赖通常有最低版本限制,A 更依赖于 B 的最新
版而非某个特定版本。
软件包 A 推荐(recommends)软件包 B:软件包维护者认为所有用户都不会喜欢缺
·
少某些功能的 A,而这些功能需要 B 来提供。
软件包 A 建 议(suggests)软件包 B:B 中某些文件与 A 的功能相关, 并能够增强 A
·
的功能。这种关系通过声明软件包 B 增强 Enhances 软件包 A 来表示。
软件包 A 与软件包 B 冲突(conflicts) :如果系统中安装了 B 那么 A 无 法 运 行 。
·
“Conflicts”常和“replaces”同时出现。
软件包 A 替换(replaces)软件包 B:B 安装的文件被 A 中的文件移除和复盖了。
·
软件包 A 提供(provides)软件包 B:A 中包含了 B 中的所有文件和功能。
·
上述术语使用方法的更详细的信息参阅 Packaging Manual 和 the Policy Manual。
注意,dselect 可以对 recommends 和 suggests 类软件包进行细操作,apt-get 只会简单的
下载安装 depends 类软件包而不管 recommends 和 suggests 类软件包。这两个程序均正式
使用 APT 作为其後台。
下载安装 depends 类软件包而不管 recommends 和 suggests 类软件包。这两个程序均正式
使用 APT 作为其後台。
2.2.9 何为“Pre-depends”
”
“
”
“
dpkg 总是在配置一个有依赖关系的包之前,先对被依赖的包进行配置。 然而,dpkg 通常
将归档文件随意解包,不顾依赖性。 (从归档文件中解包并提取文件,将他们放置到正确
的 位 置 。 如果是 Pre-Depends 包,
) 则在所依赖的其它包被解包和配置之前, Pre-Depends
包不会被解包。 使用这种依赖的目的是为了将依赖复杂性降至最底。
将归档文件随意解包,不顾依赖性。 (从归档文件中解包并提取文件,将他们放置到正确
的 位 置 。 如果是 Pre-Depends 包,
) 则在所依赖的其它包被解包和配置之前, Pre-Depends
包不会被解包。 使用这种依赖的目的是为了将依赖复杂性降至最底。
2.2.10 软件包状态
软件包有各种状态: “unknown”,“install”,“remove”,“purge”和“hold”。这些“希望”
标记描述了用户打算如何操作这些软件包(既可以使用 dselect 的“Select”菜单,也可以
直接调用 dpkg)。
标记描述了用户打算如何操作这些软件包(既可以使用 dselect 的“Select”菜单,也可以
直接调用 dpkg)。
它们的意思是:
unknown - 用户并没描述他想对软件包进行什么操作。
·
install - 用户希望对软件包进行安装或升级。
·
remove - 用户希望删除软件包,但不想删除任何配置文件。
·
purge - 用户希望完全删除软件包,包括配置文件。
·
hold - 用户希望软件包保持现状,例如,用户希望保持当前的版本,当前的状态,
·
·
install - 用户希望对软件包进行安装或升级。
·
remove - 用户希望删除软件包,但不想删除任何配置文件。
·
purge - 用户希望完全删除软件包,包括配置文件。
·
hold - 用户希望软件包保持现状,例如,用户希望保持当前的版本,当前的状态,
·
12
当前的一切。
当前的一切。
2.2.11 阻止软件包升级
有两种方法阻止软件包升级,使用 dpkg,或者在 Woody 中使用 APT。
使用 dpkg,首先导出软件包选择列表:
dpkg --get-selections \* > selections.txt
接着编辑文件 selections.txt,修改想要恢复的软件所在的行,例如 libc6,则将:
libc6 install
改为:
libc6 hold
保存文件,将它装入 dpkg 数据库:
dpkg --set-selections < selections.txt
或者,如果你知道要恢复的软件包名称,执行:
echo libc6 hold | dpkg --set-selections
这个命令将在每个软件包安装过程中保持该软件包不变。
使用 dselect 也可以达到同样的效果。进入[S]elect 屏幕,找到想阻止其升级的软件包,
按“=”键(或者“H”) 。更改在你退出[S]elect 屏幕後立即生效。
按“=”键(或者“H”) 。更改在你退出[S]elect 屏幕後立即生效。
Woody 中的 APT 系统有一个新机制来阻止软件包升级,在下载升级档进程中使用 Pin-
Priority。参阅帮助页面 apt_preferences(5),或阅读
http://www.debian.org/doc/manuals/apt-howto/或 apt-howto 软件包。
Priority。参阅帮助页面 apt_preferences(5),或阅读
http://www.debian.org/doc/manuals/apt-howto/或 apt-howto 软件包。
2.2.12 源码包
源码包发布在 source 目录中,既可以手工下载可以使用
apt-get source foo
获取它们(参阅 apt-get(8)帮 助页 面)。
2.2.13 编译源码包
对于 foo 软件包, 从源码编译需要 foo_*.dsc、foo_*.tar.gz 和 foo_*.diff.gz 文 件(注意 ,
对于由 Debian 开发的软件包,没有.diff.gz 文 件 ) 。
对于由 Debian 开发的软件包,没有.diff.gz 文 件 ) 。
13
当你得全了这些文件,如果你这安装了 dpkg-dev 软件包,运行:
$ dpkg-source -x foo_version-revision.dsc
它将软件包解压到一个名为 foo-version 的目录。
使用下列命令创建二进制软件包:
$ cd foo-version
$ su -c "apt-get update ; apt-get install fakeroot"
$ dpkg-buildpackage -rfakeroot -us -uc
$ su -c "apt-get update ; apt-get install fakeroot"
$ dpkg-buildpackage -rfakeroot -us -uc
然後,
# su -c "dpkg -i ../foo_version-revision_arch.deb"
安装新编译的软件包。参阅["../ch-package.zh-cn.html: 向系统引入软件包, 第 6.4.10
节]。
2.2.14 新建 Ubuntu 软件包
创建新软件包的详细信息,参阅 New Maintainers' Guide, 该文档在 maint-guide 包 中 ,
或浏览 http://www.debian.org/doc/manuals/maint-guide/。
或浏览 http://www.debian.org/doc/manuals/maint-guide/。
2.3 Ubuntu 系统升级
Ubuntu 的设计目标之一就是提供一个平滑、安全和可靠的升级过程。软件包系统在升级过
程中会将重要改变警告系统管理员,在某些情况下,会要系统管理员来做决定。
程中会将重要改变警告系统管理员,在某些情况下,会要系统管理员来做决定。
你也应该阅读发布手记(Release Notes) ,它存在于所有的 Ubuntu 光盘中,也可以通过互
联网访问 http://www.Ubuntu.com/releases。
联网访问 http://www.Ubuntu.com/releases。
Ubuntu 软件包管理, 第 6 章提供了升级的实用指南,本节只提供一个大纲,由包工具开始 。
2.3.1 dpkg
它是操作软件包文件的主要工具;参阅 dpkg(8) 获得完整信息。
dpkg 由几个原始的辅助程序演化而来。
dpkg-deb:操作.deb 文件。dpkg-deb(1)
·
dpkg-ftp:一个旧的软件包获取命令。dpkg-ftp(1)
·
dpkg-mountable:一个旧的软件包获取命令。dpkg-mountable(1)
·
dpkg-split:将大软件包分割成小包。dpkg-split(1)
·
·
dpkg-ftp:一个旧的软件包获取命令。dpkg-ftp(1)
·
dpkg-mountable:一个旧的软件包获取命令。dpkg-mountable(1)
·
dpkg-split:将大软件包分割成小包。dpkg-split(1)
·
dpkg-ftp 和 dpkg-mountable 已被新的 APT 系统取代。
14
2.3.2 APT
APT(the Advanced Packaging Tool)是 Ubuntu 软件包管理系统的高级界面,由几个名字
以“apt-”打头的程序组成。 apt-get、apt-cache 和 apt-cdrom 是处理软件包的命令行工 具 ,
它们也是其它用户前台程序的後端,如 dselect 和 aptitude。
以“apt-”打头的程序组成。 apt-get、apt-cache 和 apt-cdrom 是处理软件包的命令行工 具 ,
它们也是其它用户前台程序的後端,如 dselect 和 aptitude。
更多信息,可安装 apt 软件包後阅读 apt-get(8)、apt-cache(8)、apt-cdrom(8)、apt.conf
(5)、sources.list(5)、apt_preferences(5)(woody)以及
/usr/share/doc/apt/guide.html/index.html。
(5)、sources.list(5)、apt_preferences(5)(woody)以及
/usr/share/doc/apt/guide.html/index.html。
另一个资源是 APT HOWTO,如果安装了 apt-howto 包,可在/usr/share/doc/Debian/apt-
howto/中找到它。
howto/中找到它。
apt-get upgrade 和 apt-get dist-upgrade 只 获 取“Depends”类 软 件 包 , 忽 略
它 “Recommend”
和“Suggests”类软件包,不想这样的话,可使用 dselect。
它 “Recommend”
和“Suggests”类软件包,不想这样的话,可使用 dselect。
2.3.3 dselect
这个程序是 Ubuntu 软件包管理系统中菜单驱动的用户界面。特别适用于首次安装和大面积
升级。参阅 dselect, 第 6.2.4 节。
升级。参阅 dselect, 第 6.2.4 节。
更多信息,可安装 install-doc 包後阅读/usr/share/doc/install-doc/dselect-
beginner.en.html 或 dselect Documentation for Beginners。
beginner.en.html 或 dselect Documentation for Beginners。
2.3.4 不停机系统升级
Ubuntu 系统的内核(文件系统)支持替换使用中的文件。 当一个软件包升级时,如果由该
软件包提供的服务在当前运行级下正在运行, 则该服务将被重新启动。 Ubuntu 系统不要求
用户在 single-user 模式下进行不停机升级。
软件包提供的服务在当前运行级下正在运行, 则该服务将被重新启动。 Ubuntu 系统不要求
用户在 single-user 模式下进行不停机升级。
2.3.5 下载和缓存.deb 文件
如果你手工下载包文件到硬盘(这完全没有必要,请阅读上面有关 dpkg-ftp 或 APT 的内容),
当你完成软件包安装工作後,可以从系统中删除.deb 文件。
当你完成软件包安装工作後,可以从系统中删除.deb 文件。
如果是使用 APT,这些文件会缓存在/var/cache/apt/archives/目录中。你可以在完成安装
後删除它们(apt-get clean)或者将它们拷贝到另一个机器的/var/cache/apt/archives/
目录中以备以後的安装。
後删除它们(apt-get clean)或者将它们拷贝到另一个机器的/var/cache/apt/archives/
目录中以备以後的安装。
2.3.6 升级记录
dpkg 会对软件包的解包、配置、删除、完全删除进行记录,但不能(目前是这样)记录在
包操作的过程中活跃终端的行为。
包操作的过程中活跃终端的行为。
最简单的解决方法是在运行 dpkg、dselect、apt-get 等工具的会话中加入 script(1)程序。
2.4 Ubuntu 系统引导进程
2.4.1 init 程序
同所有的 Unix 一样, Ubuntu 启动要执行 init 程序。init 的配置文件(/etc/inittab)
15
中指定的第一个执行脚本应该是 /etc/init.d/rcS。
中指定的第一个执行脚本应该是 /etc/init.d/rcS。
接下来将要发生要看是否安装了 sysv-rc 软件包或 file-rc 软件包。下面假设安装了
sysv-rc 软件包。 (file-rc 含有它自己的 /etc/init.d/rcS 脚本,在 rc 目录里使用文
件代替符号链接来控制哪个服务在哪个运行级别启动。 )
sysv-rc 软件包。 (file-rc 含有它自己的 /etc/init.d/rcS 脚本,在 rc 目录里使用文
件代替符号链接来控制哪个服务在哪个运行级别启动。 )
sysv-rc 软件包里面的 /etc/init.d/rcS 运行 /etc/rcS.d/ 目录下的所有脚本来执行初
始化,如: 检查并挂载文件系统、装载内核模块、启动网络服务、设定时钟等。 接着,为
了兼容性考虑,它运行/etc/rc.boot/目录下的文件(除了那些文件名中包含“.”的 文 件 ) ,
该目录中的脚本是保留给系统管理员使用,不 赞成使用该目录。 更多信息参见 系统初始
化, 第 9.1 节 和 Debian Policy Manual 中的 System run levels and init.d scripts
始化,如: 检查并挂载文件系统、装载内核模块、启动网络服务、设定时钟等。 接着,为
了兼容性考虑,它运行/etc/rc.boot/目录下的文件(除了那些文件名中包含“.”的 文 件 ) ,
该目录中的脚本是保留给系统管理员使用,不 赞成使用该目录。 更多信息参见 系统初始
化, 第 9.1 节 和 Debian Policy Manual 中的 System run levels and init.d scripts
Ubuntu 没有使用 BSD 风格的 rc.local 文件。
2.4.2 运行级别
完成系统启动进程後,init 启动所有在默认运行级别配置为启动的服务。 默认运行级别由
/etc/inittab 中的 id 给出。 Ubuntu 使用 id=2。
/etc/inittab 中的 id 给出。 Ubuntu 使用 id=2。
Ubuntu 使用下列的运行级别:
1(单用户模式 single-user mode),
·
2 到 5(多用户模式 multi-user modes),
·
0(关闭系统) ,
·
6(重启系统) 。
·
·
2 到 5(多用户模式 multi-user modes),
·
0(关闭系统) ,
·
6(重启系统) 。
·
运行级 7、8 和 9 也能够使用,但是它们的 rc 目录在软件包安装的时候没有。
使用 telinit 命令来转换运行级别。
当进入一个运行级别时,所有在 /etc/rcrunlevel.d/ 目录下的脚本将被执行。 脚本名的
第一个字母决定了该脚本的运行方式: 使用 K 开头的脚本,使用 stop 参数来运行。 使
用 S 开头的脚本,使用 start 参数来运行。 这些脚本按照它们名字的字母顺序运行;因
此,“stop”脚本比“start”脚本先运行。 在 K 或 S 之後的两个数字决定了脚本运行的
先後次序,数字小的脚本先运行。
第一个字母决定了该脚本的运行方式: 使用 K 开头的脚本,使用 stop 参数来运行。 使
用 S 开头的脚本,使用 start 参数来运行。 这些脚本按照它们名字的字母顺序运行;因
此,“stop”脚本比“start”脚本先运行。 在 K 或 S 之後的两个数字决定了脚本运行的
先後次序,数字小的脚本先运行。
实际上, 目录/etc/rcrunlevel.d/中的脚本都是指向/etc/init.d/的符号链接。 这些脚本接
受 “restart”和“force-reload”作 为 参 数 :
“force-reload”的方式可以用来在系统启
动後,重新启动服务或者强迫它们重新装 载它们的配置文件。
受 “restart”和“force-reload”作 为 参 数 :
“force-reload”的方式可以用来在系统启
动後,重新启动服务或者强迫它们重新装 载它们的配置文件。
例如:
# /etc/init.d/exim4 reload
2.4.3 自定义运行级别
自定义运行级别是一个高级的系统管理任务。 下面的指示面向大部分服务。
在运行级 R 启动 service 服务,创建一个符号链接 /etc/rcR.d/Sxyservice 到目标文件
../init.d/service。 xy 是序列号,是由软件包在安装的时候分配给服务的。
../init.d/service。 xy 是序列号,是由软件包在安装的时候分配给服务的。
16
停止服务,重命名符号链接, 将它的名字用 K 开头来代替 S, 它的序列号是 100 减 xy。 可
以使用象 sysv-rc-conf 或 ksysv 这样的运行级别编辑器来方便的修改服务。
停止服务,重命名符号链接, 将它的名字用 K 开头来代替 S, 它的序列号是 100 减 xy。 可
以使用象 sysv-rc-conf 或 ksysv 这样的运行级别编辑器来方便的修改服务。
在一个特定的运行级别目录, 可以将某个服务的 S 符号链接删除来代替重新命名它。 这种
作法不停止该服务,但将把该服务留在一种 sysv-rc 初始化系统认为的“漂浮”状态: 当
运行级别改变时,该服务即不会启动,也不会停止, 它将保留它原有的状态,不管它是在
运行或者没有运行。 注意,处于这种漂浮状态的服务,如果它所属的软件包升级了, 这个
服务将启动,不管它在升级前是否运行。 这是当前 Debian 系统一个已知的缺点。 注 意 :
还需要在运行级 0 和 6 之间保留服务的 K 符 号 链 接 。 如果删除了一个服务的所有符号链
接,在升级该服务的软件包时, 所有的符号链接将恢复到它们的出厂默认模式。
作法不停止该服务,但将把该服务留在一种 sysv-rc 初始化系统认为的“漂浮”状态: 当
运行级别改变时,该服务即不会启动,也不会停止, 它将保留它原有的状态,不管它是在
运行或者没有运行。 注意,处于这种漂浮状态的服务,如果它所属的软件包升级了, 这个
服务将启动,不管它在升级前是否运行。 这是当前 Debian 系统一个已知的缺点。 注 意 :
还需要在运行级 0 和 6 之间保留服务的 K 符 号 链 接 。 如果删除了一个服务的所有符号链
接,在升级该服务的软件包时, 所有的符号链接将恢复到它们的出厂默认模式。
不建议对 /etc/rcS.d/ 目录里的符号链接做任何改变。
2.5 多样性支持
Ubuntu 提供几种途径,在不破坏系统的前提下满足系统管理员各种要求。
dpkg-divert,参阅 dpkg-divert 命令, 第 6.5.1 节。
·
equivs,参阅 equivs 软件包, 第 6.5.2 节。
·
update-alternative,参阅 Alternative 命令, 第 6.5.3 节。
·
make-kpkg 可以支持多启动引导。参阅 make-kpkg(1)和 Ubuntu 标准方式, 第
·
7.1.1 节。
·
equivs,参阅 equivs 软件包, 第 6.5.2 节。
·
update-alternative,参阅 Alternative 命令, 第 6.5.3 节。
·
make-kpkg 可以支持多启动引导。参阅 make-kpkg(1)和 Ubuntu 标准方式, 第
·
7.1.1 节。
/usr/local/目录下的所有文件均属于系统管理员, Ubuntu 不会改动它们。/etc 下的大部分
文件属于 conffiles,Ubuntu 不会在升级後复盖它们,除非系统管理员明确要求复盖。
文件属于 conffiles,Ubuntu 不会在升级後复盖它们,除非系统管理员明确要求复盖。
2.6 国际化
Ubuntu 系统是国际化产品,不论是在控制台下还是在 X 下,它都提供多种语言的字符显示
和输入支持。 许多文档、帮助页面以及系统消息都被翻译成各种语言。 在安装过程中,Ubuntu
提示用户选择安装语言(有时是当地语言变量) 。
和输入支持。 许多文档、帮助页面以及系统消息都被翻译成各种语言。 在安装过程中,Ubuntu
提示用户选择安装语言(有时是当地语言变量) 。
如果你安装的系统提供的语言特性支持不能满足你的需要, 或者你要改变当前语言或安装别
的键盘方案以适应你的语言,参阅 本地化(localization), 第 9.7 节。
的键盘方案以适应你的语言,参阅 本地化(localization), 第 9.7 节。
2.7 Ubuntu 和系统内核
参见 Ubuntu 下的 Linux 内核, 第 7 章。
2.7.1 编译非 Ubuntu 源码包内核代码
首先你必须了解 Ubuntu policy 有关头文件的规定。
Ubuntu C libraries 是依据内核头文件最新 stable 发布版创建的。
跟随内核源码发布的内核头文件位于/usr/include/linux/include/。
如果你编译某个程序所用的内核头文件比 libc6-dev 提供的头文件还新, 在编译时你必须在
命令行中加上- I/usr/src/linux/include/。这些情况是存在的,例如,对于 automounter
daemon(amd)软件包而言,当新内核改变了对 NFS 的内部操作方式,amd 需要知道这些改
变。这时就需要引用新的内核头文件。
命令行中加上- I/usr/src/linux/include/。这些情况是存在的,例如,对于 automounter
daemon(amd)软件包而言,当新内核改变了对 NFS 的内部操作方式,amd 需要知道这些改
变。这时就需要引用新的内核头文件。
17
2.7.2 自定义内核创建工具
2.7.2 自定义内核创建工具
对于希望(或必须)使用自定义内核的用户,推荐下载 kernel-package 软件包。该软件包
包含了创建内核包的脚本。有了它,新建 Ubuntu 内核镜像包只需在内核源码目录的一级目
录运行
包含了创建内核包的脚本。有了它,新建 Ubuntu 内核镜像包只需在内核源码目录的一级目
录运行
# make-kpkg kernel_image
在内核源码所在目录的顶层,执行下述命令可获得有关帮助
在内核源码所在目录的顶层,执行下述命令可获得有关帮助
# make-kpkg --help
或阅读 make-kpkg(8)帮助页面以及 Ubuntu 下的 Linux 内核, 第 7 章。
或阅读 make-kpkg(8)帮助页面以及 Ubuntu 下的 Linux 内核, 第 7 章。
如果所需的 kernel-source-version version 代表内核版本号)
( 包不存在,用户就得从 Linux
文件站点分别下载最新的(或需要的)内核源码。
( 包不存在,用户就得从 Linux
文件站点分别下载最新的(或需要的)内核源码。
有关 kernel-package 包的用法详述见于/usr/doc/kernel-package/README。
2.7.3 多系统引导器
要使用多系统引导器如 grub 或 loadlin,请将编译好的 Linux 内核 bzimage 拷贝到相应的
地方(例如/boot/grub 或 MS-DOS 分 区 )。
地方(例如/boot/grub 或 MS-DOS 分 区 )。
2.7.4 制做引导软盘
Ubuntu 的 mkrboot 软件包可以帮你制作一张自定义启动软盘,软件包中的 Shell 脚本按
syslinux 格式制作启动软盘。对于那些使用 MS-DOS 格式化的软盘,其主引导 扇区的记录
将被修改为直接引导 Linux(或是其它在盘中 syslinux.cfg 文件里的操作系统)。该软件包
中的其它脚本可制作急救盘甚至重建基本系 统。
syslinux 格式制作启动软盘。对于那些使用 MS-DOS 格式化的软盘,其主引导 扇区的记录
将被修改为直接引导 Linux(或是其它在盘中 syslinux.cfg 文件里的操作系统)。该软件包
中的其它脚本可制作急救盘甚至重建基本系 统。
2.7.5 模块加载规定
Ubuntu 的 modconf 软件包提供了一个 shell 脚本(/usr/sbin/modconf),它可以用来自定
义内核模块配置。该脚本使用菜单界面,用户通过 它给出系统中可挂载设备驱动的有关细
节,它再将这些细节信息生成/etc/modules.conf 文件(其中列出了别名 aliases 和其它参
数,用于 连接各种模块) ,该配置文件用来加载/etc/modutils/目录下和/etc/modu
义内核模块配置。该脚本使用菜单界面,用户通过 它给出系统中可挂载设备驱动的有关细
节,它再将这些细节信息生成/etc/modules.conf 文件(其中列出了别名 aliases 和其它参
数,用于 连接各种模块) ,该配置文件用来加载/etc/modutils/目录下和/etc/modu