Debian linux的包管理系统称为”Advanced Package Tools” (APT),是一组可帮你自动取得、管理Debian包的工具的工具的组合。

Debian包

每个Debian都包含了程序、配置文件、说明文件以及一个描述包依赖关系的文件。Debian包文件名由三部分组成,分别是:

包名:名称一般简短,但具有说明性。多个单词之间一般以连字符(-)隔开。

版本编号:每个包都有一个版本编号,代表软件版本。版本编号的格式是随所含软件而定的。版本编号与包名直间以下划线(_)隔开。

扩展名:所有Debian包文件的默认扩展名都是.deb。

例如,下面的Debian包名称依次拆解为:包名、软件版本、修订版次、扩展名。

package_1.0-2.deb

Debian包管理工具

最基本的Debian包管理工具是dpkg,它直接操作.deb包文件,可以自动安装,维护软件包。另一个可代替dpkg的工具是apt-get,它的操作对象是包名,而非包文件本身。apt-get会自动从预定的来源(CD_ROM或FTP站点)取得所指定的包并完成后续的安装工作。这两种工具都是用于命令行环境。

dselect提供一个互动菜单,让管理者可以从一系列可用包中挑选,一次安装多个包。alien可用来处理非Debian格式的包,像是Red Hat的RPM格式。

dpkg

语法

dpkg [options] action

说明

dpkg是Debian包管理系统的基本工具,它依据指定的action作为主要操作模式,并参考选择性的option来修正action的行为。

dpkg会维护/var/lib/dpkg目录下的信息,此目录有两个值得注意的文件:

available

列出所有可用的包

status

记录包的属性,像是否已经安装过或是标识成要移除等。

dkpg、dselect、apt-get会自动修改这些文件,一般不需手动修改。

常用选项:

选项

说明

-E

要求dpkg不要覆盖先前安装的同版本包

-G

要求dpkg不要以旧版本或同版本包覆盖已安装包

-R(同--recursive)

递归处理指定子目录下所有包文件。此选项必须搭配-i、—install、--unpack之类的选项

--configure package

设定一个尚未安装的包。这需要事先准备好几个配置文件

-i package_file

(同 --install package_file)安装package_file所含的包。安装程序会自动备份旧文件、安装新文件、将配置文件放到适当位置

-l [pattern]

(同 --list [pattern])在已安装包中,找出名称与pattern匹配的包并显示他们的信息

-L package

(同 --listfiles package)列出会安装package的文件

--print-avail package

在/var/lib/dpkg/avaliable文件里找出关于package的详细信息

--purge package

移除所安装的package文件

-r package

(同 --remove package)移除所安装的package文件,只保留配置文件

-s package

(同 --status package)报告package的状态

-S search_pattern

(同 --search search_pattern)从已安装包中,找出文件名匹配search_pattern模式者

--unpack package_file

只解开package_file,不安装其中所含的包

范例1,使用dpkg -i安装一个放在当前目录下的文件:

dpkg –i ./hdparm_3.3-3.deb

范例2,升级一个包与安装一个包的步骤几乎一样,唯一的差别是使用dpkg时,必须加上-G选项,要求dpkg只有在指定的包比已安装的包更新的情况下才回进行升级动作。

范例3,使用dpkg -r或dpkg --purge移除一个包:

dpkg --purge elvis

范例4,使用dpkg -S找出含有特定文件的包:

#dpkg –S apt-get
apt: /usr/share/man/man8/apt-get.8.gz
apt: /usr/bin/apt-get

在此例中,apt-get文件封装在apt包中。

范例5,使用dpkg -s查询包的状态信息,像是版本、内容、依赖性、整体性、是否已安装在系统上:

dpkg –s apt

范例6,使用dpkg -L列出某包所含的所有文件:

dpkg –L apt

范例7,使用dpkg -l列出已安装的包。如果你没有指定一个名称模式,所有的包都会列出来:

dpkg –l xdm

范例8,使用dpkg -S查出特定文件所属的包:

dpkg –S /usr/bin/nl


apt-get

语法

apt-get [options] [command] [package_name …]

说明

apt-get是APT管理系统的一部分。不同与dpkg,apt-get并非直接处理.deb文件,它的处理对象是“包名”。apt-get将包的所有信息集中在一个数据库中,并自动维护该数据库,借此,apt-get可以自动升级包版本并在新版本的包发行时自动维护其依赖性。

常用选项:

选项

说明

-d

只下载文件,不进行安装

-s

只模拟改变包的步骤,但不实际更改系统

-y

自动对所有问题回答yes。这可让安装或移除包的过程更加顺畅,避免因为等待用户的相应而造成停顿

常用命令:

命令

说明

dist-upgrade

这个命令用于自动升级到新版Debian Linux

install

用于安装一个或多个包

remove

用于移除指定的包

update

用apt-get update可以取得当前可用包的列表

upgrade

将系统的完整包集合安全地升级到当前最新版本。这个命令采取保守作风,不会处理会破坏当前配置的升级动作,也不会移除包

apt-get使用/apt/sources.lst文件来决定应该到何处取得包。

范例,使用apt-get移除elvis包:

apt-get remove elvis

在此例中,用户必须回答y才能继续完成动作。可以使用-y选项来避免此类交互过程。


dselect

语法

dselect

说明

dselect其实只是dpkg的前台工具而已,它提供一个菜单画面与用户交互。实际的处理过程其实仍是交由dpkg来完成。