众所周知,在linux操作系统下,利用apt-get来安装软件是非常方便的。只要一个sudo apt-get install 软件名;就可以轻易的解决软件的安装,最关键的是他可以解决其中存在的各种复杂的依赖关系,让你不用为此头疼,而在apt-get出现之前,利用dpkg或者更早之前的./configure;make;make install来安装软件真是无法想象,安装完软件A,提示你要安装软件B,好不容易安装完了,又提示要安装软件C。。。。各种纠结!所以说apt这个高级包管理工具极大的方便了广大的linux用户,更降低了linux用户的入门的门槛。好了,零零碎碎说了这么多废话,咱们回归正题。

为了搞清其中原理,我在网上折腾了半天,最后自己摸索了好久,终于有点头绪,每当执行命令进行软件的安装或着更新,或者软件源的更新时,apt会访问/etc/apt/sources.list内的地址,并在该网站中找到对应系统的包信息例如我的操作系统是ubuntu,网站是deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse网易的,那么当我们执行安装的命令时,他就会对应的访问http://mirrors.163.com/ubuntu/dists/lucid/main/binary-i386/的packages.gz,这个文件是服务器上软件包及其依赖关系的清单,并且用gzip压缩过了。apt-get update使用这个清单来确定能够获得哪些补充的软件包且他的内容会被保存在/var/lib/apt/lists内,通过访问这个lists确定该软件是否已安装,是否是最新版本,依赖关系是否满足,从而确定要更新内容,并进行更新,其安装过程主要是由dpkg来完成。

总体上来说apt是倾向于下载的一个管理工具。