【linux】apt和apt-get的历史和区别

apt是一种用于Ubuntu和Debian Linux操作系统上安装软件包的工具,其全称为Advanced Package Tool。apt可自动处理应用程序及其所需的组件之间的依赖关系。它可以检查软件包是否已经安装并获取新安装的软件包,同时具有自动更新软件包功能。

使用apt安装软件包时,首先需要更新本地存储库列表,以确保您拥有最新版本的软件包:

sudo apt update

完成后,就可以使用以下命令来安装任何软件包及它们的所有依赖项:

sudo apt install packagename

在Ubuntu系统中,也可以使用apt-get和aptitude这两个命令,它们与apt非常类似。但是apt在交互方面更加友好,并且它比apt-get要快得多。

除了前面讲的apt updateapt install以外,apt常用的指令还包括:

(1)apt list:列出所有可用的软件包,包括已安装和可升级的软件包。
只列出已安装的包:

sudo apt list --installed

只列出可升级的包:

sudo apt list --upgradeable

(2)apt remove:删除软件包。如:

sudo apt remove nginx

要删除与包相关的包和配置文件,请使用 apt purge 命令,示例如下:

$ sudo apt purge nginx

(3)apt upgrade:升级当前系统上安装的所有软件包

要升级特定的安装包,请使用以下命令:

$ sudo apt install snapd --only-upgrade

(4)apt full-upgrade 全面系统升级(自动处理依赖项)

(5)apt search:搜索软件包
要搜索软件包,请运行 apt search 命令

$ sudo apt search phpmyadmin

(6)apt show:查看包信息

要查看有关软件包的信息,请运行 apt show 命令

$ sudo apt show nginx

(7) 自动删除包
apt 命令中的 autoremove 选项用于删除自动安装的包

$ sudo apt auotremove
$ sudo apt --purge autoremove

(8)列出包依赖
如果要列出包的依赖项,请运行 apt dependencies 命令

$ sudo apt depends phpmyadmin

要递归列出包依赖项,请运行 apt rdepends 命令

$ sudo apt rdepends docker

(9) 下载软件包而不安装
如果需要下载软件包而不安装,请执行 apt download 命令

$ sudo apt download phpmyadmin

(10) 保留和取消保留包
当一个包被标记为保留时,该包将不会升级

$ sudo apt-mark hold nginx
nginx set on hold.

要将 nginx 软件包标记为 unhold,请运行

$ sudo apt-mark unhold nginx
Canceled hold on nginx.

(11)清除 apt 缓存:将缓存在 /var/cache/apt/archives 中的软件包清除,以释放存储空间。

$ sudo apt clean

清除过时的软件包,请运行 aput autoclean 命令

$ sudo apt autoclean

(12)使用 apt edit-sources 命令,可以编辑 sources.list 文件

它将使用 vi 编辑器打开 /etc/apt/sources.list 文件,编辑文件,然后保存并退出文件。

(13)apt 命令历史记录存储在 /var/log/apt/history.log 文件下。

可以使用

 $ cat /var/log/apt/history.log 

 $ tail -n 30 /var/log/apt/history.log

来查看,后者仅仅查看最后30行。

回顾一下apt的历史有助于更好的理解apt和apt-get这两个指令:

apt 命令行实用程序于2014年推出,用于 Debian 发行版 deb 软件包安装。它最初在不稳定的Debian版本中使用,然后在Debian 8中成为标准。最初,它并没有引起用户的太多关注,因此他们继续使用旧的和熟悉的 apt-get 命令。但是,在 Ubuntu 16.04 发行后,apt 开始流行,以某种方式取代了apt-get。

上文中,与apt指令对应的apt-get指令如下:
安装包:apt-get install
删除包:apt-get remove
升级所有包:apt-get upgrade
更新所有软件包(自动处理依赖项):apt-get dis-upgrade
搜索包:apt-cache search
显示包信息:apt-cache-show
删除不必要的依赖:spt-get autoremove
删除具有相关配置的包:apt-get purge

可以看到,使用apt-get的时候,我们经常在apt-get和apt-cache之间来回切换,为了解决这个问题,人们引入了apt,apt=来自apt-get和apt-cache的常用功能选项,同时在apt-get的基础上进行升级,增加了软件安装进度条和apt list、apt edit-source指令。有了apt,你就一次性获得所有必需的工具。不会迷失在众多的命令选项中。apt的主要目标是提供一种用户愉悦的方式来高效处理软件包。

一般情况下,我们应该尽量使用apt,而不是apt-get。