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
命令来安装软件包。