debian是一种开源的操作系统,其内核理论上是可变的,主要有linux/freebsd/hurd三种。但是目前为止,主要被采用的都是linux内核,大部分都是基于i386或x86_64编译。

debian系统使用一种被称为deb的打包格式,这种格式中声明了依赖性问题,但是没有解决。所谓依赖,是指一个包内不包含运行所需的所有组件。例如特定版本的lib,辅助配置程序等。将依赖分离有助于多个包共享一份被依赖程序,并且几个组件可以独立升级。windows中通常将依赖包加入安装包内部,但是这样往往不利于被依赖程序的升级。(windows的二进制兼容性做的并不很好)如果没有打入安装包,windows中通常表现为安装一个程序的过程中提示你需要安装某个东西,请去哪里下载。debian的依赖是依靠一套被称为apt的系统解决的。在这套系统中,你可以指定一个源(debian mirror),或者多个源。apt系统会自动将上面所有软件的目录下载下来供你查阅安装。如果有依赖性问题会自动安装依赖的包。因此,配置好的apt系统相当于一个软件仓库,里面有很多程序。你可以选择其中的一部分,安装使用,而无须忧心安装过程。

apt的更新分为三部分,一部分是这个源中有哪些包,这些包的元信息(meta info)。包括这些包的名字,版本,所依赖程序的版本等。当一个源获得了新的软件的时候,就会更新这个列表,或者叫目录。客户端更新目录后就可以发现,有哪些包需要更新或者下载。而另一部分则是这些包文件本身。最后一部分是以上内容的签名。在元信息上有包文件的校验,而元信息本身则被一个非对称密钥签名。这个签名由apt的管理者签署,从而保证只有受到管理者认可的包会被客户安装,其他恶意插入的包都会被警告。

debian系统默认是没有图形界面的,也没有ssh操作界面,debian的基础系统甚至没有一个可启动的内核。基础系统中只包含了一个文件结构,和被简单配置能够自我管理的apt系统。最精简系统在基础系统之上,安装了内核和引导管理器,从而保证在某个系统上可自启动和自引导。debian的businesscard安装包包含了一个建立其他精简系统所需的所有工具的集合,而netinst安装包则增加了建立最小系统所需的镜像。两者的区别在于,businesscard必须联网以下载最小系统所需的所有安装包,而netinst可以从光盘上获得这些包。

当然,这离一个完整的系统还差很远。作为服务系统,必须安装ssh以便于远程管理。作为桌面系统,需要安装X,WM,还有其他应用程序。甚至,作为网络系统,基础的网络配置组件都是默认不完整安装的。你必须设定网络,设定源,然后更新列表,而后安装合适的程序。这一切对于初学者非常不友好,所以debian还有一种gnome标准安装包,在光盘上放了建立一个标准系统所需的所有包。你可以在不联网的情况下,自动建立起一个标准的桌面。

debian的特性是非常强的自我定制,虽然从根本上说,gentoo的定制方式才是极限。但是长期滚动编译对维护而言是一个非常大的挑战(debian的维护方式都会让很多公司感到不舒服)。debian可以很方便的直接定制一个特制化系统,而跳过编译过程。这对于自己需要一定程度定制的高级linux用户非常有吸引力。