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来完成。