[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一页 ]
本章讲述非开发人员需要掌握的 Debian 系统基础知识。有关知识的权威参考,请参阅:
Debian Policy Manual
Debian Developer's Reference
Debian New Maintainers' Guide
列表见 参考资料, 第 15.1 节。
如果你想查阅简要的“how-to”解释文档,可直接跳到 Debian 软件包管理, 第 6 章 或其它相关章节。
本章的内容取自“Debian FAQ”,经过较大的改编,以适于普通 Debian 系统管理者上手。
Debian 软件包位于 Debian
镜像站点
的目录树中,可通过 FTP 或 HTTP 访问它们。
下列目录存在于任何 Debian 镜像站点的 debian 目录下:
dists/
:本目录包含“发行版”(distributions),此处是获得 Debian 发布版本(releases)和已发布版本(pre-releases)的软件包的正规途径。有些旧软件包及 Contens-*.gz Packages.gz 等文件仍在其中。
pool/
:所有 Debian 发布版及已发布版的软件包的新的物理地址。
tools/
:一些 DOS 下的小工具,用于创建启动盘、硬盘分区、压缩/解压缩和启动 Linux。
doc/
:Debian 的基本文档,如 FAQ、错误报告系统使用说明等。
indices/
:维护人员文件和重载文件。
project/
:大部分为开发人员的资源,如:
project/experimental/
:本目录包含了处于开发中的软件包和工具,它们均处于 alpha 测试阶段。用户不应使用这些软件,因为即使是经验丰富的用户也会被搞得一团糟。
project/orphaned/
:已不再有人维护的软件包,它们已从发行版中孤立出来。
通常在 dists 目录下有三个 Debian 发行版。它们是“stable”发行版,“testing”发行版,和“unstable”发行版。有时还有一个“frozen”发行版。每个发行版均定义成一个符号链接指向该目录相应的代号目录。
stable 发行版软件包入口,Debian Sarge (3.1r0) 被登记到 stable 目录(符号链接指向 Sarge 目录):
stable/main/
:本目录包含的软件包均属于最新 Debian 系统官方发布版。
这些软件包均是“自由软件”--即遵循Debian
自由软件准则
(缩写为 DFSG,安装 debian-doc
之后,可以在
/usr/share/doc/debian/social-contract.txt
找到该文档)。
stable/non-free/
:本目录包含不能依照 DFSG 来自由使用的的软件包。
例如,有些软件包的许可证禁止其用于商业发行的。其它的可以再发行,但属于共享软件。
stable/contrib/
:本目录包含的软件包均遵循 DFSG
自由使用原则,但它们倚赖于不遵循 DFSG 自由使用原则的软件包。
现在,作为以上位置的新增功能,实际上新的软件包都存储在 pool 目录中(pool目录, 第 2.1.10 节)。
现阶段 stable 发行版错误报告位于 Stable
Problems
页面。
testing 发行版软件包入口,处于 unstable 版本的 Debian
Etch 通过级别测试后登记到 testing 目录(符号链接指向
Etch 目录)。现在,除了上述目录,新上载的软件包的物理存储位置为
pool 目录(pool目录, 第 2.1.10
节)。在 testing
下同样有
main
、contrib
和 non-free
子目录,它们的作用与 stable
中的一样。
这些软件包必须在构建时在所有架构中保持同步,而且保证是可以安装的;相比
unstable
中的对应版本,它们应该有更少的影响发行的(RC)错误。我们希望按照这种方式
testing 能始终保持为一个发布的候选版本。有关 testing
版本的更多信息见于 http://www.debian.org/devel/testing
。
testing 发行版的最新消息发布在下列站点:
unstable 发行版软件包入口,sid 被登记到 unstable
目录(符号链接指向 sid
),上载的软件包在被移至 testing
目录前一直呆在这儿。新上载的软件包的物理存储位置为 pool
目录(pool目录, 第 2.1.10 节)。在 testing 下同样有
main
、contrib
和 non-free
子目录,它们的作用与 stable
中的一样。
unstable 发行版反映了系统的最新开发进展。欢迎广大用户使用并测试这些软件包,同时也提醒你们这些软件包还不完善。使用 unstable 发行版的好处就是你可以获得 Debian 项目的最新更新 — 不过新东西也会出新问题,你得好坏兼收:-)
unstable 发行版的最新错误报告见于 Unstable
Problems
页面。
当 testing 发行版足够成熟了,它成为 frozen
发行版,表示这个版本不再加入新代码,只进行除错工作。同时,dists
目录中会建立新的 testing 发行版目录树,并命名新的版本代号。frozen
发行版再经过几个月的测试、更新、再冻结也称之为“循环测试”。(新近的
woody 发布进程没有创建 frozen 符号链接,所以
frozen 并不算发行版,仅仅是 testing
发行版的一个开发阶段。)
我们将 frozen 发行版中可能延迟软件包或整个版本发布的错误都记录在案,一但错误总数低于可接受的最大值,frozen 发行版就晋升成 stable,新版本发布了,先前发布的版本成为过期版(obsolete)(并被移于相应的目录)。
存在于dists目录下的物理目录名,例如Sarge和Etch,就是“版本代号(codenames)”。当某个Debian发行版处于开发阶段,它并没有版本号,取而代之的是版本代号。使用版本代号的目的在于简化建立Debian发行版镜像的工作(如果真实目录例如unstable突然改名为stable,许多文件都没必要再次下载)。
当前,stable 是一个指向 Sarge 的符号链接,testing 是指向 Etch 的符号链接。也就是说 Sarge 是当前的 stable 发行版,Etch 是当前的 testing 发行版。
unstable 发行版是指向 sid 的永久符号链接,即 unstable 发行版总称为 sid。
已使用过的发行版代号有: buzz for release 1.1, rex for release 1.2, bo for releases 1.3.x, hamm for release 2.0, slink for release 2.1, potato for release 2.2, woody for release 3.0,和 sarge for release 3.1。
到目前为止它们均出自 Pixar 的电影“Toy Story(Toy Story)”
Buzz(Buzz Lightyear)是个宇航员,
Rex 是只暴龙,
Bo(Bo Peep)是个放羊的女孩,
Hamm 是个小猪攒钱罐,
Slink(Slinky Dog)是只玩具狗,
Potato 当然就是 Potato Head 先生,
Woody 是个牛仔,
Sarge 是位绿色塑料玩具士兵首领,
Etch(Etch-a-Sketch)是玩具黑板,
Sid 是隔壁的男孩,那个玩具终结者。
过去,软件包均放在 dists 目录下相应发行版的子目录中。这种做法产生了许多问题,当镜像站点进行新版本发布时大量带宽被消耗。
现在软件包均放进一个巨大的“池子(pool)”,按照源码包名称分类存放。为了方便管理,pool 目录下按属性再分类(main、contrib和non-free),分类下面再按源码包名称的首字母归档。这些目录包含的文件有:运行于各种系统架构的二进制软件包,生成这些二进制软件包的源码包。
你可以执行命令 apt-cache showsrc
mypackagename,查看“Directory:”行获知每个软件包的存放位置。例如:apache
软件包存放在 pool/main/a/apache/
软件包存放在 lib*
软件包数量巨大,它们以特殊的方式归档:例如,libpaper
软件包存放在
pool/main/libp/libpaper/
。
诸如 apt 等命令访问的索引文件仍位于 dists 目录中,直到本文写作之时,旧发行版的软件包还没转到 pool 目录,所以你将看到路径的“Directory”域中包含有发行版名称如 potato 或 woody。
通常,你大可不必注意这些,新版的 apt
和旧版 dpkg-ftp
会自动处理它们。想了解更多信息,参阅 RFC:
软件包仓库的实现
。
过去 sid 并不存在, Debian 文件组织只有一个主要的工作流程:假设当前 unstable 发行版中创建了某个软件开发项目,当它成为新的 stable 版之时,便是它的发布之日。由于软件包一但发布就需要移动到新的 stable 目录,当众多软件开发项目移动目录时大量带宽会被吞噬掉,这个流程就显得很不切实际,因而许多软件开发项目并没有按这个方法行事。
经过几年的研究摸索,文档管理员提出一个方案,将未获准发布的二进制文档存入名为 sid 的特定目录。由于这些软件尚未发布,从那时起,它们就被加入到 unstable 目录树。当它们首次发布时,将会建立一个从当前 stable 指向 sid 的链接。这个方案用户听起来的确有些晕头。
有了软件包储藏池的帮助(参阅pool目录, 第 2.1.10 节),在 woody 发行版开发过程中,二进制软件包均按一定规范存放于 pool 目录,而与发行版无直接关系,当发布新版本时,就不会再出现大量带宽被消耗的问题。(不过,大量带宽还是被开发进程消耗了)。
incoming
中的软件包
上载的软件包首先存放于 http://incoming.debian.org/
经过检收,确定它们是由 Debian
开发者上载的(对于那些属于无维护者上载(Non-Maintainer Upload 缩写
NMU)的软件包则放入 DELAYED
子目录)。会有一天,它们将从
incoming 移入 unstable。
在紧急情况下,你可能会等不及它们移入 unstable 而直接从 incoming 中下载安装。
最新的 Debian 发行版存放在任何一个 Debian 镜像站点
的
debian 目录下。旧版本的 Debian 如 Slink 存放在 http://archive.debian.org/
或
Debian 镜像站点的 debian-archive 目录下。
旧的 testing 和 unstable 软件包存放在 http://snapshot.debian.net/
。
在每个主目录树下(dists/stable/main
、dists/stable/contrib
、dists/stable/non-free
、dists/unstable/main/
,等)按芯片架构又分了子目录,每个子目录中存放着在该芯片架构下编译的二进制软件包。
binary-all/
,存放与芯片架构无关的软件包,如 Perl 脚本、纯文档等。
binary-platform/
,存放运行于该平台的二进制软件包。
请注意,testing 和 unstable
发行版的二进制软件包不再存放在这些目录中,它们存放在上一级 pool
目录中。目录中仍保留有索引文件(Packages
和Packages.gz
)是为了向下兼容。
要获得有关二进制架构技术支持,参阅各发行版的发布手记(Release
Notes),可以访问发布手记站点 stable
和
testing
.
Debian 系统中的一切程序都有源代码,不仅如此,许可证条款规定系统中所有的程序必须和其源代码一起发行,或提供源代码出售。
通常源代码发布在 source 目录,该目录同时处于所有架构目录中,更新的源码则在 pool 目录中(参阅pool目录, 第 2.1.10 节)。对于不太熟悉 Debian 归档目录结构的用户想获得源代码可以试试 apt-get source mypackagename 命令。
有些软件包,如著名的pine
,由于许可证限制,只提供源码包。(最近,pine-tracker
软件包提供了一个简易的安装版)安装源码包的方法可参阅向 stable 系统引入软件包, 第
6.4.10 节,打包, 第 13.10
节教你如何手工创建一个软件包。
contrib
和 non-free
目录中的软件包可能不提供源代码,因为它们没有正式加入 Debian 系统。
软件包通常包含了实现一系列相关命令或特性所必须的所有的文件。有两种类型的 Debian 软件包:
Binary packages(二进制软件包),它包含可执行文件、配置文件、man/info 页面、版权声明和其它文档。这些软件包以 Debian 特定的格式发布(参阅Debian 软件包格式, 第 2.2.2 节);它们通常使用 .deb 的扩展名以示区别。这种二进制软件包可使用 Debian 工具 dpkg 解包,详情见有关帮助页面。
Source packages(源码包),包含一个 .dsc 文件它用于描述源码包(包括下列文件的名称),一个 .orig.tar.gz 文件它是未经修改的原始源代码压缩文件,以及一个 .diff.gz 文件它包含了该软件包 Debian 化时所做的修改。dpkg-source 工具可用于打包/解包 Debian 源码包,详情可参阅有关帮助页面。
软件包管理系统安装的软件包时需要使用“倚赖关系”,它由软件包维护者声明。这些信息记录在与每个软件包关联的
control
文件中。例如,包含 GNU C
编译器(gcc)的软件包依赖于包含链接器和汇编器的 binutils
软件包。如果用户试图在没有安装 binutils
的情况下安装
gcc
,软件包管理系统(dpkg)将会显示一条错误信息,告诉你需要安装
binutils
,并停止安装
gcc
。(不过,倔强的用户可以对这个信息视而不见,参阅dpkg(8)
)。)更多信息,参阅下面的章节软件包依赖关系, 第 2.2.8 节。
Debian 软件包管理工具可用于:
操作和管理软件包或软件包的局部内容,
帮助那些使用有限容量载体如软盘传输的用户分割软件包,
帮助开发者将开发文件打包成软件包,
帮助用户从远程 Debian 文档站点安装软件包。
Debian “软件包”,或称之为 Debian 包文件( Debian archive file),包含了可执行文件、库文件、和相关程序的文档。通常 Debian 文件的文件名以 .deb 结尾。 [1]
Debian 二进制软件包内部格式描述见
deb(5)
帮助页面。由于这种内部格式会改变的(特别对于 Debian
的新旧发布版),所以要操作 .deb 文件请参阅
dpkg-deb(1)
。
即便在 Sarge 发行版中,当 dpkg
命令不可用时,所有的 Debian
软件包文件依然可以用标准的 Unix 命令 ar
和 tar
来操作。
Debian 软件包命名遵循下列约定:
foo_ver-rev_arch.deb
一般这里的 foo 是软件包的名称,ver 是软件本身的版本号,rev 是 Debian 修订版本号,arch 是目标架构名称。当然,文件很容易被改名;不过,你也可以通过运行下面的命令来找出文件 filename 实际是那个软件包:
dpkg --info filename
Debian 修订版本号由 Debian 开发者或创建这个软件包的人指定。通常,包被修改过之后,会把修改版本号加一。
有可能被本机管理员修改的文件保存在 /etc/
目录中。 Debian
策略中规定所有对本地配置文件的修改都可以在软件包升级过程中被保留下来。
在软件包的发布中,如果包含默认的本地配置文件,这个文件就被称为“conffile”(默认配置)。如果不得到管理员的允许,软件包管理系统不会对上次安装之后被修改过的默认配置进行升级;不过,如果管理员没有改动过默认配置,那么它就会被升级成最新软件包中的版本。这种策略几乎总是合理的,它有益于把默认配置的改动减到最小。
下面的命令可以列出一个软件包中包含那些默认配置文件:
dpkg --status package
文件列表位于“Conffiles”的后面。
在《 Debian 策略手册》的“配置文件”一节,可以获得有关 conffile (默认配置)文件的更多信息(参见参考资料, 第 15.1 节)。
Debian 维护脚本是一种可执行脚本,它在软件包安装之前或之后自动运行。它和一个名叫 control 的文件一起组成 Debian 包文件的“管理”部分。
这些文件是:
在 Debian 包文件解包之前,运行这个脚本。许多“preinst”脚本的任务是停止作用于待升级软件包的服务,直到软件包安装或升级完成。
该脚本的任务是完成 Debian 包文件解包文件的配置工作。通常,“postinst”脚本等待用户输入,或提醒用户,如果他接受当前默认值,要记得软件包安装完后返回重新配置。许多“postinst”脚本负责执行有关命令为新安装或升级的软件重启服务。
该脚本负责停止与软件包关联的 daemon 服务。它在删除软件包关联文件之前执行。
该脚本负责修改软件包链接或文件关联,或删除由它创建的文件。(参阅虚拟软件包, 第 2.2.7 节)。
当前,所有的管理文件都存放在 /var/lib/dpkg/info
目录。与
foo
软件包相关的文件,名字以“foo”打头,以“preinst”、“postinst”等为扩展名。目录中的
foo.list 文件列出了 foo
软件包安装的所有文件。(注意这些文件的位置在由dpkg来确定,可能会因 Debian
版本而异)
每个 Debian 软件包均被发布者指定了一个优先级,作为软件包管理系统 的一个辅助参数,优先级的值有:
Required(必须) 该级别软件包是保证系统正常运行必须的。
包含所有必要的系统修补工具。不要删除这些软件包,否则整个系统将受到损坏,甚至无法使用dpkg
恢复。只安装
Required
级软件包的系统不可能满足所有的用途,但它可以启动起来,让系统管理员安装想要的软件。
Important(重要) 在任何类 Unix 系统上均安装有该级别软件包。
系统若缺少这类软件,会运行困难或不能使用。该级别软件包并不包括 Emacs 或 X11 或 TeX 或其它大型应用程序。它们只是一些实现系统底层功能的程序。
Standard(基本) 该级别软件包是任何 Linux 系统的标准件,它们组成一个小而精的字符模式的系统。
系统的默认安装就包括了它们。“Standard”级软件包不包括许多大型应用程序,但它包括Emacs(它比其它应用程序更底层)和 Tex 及 LaTeX 的精巧版(不支持 X)。
Optional(推荐) 该级别软件包包括那些你可能想安装的软件,即使对它们并不熟悉,但对它们没有特殊的要求。
它们包括 X11,TeX 完整发布版和许多应用程序。
Extra(额外) 该级别软件包可能与其它高级别软件包冲突,仅当你知道其用途时才会使用它们,或者有运行它们有专门要求,这些都使它们不适合定为“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”。
虚拟软件包是一个统称,它代指一组具有相近功能的软件包中的任何一个。例如,tin
和 trn
都是新闻组阅读软件,当系统中某个程序需要使用新闻阅读器时,它们中的任何一个都可以满足要求。因此,这两个软件包一起提供了一个叫做
news-reader
(新闻阅读器)的“虚拟软件包”。
类似的,许多
exim
、exim4
、sendmail
、postfix
这样的软件包都提供邮件传输代理的功能。因此,它们在一起提供了一个称为
mail-transport-agent
(邮件传输代理)的虚拟包。安装了它们中的任何一个,都会满足其它倚赖于邮件传输代理功能的程序的需要。
Debian
有个机制,如果系统中提供同种虚拟包的软件包安装了多个,系统管理员可以指定一个为首选软件。相关的命令是
update-alternatives
,更详细的描述参阅Alternative 命令, 第 6.5.3 节。
Debian 软件包管理系统依赖声明,它描述了这一事实:一些软件包需要其它软件包被安装才能正常运行或运行得更好。
软件包 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 中的所有文件和功能。
上述术语使用方法的更详细的信息参阅 Packaging Manual 和 the Policy Manual。
注意,dselect
可以对 recommends 和
suggests 类软件包进行更细粒度的操作,apt-get
只会简单的下载安装 depends 类软件包而不管
recommends 和 suggests
类软件包。这两个程序均正式使用 APT 作为其后端。
dpkg
总是在配置一个有依赖关系的包之前,先对被依赖的包进行配置。
然而,dpkg
通常将归档文件随意解包,不顾依赖性。
(从归档文件中解包并提取文件,将他们放置到正确的位置。) 如果是
Pre-Depends 包,则在所依赖的其它包被解包和配置之前,
Pre-Depends 包不会被解包。 [2]
使用这种依赖的目的是为了将依赖复杂性降至最低。
软件包有各种状态:“unknown”,“install”,“remove”,“purge”和“hold”。这些“希望”标记描述了用户打算如何操作这些软件包(既可以使用
dselect
的“Select”菜单,也可以直接调用 dpkg
)。
它们的意思是:
unknown - 用户并没描述他想对软件包进行什么操作。
install - 用户希望对软件包进行安装或升级。
remove - 用户希望删除软件包,但不想删除任何已有的配置文件。
purge - 用户希望完全删除软件包,包括配置文件。
hold - 用户希望软件包保持现状,例如,用户希望保持当前的版本,当前的状态,当前的一切。
有两种方法阻止软件包升级,使用 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
屏幕后立即生效。
Woody 中的 APT 系统有一个新机制来阻止软件包升级,在下载升级档进程中使用
Pin-Priority。参阅帮助页面 apt_preferences(5)
,或阅读
http://www.debian.org/doc/manuals/apt-howto/
或 apt-howto
软件包。
源码包发布在 source 目录中,既可以手工下载可以使用
apt-get source foo
获取它们(参阅apt-get(8)
帮助页面)。
对于 foo 软件包,从源码编译需要
foo_*.dsc
、foo_*.tar.gz
和
foo_*.diff.gz
文件(注意,对于由 Debian
开发的软件包,没有 .diff.gz 文件)。
当你得全了这些文件,如果你这安装了 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 "dpkg -i ../foo_version-revision_arch.deb"
安装新编译的软件包。参阅 向 stable 系统引入软件包, 第 6.4.10 节。
创建新软件包的详细信息,参阅 New Maintainers' Guide, 该文档在
maint-guide
包中,或浏览 http://www.debian.org/doc/manuals/maint-guide/
。
Debian 的设计目标之一就是提供一个平滑、安全和可靠的升级过程。软件包系统在升级过程中会将重要改变警告系统管理员,在某些情况下,会要系统管理员来做决定。
你也应该阅读发布手记(Release Notes),它存在于所有的 Debian
光盘中,也可以通过互联网访问 http://www.debian.org/releases/stable/releasenotes
或http://www.debian.org/releases/testing/releasenotes
。
Debian 软件包管理, 第 6 章提供了升级的实用指南,本节只提供一个大纲,由包工具开始。
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-mountable
已被新的 APT 系统取代。
APT(the Advanced Packaging Tool)是 Debian
软件包管理系统的高级界面,由几个名字以“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
。
另一个资源是 APT
HOWTO
,如果安装了 apt-howto
包,可在
/usr/share/doc/Debian/apt-howto/
中找到它。
apt-get upgrade 和 apt-get dist-upgrade
只获取“Depends”类软件包,它忽略“Recommend”和“Suggests”类软件包,不想这样的话,可使用
dselect
。
dselect
这个程序是 Debian
软件包管理系统中菜单驱动的用户界面。特别适用于首次安装和大面积升级。参阅 dselect
, 第 6.2.4 节。
更多信息,可安装 install-doc
包后阅读
/usr/share/doc/install-doc/dselect-beginner.en.html
或 dselect
Documentation for Beginners
。
Debian 系统的内核(文件系统)支持替换使用中的文件。 当一个软件包升级时,如果由该软件包提供的服务在当前运行级下正在运行,则该服务将被重新启动。 Debian 系统不要求用户在 single-user 模式下进行不停机升级。
如果你手工下载包文件到硬盘(这完全没有必要,请阅读上面有关 dpkg-ftp
或 APT 的内容),当你完成软件包安装工作后,可以从系统中删除 .deb
文件。
如果是使用 APT,这些文件会缓存在 /var/cache/apt/archives/
目录中。你可以在完成安装后删除它们(apt-get
clean)或者将它们拷贝到另一个机器的 /var/cache/apt/archives/
目录中以备以后的安装。
dpkg
会对软件包的解包、配置、删除、完全删除进行记录,但不能(目前是这样)记录在包操作的过程中活跃终端的行为。
最简单的解决方法是在运行
dpkg
、dselect
、apt-get
等工具的会话中加入 script(1)
程序。
同所有的 Unix 一样, Debian 通过执行 init
程序,来完成启动过程。init
的配置文件(/etc/inittab)中指定的第一个执行脚本应该是
/etc/init.d/rcS
。
接下来将要发生要看是否安装了 sysv-rc
软件包或 file-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
Debian 没有使用 BSD 风格的 rc.local 文件。
完成系统启动进程后,init 启动所有在默认运行级别配置为启动的服务。
默认运行级别由 /etc/inittab
中的 id 给出。 Debian
使用 id=2。
Debian 使用下列的运行级别:
1(单用户模式 single-user mode),
2 到 5(多用户模式 multi-user modes),
0(关闭系统),
6(重启系统)。
运行级 7、8 和 9 也能够使用,但是它们的 rc 目录在软件包安装的时候没有。
使用 telinit
命令来转换运行级别。
当进入一个运行级别时,所有在 /etc/rcrunlevel.d/
目录下的脚本将被执行。
脚本名的第一个字母决定了该脚本的运行方式: 使用 K
开头的脚本,使用 stop 参数来运行。 使用 S
开头的脚本,使用 start 参数来运行。
这些脚本按照它们名字的字母顺序运行;因此,“stop”脚本比“start”脚本先运行。
在 K 或 S
之后的两个数字决定了脚本运行的先后次序,数字小的脚本先运行。
实际上,目录 /etc/rcrunlevel.d/
中的脚本都是指向
/etc/init.d/
的符号链接。这些脚本接受
“restart”和“force-reload”作为参数:“force-reload”的方式可以用来在系统启动后,重新启动服务或者强迫它们重新装载它们的配置文件。
例如:
# /etc/init.d/exim4 reload
自定义运行级别是一个高级的系统管理任务。 下面的提示适用于大部分服务。
在运行级 R 启动 service 服务,创建一个符号链接
/etc/rcR.d/Sxyservice
到目标文件
../init.d/service
。 xy
是序列号,是由软件包在安装的时候分配给服务的。
停止服务,重命名符号链接,将它的名字用 K 开头来代替
S, 它的序列号是100减 xy。 可以使用象
sysv-rc-conf
或 ksysv
这样的运行级别编辑器来方便的修改服务。
在一个特定的运行级别目录,可以将某个服务的 S
符号链接删除来代替重新命名它。 这种作法不停止该服务,但将把该服务留在一种
sysv-rc
初始化系统认为的“漂浮”状态:
当运行级别改变时,该服务即不会启动,也不会停止,
它将保留它原有的状态,不管它是在运行或者没有运行。
注意,处于这种漂浮状态的服务,如果它所属的软件包升级了,
这个服务将启动,不管它在升级前是否运行。 这是当前 Debian 系统一个已知的缺点。
注意:还需要在运行级 0 和 6 之间保留服务的 K 符号链接。
如果删除了一个服务的所有符号链接,在升级该服务的软件包时,
所有的符号链接将恢复到它们的出厂默认模式。
不建议对 /etc/rcS.d/
目录里的符号链接做任何改变。
Debian 提供几种途径,在不破坏系统的前提下满足系统管理员各种要求。
dpkg-divert
,参阅dpkg-divert
命令, 第
6.5.1 节。
equivs
,参阅equivs
软件包, 第 6.5.2
节。
update-alternative
,参阅Alternative 命令, 第 6.5.3 节。
make-kpkg
可以支持多启动引导。参阅 make-kpkg(1)
和Debian 标准方式, 第 7.1.1 节。
/usr/local/
目录下的所有文件均属于系统管理员,Debian
不会改动它们。/etc
下的大部分文件属于
conffiles,Debian
不会在升级后覆盖它们,除非系统管理员明确要求覆盖。
Debian 系统是国际化产品,不论是在控制台下还是在 X 下,它都提供多种语言的字符显示和输入支持。许多文档、帮助页面以及系统消息都被翻译成各种语言。在安装过程中, Debian 提示用户选择安装语言(有时是当地语言变量)。
如果你安装的系统提供的语言特性支持不能满足你的需要,或者你要改变当前语言或安装别的键盘方案以适应你的语言,参阅本地化(localization), 第 9.7 节。
首先你必须了解 Debian policy 有关头文件的规定。
Debian C libraries 是依据内核头文件最新 stable 发布版创建的。
例如, Debian 1.2 发布版使用版本号为 5.4.13 的头文件。它基于所有 Linux FTP
文件站点发布的 Linux
内核源码包,这些源码包使用了最新的头文件。跟随内核源码发布的内核头文件位于
/usr/include/linux/include/
。
如果你编译某个程序所用的内核头文件比 libc6-dev
提供的头文件还新,在编译时你必须在命令行中加上
-I/usr/src/linux/include/。这些情况是存在的,例如,对于
automounter
daemon(amd
)软件包而言,当新内核改变了对NFS的内部操作方式,amd
需要知道这些改变。这时就需要引用新的内核头文件。
对于希望(或必须)使用自定义内核的用户,推荐下载 kernel-package
软件包。该软件包包含了创建内核包的脚本。有了它,新建 Debian
内核镜像包只需在内核源码目录的一级目录运行
# make-kpkg kernel_image
在内核源码所在目录的顶层,执行下述命令可获得有关帮助
# make-kpkg --help
或阅读 make-kpkg(1)
帮助页面以及Debian 下的 Linux 内核, 第 7 章。
如果所需的 kernel-source-version(version
代表内核版本号)包不存在,用户就得从 Linux
文件站点分别下载最新的(或需要的)内核源码。 Debian 的initrd
启动脚本需要一个专门的内核路径调用 initrd
;参阅 http://bugs.debian.org/149236
。
有关kernel-package
包的用法详述见于
/usr/doc/kernel-package/README。
Debian 的 modconf
软件包提供了一个 shell
脚本(/usr/sbin/modconf
),它可以用来自定义内核模块配置。该脚本使用菜单界面,用户通过它给出系统中可挂载设备驱动的有关细节,它再将这些细节信息生成
/etc/modules.conf
文件(其中列出了别名 aliases
和其它参数,用于连接各种模块),该配置文件用来加载 /etc/modutils/
目录下和
/etc/modules
(其中列出了需要在系统启动时加载的模块)目录的相关模块。
新版的配置帮助文件 Configure.help
可为构造自定义内核提供帮助,同样,modconf
软件包中也有一系列帮助文件(位于 /usr/share/modconf/
目录下),告诉你如何对模块设定合适的参数。参阅模块化的 2.4 内核, 第 7.2
节中的例子。
kernel-image-NNN.prerm
脚本可用来检查当前运行的内核版本,以确定是否与你打算卸载的内核版本相同。因此你可以使用如下命令删除不想要的内核镜像包:
# dpkg --purge --force-remove-essential kernel-image-NNN
(当然,要将 NNN 替换成你的内核版本号和修订版号。)
[ 上一页 ] [ 目录 ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ 13 ] [ 14 ] [ 15 ] [ A ] [ 下一页 ]
Debian 参考手册
CVS, 星期四 一月 18 11:53:48 UTC 2007osamu#at#debian.org
iamlyoo#at#163.net
minghua#at#rice.edu
atzlinux#at#163.com
optical.dlz#at#gmail.com
xieyanbo#at#gmail.com
easthero#at#gmail.com