APT
高级打包工具(英语:,缩写为)是Debian及其衍生的Linux软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。APT最早被设计成dpkg的前端,用来处理deb格式的软件包。现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM套件。
![]() | |
![]() apt-get 在安装前要求确认 | |
当前版本 |
|
---|---|
源代码库 | |
编程语言 | C++ |
操作系统 | 跨平台 |
平台 | Unix和类Unix操作系统 |
类型 | 软件包管理系统 |
许可协议 | GNU GPL |
网站 | wiki.debian.org/Apt wiki.debian.org/Teams/Apt |
构成
APT由以下的几个主要的命令构成:
apt-get
apt-cache
apt-file
在Debian系统中,APT建构于dpkg之上。
安装源
APT的软件安装来源在Debian安装的时候即可进行初始设置,除了Debian官方的网络安装来源之外,也可以使用Debian的安装光盘,甚至可以从非官方的安装来源中下载非官方的软件。APT同时也可以从一些安装来源中下载原代码软件,并且自行编译、安装。
依赖关系处理
APT会从每一个安装源下载一个软件包的列表。这个列表中有这个安装源所包含的可用软件包的信息。在可能的情况下,APT会安装最新的软件包,被安装的软件包所依赖的其他软件包也会被安装,建议安装的软件包则会在屏幕中显示但是不会被安装。不过在有一些情况下APT由于依赖关系不能安装软件包,例如:这个软件包和系统中的其他软件包冲突,或者这个软件包依赖的软件包在任何安装源中均不存在或没有要求的版本。在这种情况下,APT会返回错误信息并且中止,用户需要自行解决依赖问题。
软件包更新方式
Debian系统的一大特色即为「永不停机」,事实上,APT达到了这一点。在软件被升级的时候,它仍然可以继续服务。APT可以智能地从安装来源下载最新版本的软件并且安装,而无须在安装后重新启动电脑(除了更新Linux内核之外)。所有的配置都可以得到保留,升级软件不再是一个棘手的问题。
发行版升级
APT最使人称道的特点在于可以从一个Debian发行版升级到新的Debian发行版,例如从woody升级到sarge。APT可以升级绝大部分满足依赖关系的软件,但是也可能要删除,或添加新的软件以满足依赖关系。
前端
APT拥有不少的前端进程:
名称 | 运行界面 | 最新版本 |
---|---|---|
aptitude | 字符终端 | 0.2.15.9-2 |
Synaptic | 图形界面 | 0.75.13 |
GNOME 软件 | 图形界面 | 0.4.7-1.2 |
Wajig | 兼容 | 2.0.25 |
示例
搜索
在终端机里输入:
apt-cache search <package>
这样系统会列出与<package>名称相匹配的套件。
安装
在终端机里输入:
apt-get install <package>
这样系统会自动下载<package>以及所有的依存套件,同时进行套件的安装。
移除
在终端机里输入:
apt-get remove [--purge] <package>
这样系统会自动移除<package>以及任何依此存套件的其它套件。 --purge指明套件应被完全清除。
升级
在终端机里输入:
apt-get update
这样系统会自动由映射点更新套件列表,如果想安装最新套件,必须先运行一次。每次修改了 /etc/apt/sources.list后,也必须运行一次。
在终端机里输入:
apt-get upgrade [-u]
这样系统会自动将所有已经安装在系统内的套件升级为最新版本。如果一个套件改变了依存关系,而需要安装一个新的套件时,它将不会被升级,而是标识成hold。如果某个套件被设置hold标号,就不会被升级。
在终端机里输入:
apt-get dist-upgrade [-u]
和apt-get upgrade类似,dist-upgrade会安装和移除套件来满足依存关系,因此具有一定的危险性。
彩蛋
在终端输入apt-get -h会在末尾出现“This APT has super cow power(该APT有着超级牛力)。
在终端输入apt-get moo会在屏幕上显示一头牛,下方显示“Have you mooed today?”(您今天哞哞叫了吗?)。
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
与apt-get相似的一个叫做aptitude的进程在aptitude -h的末尾加上了“This aptitude does not have Super Cow Powers.(这个aptitude没有超级牛力)”。
在后面加上moo(即输入aptitude moo),并且分别加上选项“-v”,“-vv”,“-vvv”,“-vvvv”,“-vvvvv”,“-vvvvvv”(即输入aptitude -v moo;输入aptitude -vv moo;等等),则会有如下输出:
$ aptitude moo
There are no Easter Eggs in this program.(此软件没有复活节彩蛋程序。)
$ aptitude -v moo
There really are no Easter Eggs in this program.(此软件真的没有复活节彩蛋程序。)
$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?(我不是已经告诉你这个软件真的没有复活节彩蛋程序了吗?)
$ aptitude -vvv moo
Stop it!(停啦!)
$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?(好啦,好啦,如果我给你复活节彩蛋,你是不是就闪人?)
$ aptitude -vvvvv moo
All right, you win.(好啦,你赢了。)
/----\
-------/ \
/ \
/
|-----------------/ --------\
----------------------------------------------
$ aptitude -vvvvvv moo
What is it? It's an elephant being eaten by a snake, of course.(这是什么? 这当然是一只大象被一只蛇吞掉。)
而apt系列的另一个名为"apt-build"的软件包也具有相似的功能:
$ apt-build moo
(__) ~
(oo) /
_____\/___/
/ /\ / /
~ / * /
/ ___/
*----/\
/ \
/ /
~ ~
..."Have you danced today? Discow!"...
(意为:今天你跳舞了吗?迪斯可!)
软件编写者特地将Disco(迪斯可)一词改为"Discow",以体现"Cow"(奶牛)之意。