[ 上一页 ] [ 目录 ] [ 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(8)
。
即便在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来确定,可能会因Debina版本而异)
每个 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(8)
帮助页面以及Debian下的 Linux 内核, 第 7 章。
如果所需的kernel-source-version(version代表内核版本号)包不存在,用户就得从Linux文件站点分别下载最新的(或需要的)内核源码。
Debian
的initrd
启动脚本需要一个专门的内核路径调用initrd
;参阅http://bugs.debian.org/149236
。
有关kernel-package
包的用法详述见于/usr/doc/kernel-package/README。
要使用多系统引导器如grub
或loadlin
,请将编译好的Linux内核bzimage
拷贝到相应的地方(例如/boot/grub
或MS-DOS分区)。
Debian
的boot-floppies
软件包可以帮你制作一张自定义启动软盘,该软件包通常位于
Debian FTP包文件站点 Potato
和更老版本的admin分类中。软件包中的Shell脚本按syslinux
格式制作启动软盘。对于那些使用MS-DOS格式化的软盘,其主引导扇区的记录将被修改为直接引导Linux(或是其它在盘中syslinux.cfg文件里的操作系统)。该软件包中的其它脚本可制作急救盘甚至重建基本系统。
安装该软件包后,阅读/usr/doc/boot-floppies/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 参考手册
1.09-1ubuntu1, 星期日 五月 14 02:44:32 UTC 2006osamu@debian.org
iamlyoo@163.net
minghua@rice.edu
atzlinux@163.com
optical.dlz@gmail.com
xieyanbo@gmail.com
easthero@gmail.com