apt的主要工作是解决软件包之间的依赖关系,apt并不执行包的安装与删除等操作,而是将这些任务交给dpkg来做。


APT的出现

起初,在Linux上安装软件是通过编译源码来实现的。

Debian出现后,认为系统中应该有一种机制来管理安装在计算机上的软件包,这套系统就是“dpkg(debian packages)”,“dpkg”用于管理以".deb"结尾的包文件。不久之后红帽也建立了自己的包管理系统“rpm”。至此,人们可以通过一个dpkg命令来安装编译好的软件包。

但是由于软件的复杂性,一个软件包需要依赖很多其他的软件包,Debian为了解决包与包依赖关系的问题,发明了APT(advanced packaging tool)。apt的主要工作是解决软件包之间的依赖关系,apt并不执行包的安装与删除等操作,而是将这些任务交给dpkg来做。

APT配置与文件

apt的配置文件大多在/etc/apt文件夹下。

apt-config是APT配置查询程序。“apt-config dump”显示所有的配置信息。

与APT有关的文件如下所示:

  • /etc/apt/sources.list: 存储了软件源站点列表。
  • /etc/apt/sources.list.d/: 附加的软件源列表。
  • /etc/apt/apt.conf: APT配置文件。
  • /etc/apt/apt.conf.d/: APT配置文件片段。
  • /etc/apt/preferences: 版本配置文件。例如我们要从一个独立的源中获取一个特定的包,就可以在这里配置。
  • /var/cache/apt/archives: 检索到的包文件的存储区
  • /var/cache/apt/archives/partial/: 用于存储传输过程中的包文件
  • /var/lib/apt/lists/: 存储在sources.list中的软件源站点中的每个包资源的状态信息。
  • /var/lib/apt/lists/partial/: 用于存储传输过程中的状态信息。

APT常用命令

apt-get update

该命令首先从/etc/apt/sources.list中获取所有的软件源站点,然后访问站点的列表文件,如果有更新,则将新的包信息下载到/var/lib/apt/lists/中。

apt-get install <package_name>

根据本地软件包列表信息,从指定源下载软件包,将下载的软件包存放到/var/cache/apt/archives/下。然后安装该软件包。

apt-get --reinstall install <package_name>

重新安装软件包

apt-get -f install <package_name>

修复软件包的依赖关系

apt-get upgrade

更新所有已安装的软件包

apt-get dist-upgrade

将系统升级到新版本

apt-get remove <package_name>

删除软件包及关联的软件包,但保留这些软件包的配置信息。

apt-get --purge remove <package_name>

删除软件包及关联的软件包,并且删除这些软件包的配置信息。

apt-get clean

由于apt-get install 是先将软件包下载到/var/cache/apt/archives/下才执行安装,所以随着系统使用时间的延长,安装的软件包越来越多,导致/var/cache/apt/archives/文件夹越来越占用资源,所以需要定期清理该文件夹的内容。apt-get clean命令会将除了lock锁文件和partial目录下的所有软件包删除。

apt-get autoclean

该命令会保留最新版本的软件包,而将过时版本的软件包删除。

apt-cache search <package_name>

在本地软件包信息列表中查找指定的包。

apt-cache show <package_name>

获取包的相关信息,例如大小、版本、说明等。

apt-cache depends <package_name>

查看包的依赖项

apt-cache rdepends <package_name>

查看哪些包的依赖于该包

什么是PPA

PPA是“Person Package Archives”,即“个人软件包档案”。它是Ubuntu lanuchpad提供的一项服务。它允许个人用户上传软件源代码,通过lanchpad进行编译并发布为二进制软件包,这些包可作为APT源供其他用户下载或更新。

可以通过以下命令将PPA添加到源中:

add-apt-respository ppa:<ppa_name>

然后使用

apt-get update

命令将软件包的信息从远程源站点更新到本地,最后使用

apt-get install

命令来安装软件包。