账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
Debian的系统设计哲学
 

【作者: 陳漢儀】2004年08月26日 星期四

浏览人次:【5576】

Debian软件Package是以扩展名.deb作结尾,透过dpkg指令可以对于单一软件 Package作管理,这也是Debian软件管理系统的基本架构。dpkg与.deb和Debian 的关系就如同rpm与.rpm和Redhat一样,但是如果单纯的只使用dpkg来管理 Packages,就容易遇到rpm类似的相依性问题,为了彻底解决Package的相依性问题,Debian APT系统便呼之欲出。


十分倚赖网络的Debian APT系统

Debian的APT系统架构是将所有的Packages放置在服务器上,而在安装Debian OS的Client端透过apt-get指令就可以轻松撷取到服务器上的Packages。假设用户下了apt-get指令要安装Mozilla这个Package时,APT系统在作了相依性检查后,会自动找寻与Mozilla相依性的Package还有libnspr4 libnss3 mozilla-browser mozilla-mailnews mozilla-psm,尔后系统便再在Package服务器上,寻找到所有相关的Packages,并全部下载安装,实际的操作过程类似如下:



   	 debian:~# apt-get install mozilla
读取套件列表中... Done
了解套件依存关系中... Done
下列的【新】套件都将被安装:
          libnspr4 libnss3 mozilla-browser mozilla-mailnews mozilla-psm
        Suggested packages:
          mozilla-chatzilla
        Recommended packages:
           myspell-dictionary myspell-en-us xprt-xprintorg
下列的【新】套件都将被安装:
           libnspr4 libnss3 mozilla mozilla-browser mozilla-mailnews mozilla-psm
0 upgraded, 6 newly installed, 删除 0 个套件,另不更新 11 个套件。
需要下载 13.3MB 的档案。
解压缩后将消耗 40.9MB 的空间。
继续执行吗? 是按 [Y] 键,否按 [n] 键

以用户的角度来说,安装Mozilla是最终的目的,而用户通常也没兴趣了解Mozilla与其他Package的相依关系。此时用户的脑海中要的就是:「只管帮我把Mozilla安装好就好。」而利用Debian APT系统,便可以轻松的应付这样的问题。


摆放在服务器上的Package几乎都是最新的,用户可以不断地利用「apt-get upgrade」或「apt-get dist-upgrade」,并透过网络使自己的Debian永远保持在最新的状态,如(图一)。


《图一 Debian APT 网络系统》
《图一 Debian APT 网络系统》

@內文:Debian从系统安装开始到安装完成后的系统更新,都可以透过网络轻松地完成。当然这不是说一切非得透过网络才行,透过光盘或其他媒介也是可以的,但相对地就没有使用网络来的方便。所以说Debian是一套非常倚赖网络的Linux Distribution,或是有网络才能发挥Debian的所有潜能。


Debian的三大族群制度

有别于一般的Linux Distribution,Debian自创了三大族群制度,分别是Stable、Testing、Unstable。任何一个软件Package进入Debian Project后都会流经这三大族群,我们亦可以将之看作是三种状态。详细解说分述如下:


Stable

由「Stable」这名词就可以猜到八九分意思了吧,这就是Debian对外发行的版本例如:Debian 2.x、Debian 3.x。这个族群的最大特色就是稳定,但通常各个软件Package并不是最新版。


「Stable」非常适合拿来作服务器的操作系统,因为通常服务器系统所要求的是稳定,而不需要是最新版的软件。


Testing

「Testing」虽名为测试版,实则已经相当接近于「Stable」版本的程度。「Testing」的软件Package多半是在「Unstable」阶段中,经由一般用户、软件Package维护者、开发人员不断的测试后流入,所以在某种程度上来说,已经是相对的稳定。把Debian拿来当作Desktop平台,「Testing」将会是个很不错的选择。


Unstable

其实「Unstable」对作者来说才算是「测试版」,这里面最大的特色就是软件更新速度快,几乎都与原软件最新版本同步。不过也因为版本太新,相对经过测试的次数便不如「Testing或Stable」那么完整,使用「Unstable」的人必须承担更高的风险。「Unstable」是玩家常用的版本,喜欢「玩」软件的读者可以试试这个版本。


Debian的版本演进

Debian把电影「玩具总动员」的角色名字拿来当作不同世代族群间的Code Name其Code Name如下:


  • * Buzz (Buzz Lightyear) was the spaceman


  • * Rex was the tyrannosaurus


  • * Bo (Bo Peep) was the girl who took care of the sheep


  • * Hamm was the piggy bank


  • * Slink (Slinky Dog) was the toy dog


  • * Sarge was a leader of the Green Plastic Army Men


  • * Potato was, of course, Mr. Potato Head


  • * Woody was the cowboy


  • * Sid was a boy next door who destroyed toys



举例来说,目前「Stable」的Code Name为「Woody」,「Testing」为「Sarge」。


不过有一个特别的地方是「Unstable」的Code Name永远为「Sid」,原因是Sid可视为“Still In Develop”的缩写。


其实版本编号对于Debian的用户来说,并没有太大的意义,这是因为 Debian 三大族群的制度冲淡了用户对版本编号的感觉。以比较贴近现实生活的说法是:「我们正使用Debian Stable、Testing或Unstable。」


Debian软件的分布:

前面研究了 Debian 特有的族群(状态)架构 ,我们继续要探讨的是Packages在Debian分类的情形。


这里要回过头来思考,Debian强调的「自由」定义,所有的规范都写在「Debian Free Software Guidelines(DFSG)」中。而在所谓的自由原则下,Debian将所有 Packages作了以下的分类:


  • * Main:Debian Distribution最基本及符合Debian自由规范(DFSG)的软件(Packages)。


  • * Contrib:这里的软件虽然符合DFSG的规范,但却相依于一些不符合DFSG的Package。此外,这个类别亦包含一些Shareware。


  • * Non - Free:不属于DFSG定义的软件。


  • * Non - US:由于美国专利法的规定问题,有些软件(如牵扯到加密的一些软件)不得输出到美国本土外。所以对于诸如此类的Package,Debian将之规类为Non - US,并把这些Package摆放在没有输出限制的国家里。



sources.list与apt - get指令

透过上述的说明,相信读者对Debian的分级制度已经有了初步的认识。不过以现实使用的状况而言,在选择族群上本并非是泾渭分明。


简单地说,就算使用「Testing」版本的人,还是可以使用「Stable」或「Unstable」中的软件。这并不是幻想,举个例子来说,目前仅「Unstable」中提供最新的Mozilla软件,如果读者使用的是「Stable」或「Testing」,仍旧是可以安装「Unstable」中的最新版Mozilla。


尽管技术上没有问题,但笔者并不建议同时大量混用不同层级的软件。因为很多软件之间都有不同程度的相依性,强行的结果会造成更多软件相依、相斥的问题,最终可能影响系统稳定与整个软件升级制度的正常运作。尤其是越接近系统底层的软件,如:glibc、xfree86等,越是要小心谨慎,因为这些软件多半牵连广泛,一个不小心,系统可能就毁了。


或许读者已经想到如果用户喜爱「Stable」的稳定,但在某些软件上又希望能使用更新的版本,那该怎么办呢?别担心!这时候读者可以选择「Debian Backports」。


「Debian Backports」专门针对「Stable」的环境去提供一些新版软件的Debian Package,等读者了解sources.list的机制后,您就可以将他们的站台加入到sources.list中,并安装这些「Debian Backports」的Packages。


sources.list的说明

Debian APT系统提供了一个很有弹性的架构,用户可以自行决定安装的软件要来自那个族群。其方法相当容易,所有的信息都记载在「/etc/apt/sources.list」的文本文件中。其档案的格式如下:



deb uri distribution [component1] [componenent2] [...]

以下就各个选项作细部说明:


deb

这一栏的写法有两种,分别为「deb」与「deb – src」。前者表示所指向的站台为专门存放Binary格式的软件Package服务器位置;后者则是存放Sources Code格式的软件Package服务器位置。换句话说,只想用户要安装该软件,而不想要去重新编译它时,就在这一栏填入「deb」,如果读者想取得某软件的原始码(Sources Code),就得加入「deb – src」, 当然也可以两行都写,举例如下:



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

uri(Universal Resource Identifier)

uri指的是软件套件来源位置,这些位置可以为系统内的某个位置(file)、CD-ROM(cdrom),或网络远程位置(http、ftp)等。当用户下apt - get指令时,uri就会到这些位置去搜寻软件数据库。全部的参数共有file、cdrom、http、ftp、copy、rsh、ssh等。


Distribution

参数可分为「Stable」、「Testing」、「Unstable」。


Component

参数共分为「Main」、「Contrib」、「Non - US」、「Non – Free」。


了解「sources.list」的撰写规范之后,我们便可经由修改此档来达成转换不同族群的需求。举例来说,目前系统在「Stable」状态下,我们将「Unstable」的站台加入到sources.list中,举例如下:



        # See sources.list(5) for more information, especialy
        # Remember that you can only use http, ftp or file URIs
        # CDROMs are managed through the apt-cdrom tool.
        deb http://http.us.debian.org/debian/ stable main non-free contrib
        deb-src http://http.us.debian.org/debian/ stable main non-free contrib
        deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
        deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free

改为:



        # See sources.list(5) for more information, especialy
        # Remember that you can only use http, ftp or file URIs
        # CDROMs are managed through the apt-cdrom tool.
        deb http://http.us.debian.org/debian/ stable main non-free contrib
        deb-src http://http.us.debian.org/debian/ stable main non-free contrib
        deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
        deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
# 加入 unstable 站台
        deb http://http.us.debian.org/debian/ unstable main non-free contrib
        deb-src http://http.us.debian.org/debian/ unstable main non-free contrib
        deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free
        deb-src http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free

如此一来即使身处在 Debian「Stable」的环境底下,也能透过「apt - get 指令」去安装Debian「Unstable」中的软件。


sources.list的注意事项

笔者要再次强调,请尽可能不去混用不同Debian族群间的软件,以免造成系统的不稳定。此外,值得一提的是「sources.list」具备了弹性的机制,其来源位置几乎可以是网络上的任何一个角落,不见得是要Debian Office站台,个人制作的.deb软件套件也可以开放给网络上的任何人使用。


不过相当受欢迎的多媒体播放软件 - Mplayer,因为License问题而没有被纳入 Debian中,但网络的热心人士特地制作了Mplayer的Debian Package供Debian 用户享用。


Debian镜像与非官方apt站台

或许有人会担心,当大量的Debian用户同时连上Packages服务器时,会不会造成服务器负担过重而停摆。其实目前全球各地都有许多Debian的镜像(Mirror)站台,用户不用记住这些站台网址,因为可以透过「apt - setup」指令来选择所要去的站台,如(图二)。


《图二 透过apt-setup选择「sources.list」站台》
《图二 透过apt-setup选择「sources.list」站台》

apt-get指令操作

或许用户正被Debian的「sources.list」机制搞的头晕脑胀,不过笔者相信在熟读本节所介绍的「apt - get」指令之后,必然会有豁然开朗、茅塞顿开的感觉。不过要注意的是,在执行「apt-get」指令时需以「root」的身份来执行。


「apt – get」指令操作非常简单,下面列出较常使用的选项及参数。


软件数据库同步:apt-get update

这是「apt – get」指令的起点,在下达任何「apt – get」相关软件安装或升级指令前,一定得先下「apt - get update」指令。这会让系统依照「sources.list」配置文件内记录的软件来源服务器位置,进行软件数据库同步动作,并知道目前系统上安装的软件跟服务器上可抓取的软件版本是否一致。如不一致,就表示有更新版的软件可以升级或安装。


软件安装:apt - get install

用户在安装软件时,最怕的就是恼人的相依、相斥问题,但是在Debian里,安装软件是一件非常愉悦的事情,只要「apt - get install package」的一行指令,便可完成安装的动作。而所有相依、相斥的细节Debian APT系统都会帮我们处理,用户所要做的就是「Say Yes」。我们以安装vim为例:



#apt-get install vim

软件移除:apt - get remove

与Intall一样,Debian一样会处理移除软件时所发生的一些问题。我们以移除vim为例:


#apt - get remove vim

软件升级:apt - get upgrade

平常我们很难顾虑到系统上所安装的数百套软件的版本是否有新版出现,现在只要下这个指令,Debian便会自动找出所有新版软件的套件,并逐一升级。其语法为:


#apt - get upgrade

系统升级:apt - get dist - upgrade

当转移整个系统时,如「Stable」 转换到「Testing」,或是系统运行好一段时间,用户都应该下这个指令。因为它会聪明地处理很多软件相依、相斥的问题,并且做好系统升级的工作。其语法为:


#apt-get dist-upgrade

取得Package原始码apt - get source

如果用户想取得某个软件套件(P ackages)的原始码,可以透过这个指令来达成。我们以取得vim原始码为例:


#apt-get source vim

这个功能对程序开发者来说十分方便,当开发者遇到瓶颈时可以轻松地找寻相关的程序代码来研究。


清除下载回来的.deb档案:apt - get clean

我们透过apt - get安装的任何软件,都会先下载到「/var/cache/apt/archives/」和「/var/cache/apt/archive/partial/」目录底下。一般默认apt - get在安装完软件后,并不会把上述位置底下的「.deb」档杀除。所以在一段时间后,用户如果觉得系统空间不足,您可以下「apt - get clean」这个指令,来让系统自动清理这个目录。


图形接口的软件管理工具

虽然指令用熟了可以加快操作速度,但不可否认的是,图形接口的亲和力还是强了些。其实除了以指令来维护Debian,用户还可选择不同的图形接口软件来管理Debian。


Aptitute

Aptitude是Curses - Based的用户接口,堪称为目前功能最强大的apt接口。虽然它是文字接口下的图形接口软件,但Aptitute优秀的设计让人爱不释手。此外,Aptitute也支持鼠标。


《图三 Aptitute开始画面》
《图三 Aptitute开始画面》

Synaptic

Synaptic是一套由GTK+开发而成的系统软件管理程序,图形接口的操作不需笔者多说,大家一定都很拿手。


《图四 Synaptic主画面 》
《图四 Synaptic主画面 》

结语

Debian GNU/Linux是一套非商业的Linux Distribution,虽然不是商业软件,但却是一套功能完整、Package管理精良的Linux Distribution。经过本篇文章的介绍,相信读者对于Debian的Package功能有了初步的认识与了解。用户如对强大更新功能的Linux有兴趣,不妨来试试这个以指令为基础的操作系统。


<作者为国内Debian社群之重要推动者,联络方式:moto_chen@Phoenix.com>


延 伸 阅 读
很多人都只是耳闻Debain的好,但是真正敢下海的人少之又少,Debian会很难伺候吗?其实不然,但是坦白说Debian确实比较难以入门,而且很多设定上的习惯也跟一般Distribution不同,不过如果过的了门坎的人,十个有九个不会想要再用其他Distribution了。相关介绍请见「Debian无痛起步法」一文。
Debian是一套自由操作系统,也是一款计算机运行的基本程序和工具的汇集。Debian使用Linux核心,但大部份的基本工具则来自GN 计划,因此我们称为 GNU/Linux。你可在「Debian是什么?」一文中得到进一步的介绍。
Jigdo是Jigsaw Download缩写,意思为拼图式的下载工具。这是Debian推荐的下载Debian GNU/Linux光盘的工具。Jigdo不仅是一个好用的下载大型档的实用工具,它也从一个侧面展示了Debian GNU/Linux有别于其他GNU/Linux Distribution的特点。在「Jigdo:下载Debian光盘的新方法」一文为你做了相关的评析。
相关组织网站
非官方的Debian apt站台数据库
Aptitute官方网站
Synaptic官方网站
相关文章
多功能嵌入式系统新未来:从Android到Raspberry Pi 3
嵌入式Linux系统转移关键探讨 (上)
让Windows和Linux一起跳桑巴舞
Linux 开发者的最爱 - Debian
Utility Computing在卖什么药?
comments powered by Disqus
相关讨论
  相关新闻
» 达梭系统携手CDR-Life 加速癌症治疗科学创新
» 宜鼎独创MIPI over Type-C解决方案突破技术局限,改写嵌入式相机模组市场样貌
» 鼎新电脑串连生态系夥伴 数智驱动智慧低碳未来制造
» 鼎新电脑携手和泰丰田解缺工 以数位劳动力开启储运新时代
» Fortinet SASE台湾网路连接点今年落成 全台巡??落实云地零信任资安


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK8514S2JIOSTACUKR
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw