深入了解 APT:Debian/Ubuntu 系统的包管理利器
APT,全称为 Advanced Package Tool,是一款在基于 Debian 和 Ubuntu 的 Linux 发行版中,用于管理软件包的强大命令行工具。它与 apt-get
等工具并列,是系统管理员手中重要的包管理器之一。APT 允许用户轻松地安装、更新、修改或卸载各种软件包,而无需进行繁琐的源代码编译。其功能远不止于此,下一节我们将详细介绍其在包管理方面的更多应用。
使用 APT 命令的基本语法结构如下:
$ apt [命令] [软件包名称]
值得注意的是,由于 APT 的许多子命令需要系统级的权限才能执行更改,通常需要结合 sudo
命令使用。
接下来,我们将逐一介绍 APT 常用子命令及其具体用法。
更新软件包数据库
为了确保 APT 能够准确识别系统中可用的软件包,它依赖于一个包含所有可安装软件包信息的存储库数据库。因此,在安装任何软件包之前,务必先更新此数据库。更新后的数据库能够提供软件包的详细信息,包括版本号、体系结构以及远程存储位置。
更新存储库数据库的操作十分简单,只需执行以下命令:
$ sudo apt update
例如:
[email protected]:~$ sudo apt update 获取:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] 命中:2 http://azure.archive.ubuntu.com/ubuntu focal InRelease 获取:3 http://azure.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] 获取:4 http://azure.archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB] 获取:5 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [1086 kB] 获取:6 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [841 kB] 已获取 2255 kB,用时 1 秒 (2677 kB/s) 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 有 14 个软件包可以升级。请运行 'apt list --upgradable' 来查看它们。 [email protected]:~$
升级已安装的软件包
要将系统中已安装的软件包升级到最新版本,可以使用以下命令:
$ sudo apt upgrade
使用 upgrade
命令时,APT 会安装所需的软件包,以满足依赖关系,但不会删除任何已安装的软件包。如果软件包的升级过程需要删除已安装的软件包,则该软件包将不会被升级。
例如:
[email protected]:~$ sudo apt update 获取:1 http://security.ubuntu.com/ubuntu focal-security InRelease [114 kB] 命中:2 http://azure.archive.ubuntu.com/ubuntu focal InRelease 获取:3 http://azure.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] 获取:4 http://azure.archive.ubuntu.com/ubuntu focal-backports InRelease [101 kB] 获取:5 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [1086 kB] 获取:6 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [841 kB] 已获取 2255 kB,用时 1 秒 (2677 kB/s) 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 有 14 个软件包可以升级。请运行 'apt list --upgradable' 来查看它们。 [email protected]:~$ sudo apt upgrade 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 正在计算升级... 完成 下列软件包将被升级: apt apt-utils libapt-pkg6.0 libpython3.8 libpython3.8-minimal libpython3.8-stdlib libuv1 linux-base linux-base-sgx open-vm-tools python3-distupgrade python3.8 python3.8-minimal ubuntu-release-upgrader-core 升级了 14 个,新安装了 0 个,要卸载 0 个,有 0 个未升级。 需要下载 9485 kB 的归档。 解包后,会额外使用 603 kB 的磁盘空间。 您要继续吗? [Y/n] Y 获取:1 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 libapt-pkg6.0 amd64 2.0.6 [835 kB] 获取:2 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 apt amd64 2.0.6 [1296 kB] 获取:3 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 apt-utils amd64 2.0.6 [216 kB] 获取:4 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 libpython3.8 amd64 3.8.10-0ubuntu1~20.04 [1625 kB] 获取:5 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 python3.8 amd64 3.8.10-0ubuntu1~20.04 [387 kB] 获取:6 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 libpython3.8-stdlib amd64 3.8.10-0ubuntu1~20.04 [1675 kB] 获取:7 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 python3.8-minimal amd64 3.8.10-0ubuntu1~20.04 [1898 kB] 获取:8 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 libpython3.8-minimal amd64 3.8.10-0ubuntu1~20.04 [717 kB] 获取:9 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 libuv1 amd64 1.34.2-1ubuntu1.3 [80.8 kB] 获取:10 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 ubuntu-release-upgrader-core all 1:20.04.35 [23.9 kB] 获取:11 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 python3-distupgrade all 1:20.04.35 [104 kB] 获取:12 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-base all 4.5ubuntu3.6 [17.8 kB] 获取:13 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 linux-base-sgx all 4.5ubuntu3.6 [4660 B] 获取:14 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 open-vm-tools amd64 2:11.2.5-2ubuntu1~ubuntu20.04.1 [604 kB] 已获取 9485 kB,用时 0 秒 (54.4 MB/s) 正在预配置软件包 ... (正在读取数据库 ... 当前已安装 59511 个文件和目录。) 准备解包 .../libapt-pkg6.0_2.0.6_amd64.deb ... 正在解包 libapt-pkg6.0:amd64 (2.0.6) 并覆盖 (2.0.5) ... 正在设置 libapt-pkg6.0:amd64 (2.0.6) ... (正在读取数据库 ... 当前已安装 59511 个文件和目录。) 准备解包 .../archives/apt_2.0.6_amd64.deb ... 正在解包 apt (2.0.6) 并覆盖 (2.0.5) ... 正在设置 apt (2.0.6) ... (正在读取数据库 ... 当前已安装 59511 个文件和目录。) 准备解包 .../00-apt-utils_2.0.6_amd64.deb ... 正在解包 apt-utils (2.0.6) 并覆盖 (2.0.5) ... 准备解包 .../01-libpython3.8_3.8.10-0ubuntu1~20.04_amd64.deb ... 正在解包 libpython3.8:amd64 (3.8.10-0ubuntu1~20.04) 并覆盖 (3.8.5-1~20.04.3) ... 准备解包 .../02-python3.8_3.8.10-0ubuntu1~20.04_amd64.deb ... 正在解包 python3.8 (3.8.10-0ubuntu1~20.04) 并覆盖 (3.8.5-1~20.04.3) ... 准备解包 .../03-libpython3.8-stdlib_3.8.10-0ubuntu1~20.04_amd64.deb ... 正在解包 libpython3.8-stdlib:amd64 (3.8.10-0ubuntu1~20.04) 并覆盖 (3.8.5-1~20.04.3) ... 准备解包 .../04-python3.8-minimal_3.8.10-0ubuntu1~20.04_amd64.deb ... 正在解包 python3.8-minimal (3.8.10-0ubuntu1~20.04) 并覆盖 (3.8.5-1~20.04.3) ... 准备解包 .../05-libpython3.8-minimal_3.8.10-0ubuntu1~20.04_amd64.deb ... 正在解包 libpython3.8-minimal:amd64 (3.8.10-0ubuntu1~20.04) 并覆盖 (3.8.5-1~20.04.3) ... 准备解包 .../06-libuv1_1.34.2-1ubuntu1.3_amd64.deb ... 正在解包 libuv1:amd64 (1.34.2-1ubuntu1.3) 并覆盖 (1.34.2-1ubuntu1.1) ... 准备解包 .../07-ubuntu-release-upgrader-core_1%3a20.04.35_all.deb ... 正在解包 ubuntu-release-upgrader-core (1:20.04.35) 并覆盖 (1:20.04.33) ... 准备解包 .../08-python3-distupgrade_1%3a20.04.35_all.deb ... 正在解包 python3-distupgrade (1:20.04.35) 并覆盖 (1:20.04.33) ... 准备解包 .../09-linux-base_4.5ubuntu3.6_all.deb ... 正在解包 linux-base (4.5ubuntu3.6) 并覆盖 (4.5ubuntu3.1) ... 准备解包 .../10-linux-base-sgx_4.5ubuntu3.6_all.deb ... 正在解包 linux-base-sgx (4.5ubuntu3.6) 并覆盖 (4.5ubuntu3.1) ... 准备解包 .../11-open-vm-tools_2%3a11.2.5-2ubuntu1~ubuntu20.04.1_amd64.deb ... 正在解包 open-vm-tools (2:11.2.5-2ubuntu1~ubuntu20.04.1) 并覆盖 (2:11.0.5-4) ... 正在设置 libpython3.8-minimal:amd64 (3.8.10-0ubuntu1~20.04) ... 正在设置 apt-utils (2.0.6) ... 正在设置 linux-base (4.5ubuntu3.6) ... 正在设置 python3-distupgrade (1:20.04.35) ... 正在设置 libuv1:amd64 (1.34.2-1ubuntu1.3) ... 正在设置 linux-base-sgx (4.5ubuntu3.6) ... 正在设置 ubuntu-release-upgrader-core (1:20.04.35) ... 正在设置 python3.8-minimal (3.8.10-0ubuntu1~20.04) ... 正在设置 open-vm-tools (2:11.2.5-2ubuntu1~ubuntu20.04.1) ... 正在安装配置文件 /etc/vmware-tools/tools.conf.example 的新版本 ... 正在安装配置文件 /etc/vmware-tools/vgauth.conf 的新版本 ... 正在设置 libpython3.8-stdlib:amd64 (3.8.10-0ubuntu1~20.04) ... 正在设置 python3.8 (3.8.10-0ubuntu1~20.04) ... 正在设置 libpython3.8:amd64 (3.8.10-0ubuntu1~20.04) ... 正在处理 libc-bin (2.31-0ubuntu9.2) 的触发器 ... 正在处理 systemd (245.4-4ubuntu3.7) 的触发器 ... 正在处理 man-db (2.9.1-1) 的触发器 ... 正在处理 mime-support (3.64ubuntu1) 的触发器 ... [email protected]:~$
为确保升级过程顺利进行,并获取最新的软件包,建议在升级之前先执行 sudo apt update
。 您也可以将这两个命令合并为一行执行:
$ sudo apt update && sudo apt upgrade -y
全面升级包
APT 还提供一个用于全面升级系统的命令 full-upgrade
。与 upgrade
不同的是,full-upgrade
在升级过程中可能会删除当前安装的软件包,以满足系统升级的需求。因此,在使用此命令时请务必谨慎,在大多数情况下,建议使用 upgrade
命令替代。
$ sudo apt full-upgrade
安装单个软件包
要安装新的软件包,可以使用以下命令语法:
$ sudo apt install [软件包名称]
例如:
[email protected]:~$ sudo apt install unzip 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 建议安装的软件包: zip 下列【新】软件包将被安装: unzip 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 14 个软件包未升级。 需要下载 169 kB 的归档。 解包后,会额外使用 593 kB 的磁盘空间。 获取:1 http://azure.archive.ubuntu.com/ubuntu focal/main amd64 unzip amd64 6.0-25ubuntu1 [169 kB] 已获取 169 kB,用时 0 秒 (4040 kB/s) 正在选中未被选中的软件包 unzip。 (正在读取数据库 ... 当前已安装 59511 个文件和目录。) 准备解包 .../unzip_6.0-25ubuntu1_amd64.deb ... 正在解包 unzip (6.0-25ubuntu1) ... 正在设置 unzip (6.0-25ubuntu1) ... 正在处理 mime-support (3.64ubuntu1) 的触发器 ... 正在处理 man-db (2.9.1-1) 的触发器 ... [email protected]:~$
安装多个软件包
APT 允许一次性安装多个软件包,其语法与安装单个软件包类似:
$ sudo apt install [软件包名称1] [软件包名称2] ... [软件包名称n]
例如:
[email protected]:~$ sudo apt install zip unzip 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 下列【新】软件包将被安装: unzip zip 升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 0 个软件包未升级。 需要下载 336 kB 的归档。 解包后,会额外使用 1231 kB 的磁盘空间。 获取:1 http://azure.archive.ubuntu.com/ubuntu focal/main amd64 unzip amd64 6.0-25ubuntu1 [169 kB] 获取:2 http://azure.archive.ubuntu.com/ubuntu focal/main amd64 zip amd64 3.0-11build1 [167 kB] 已获取 336 kB,用时 0 秒 (7749 kB/s) 正在选中未被选中的软件包 unzip。 (正在读取数据库 ... 当前已安装 59527 个文件和目录。) 准备解包 .../unzip_6.0-25ubuntu1_amd64.deb ... 正在解包 unzip (6.0-25ubuntu1) ... 正在选中未被选中的软件包 zip。 准备解包 .../zip_3.0-11build1_amd64.deb ... 正在解包 zip (3.0-11build1) ... 正在设置 unzip (6.0-25ubuntu1) ... 正在设置 zip (3.0-11build1) ... 正在处理 man-db (2.9.1-1) 的触发器 ... 正在处理 mime-support (3.64ubuntu1) 的触发器 ... [email protected]:~$
如果指定的软件包之一已经安装在系统中,APT 将会检查存储库中是否有更新的版本。如有更新,则升级该软件包;否则,保持现有版本不变。
安装特定版本的软件包
在某些情况下,可能需要安装特定版本的软件包,特别是在企业环境中。APT 允许指定要安装的软件包版本,前提是该版本在存储库中可用。其语法如下:
$ sudo apt install [软件包名称]=[版本号]
例如:
[email protected]:~$ sudo apt install unzip=6.0-25ubuntu1 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 下列【新】软件包将被安装: unzip 升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 0 个软件包未升级。 需要下载 169 kB 的归档。 解包后,会额外使用 593 kB 的磁盘空间。 获取:1 http://azure.archive.ubuntu.com/ubuntu focal/main amd64 unzip amd64 6.0-25ubuntu1 [169 kB] 已获取 169 kB,用时 0 秒 (2767 kB/s) 正在选中未被选中的软件包 unzip。 (正在读取数据库 ... 当前已安装 59541 个文件和目录。) 准备解包 .../unzip_6.0-25ubuntu1_amd64.deb ... 正在解包 unzip (6.0-25ubuntu1) ... 正在设置 unzip (6.0-25ubuntu1) ... 正在处理 mime-support (3.64ubuntu1) 的触发器 ... 正在处理 man-db (2.9.1-1) 的触发器 ... [email protected]:~$
删除软件包
与安装软件包类似,可以使用 APT 从系统中删除软件包,其命令如下:
$ sudo apt remove [软件包名称]
例如:
[email protected]:~$ sudo apt remove unzip 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 下列软件包将被【卸载】: unzip 升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 14 个软件包未升级。 卸载后,将会释放 593 kB 的磁盘空间。 您要继续吗? [Y/n] Y (正在读取数据库 ... 当前已安装 59529 个文件和目录。) 正在卸载 unzip (6.0-25ubuntu1) ... 正在处理 man-db (2.9.1-1) 的触发器 ... 正在处理 mime-support (3.64ubuntu1) 的触发器 ... [email protected]:~$
清除软件包
与 remove
命令类似,purge
命令也用于删除软件包。然而,remove
命令仅仅删除软件包的二进制文件,而保留其配置文件。而 purge
命令则会彻底删除软件包的所有相关内容,包括二进制文件和配置文件。如果您计划重新安装应用程序,保留配置文件可以方便您再次使用相同的配置。
使用以下命令来清除软件包:
$ sudo apt purge [软件包名称]
例如:
[email protected]:~$ sudo apt purge unzip 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 下列软件包将被【卸载】: unzip* 升级了 0 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 14 个软件包未升级。 卸载后,将会释放 593 kB 的磁盘空间。 您要继续吗? [Y/n] Y (正在读取数据库 ... 当前已安装 59529 个文件和目录。) 正在卸载 unzip (6.0-25ubuntu1) ... 正在处理 man-db (2.9.1-1) 的触发器 ... 正在处理 mime-support (3.64ubuntu1) 的触发器 ... (正在读取数据库 ... 当前已安装 59511 个文件和目录。) 正在清除软件包 unzip (6.0-25ubuntu1) 的配置文件 ... [email protected]:~$
搜索软件包
APT 不仅仅是一款用于安装和删除软件包的工具,它还可以使用 search
命令在存储库中搜索所需的软件包:
$ apt search [搜索关键词]
例如:
[email protected]:~$ apt search netstat 正在排序... 完成 正在全文搜索... 完成 bwm-ng/focal 0.6.2-1 amd64 小巧且简单的基于控制台的带宽监控器 gnome-nettool/focal 3.8.1-3 amd64 GNOME 的网络信息工具 golang-github-aelsabbahy-gonetstat-dev/focal 0.0~git20160428.0.edf89f7-3 all Go 中的 Netstat 实现 golang-github-mwitkow-go-conntrack-dev/focal 0.0~git20190716.2f06839-1 all 用于 net.Conn 跟踪的 Go 中间件 libparse-netstat-perl/focal 0.14-1 all 用于解析 "netstat" 命令输出的模块 net-tools/focal 1.60+git20180626.aebd88e-1ubuntu1 amd64 NET-3 网络工具包 netstat-nat/focal 1.4.10-3build1 amd64 显示 NAT 连接的工具 nicstat/focal 1.95-1build1 amd64 打印网络流量统计信息 qnetstatview/focal 1.5.6-1 amd64 显示所有 TCP 和 UDP 端点的详细列表 unhide/focal 20130526-4 amd64 用于查找隐藏进程和端口的取证工具 whichman/focal 2.4-9 amd64 容错搜索工具:whichman、ftff、ftwhich [email protected]:~$
查看软件包信息
要获取软件包的详细信息,无论是已安装还是即将安装的,可以使用 show
命令:
$ apt show [软件包名称]
例如:
[email protected]:~$ apt show firefox 软件包:firefox 版本:90.0+build1-0ubuntu0.20.04.1 优先级:optional 区段:web 来源:Ubuntu 维护者:Ubuntu Mozilla Team <[email protected]> 错误报告:https://bugs.launchpad.net/ubuntu/+filebug 安装大小:226 MB 提供:gnome-www-browser, iceweasel, www-browser 依赖:lsb-release, libatk1.0-0 (>= 1.12.4), libc6 (>= 2.30), libcairo-gobject2 (>= 1.10.0), libcairo2 (>= 1.10.0), libdbus-1-3 (>= 1.9.14), libdbus-glib-1-2 (>= 0.78), libfontconfig1 (>= 2.12.6), libfreetype6 (>= 2.10.1), libgcc-s1 (>= 3.3), libgdk-pixbuf2.0-0 (>= 2.22.0), libglib2.0-0 (>= 2.42), libgtk-3-0 (>= 3.14), libharfbuzz0b (>= 0.6.0), libpango-1.0-0 (>= 1.14.0), libpangocairo-1.0-0 (>= 1.14.0), libpangoft2-1.0-0 (>= 1.14.0), libstdc++6 (>= 9), libx11-6, libx11-xcb1 (>= 2:1.6.9), libxcb-shm0, libxcb1, libxcomposite1 (>= 1:0.4.5), libxcursor1 (>> 1.1.2), libxdamage1 (>= 1:1.1), libxext6, libxfixes3, libxi6, libxrender1, libxt6 推荐:xul-ext-ubufox, libcanberra0, libdbusmenu-glib4, libdbusmenu-gtk3-4 建议:fonts-lyx 替代:kubuntu-firefox-installer 任务:ubuntu-desktop-minimal, ubuntu-desktop, kubuntu-desktop, kubuntu-full, xubuntu-desktop, lubuntu-desktop, ubuntustudio-desktop, ubuntukylin-desktop, ubuntu-mate-core, ubuntu-mate-desktop, ubuntu-budgie-desktop Xul-Appid:{ec8030f7-c20a-464f-9b0e-13a3a9e97384} 下载大小:57.0 MB APT-Sources:http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages 描述:Mozilla 出品的安全便捷的网页浏览器 Firefox 提供安全、便捷的网页浏览体验。它拥有熟悉的用户界面、增强的安全功能(包括防止在线身份盗窃的保护)以及集成的搜索功能,可让您充分利用网络。 N: 还有 1 条额外的记录。请使用 '-a' 开关来查看它 [email protected]:~$
列出已安装的软件包
在某些情况下,我们需要列出系统中已安装的软件包,APT 允许您使用以下命令获取此列表:
$ apt list --installed
列出所有软件包
要列出系统可用的所有软件包,请使用带有 --all-versions
关键字的 list
命令:
$ apt list --all-versions
列出可升级的软件包
及时更新软件包是十分重要的,因为新版本通常会包含改进的功能、错误修复以及安全漏洞补丁。APT 使您能够轻松地使用本文前面介绍的 upgrade
命令来更新 Debian/Ubuntu 系统。要列出系统中所有可以升级的软件包,请执行以下命令:
$ apt list --upgradable
例如:
[email protected]:~$ apt list --upgradable 正在列表... 完成 apt-utils/focal-updates 2.0.6 amd64 [可升级版本:2.0.5] apt/focal-updates 2.0.6 amd64 [可升级版本:2.0.5] libapt-pkg6.0/focal-updates 2.0.6 amd64 [可升级版本:2.0.5] libpython3.8-minimal/focal-updates,focal-security 3.8.10-0ubuntu1~20.04 amd64 [可升级版本:3.8.5-1~20.04.3] libpython3.8-stdlib/focal-updates,focal-security 3.8.10-0ubuntu1~20.04 amd64 [可升级版本:3.8.5-1~20.04.3] libpython3.8/focal-updates,focal-security 3.8.10-0ubuntu1~20.04 amd64 [可升级版本:3.8.5-1~20.04.3] libuv1/focal-updates,focal-security 1.34.2-1ubuntu1.3 amd64 [可升级版本:1.34.2-1ubuntu1.1] linux-base-sgx/focal-updates 4.5ubuntu3.6 all [可升级版本:4.5ubuntu3.1] linux-base/focal-updates 4.5ubuntu3.6 all [可升级版本:4.5ubuntu3.1] open-vm-tools/focal-updates 2:11.2.5-2ubuntu1~ubuntu20.04.1 amd64 [可升级版本:2:11.0.5-4] python3-distupgrade/focal-updates 1:20.04.35 all [可升级版本:1:20.04.33] python3.8-minimal/focal-updates,focal-security 3.8.10-0ubuntu1~20.04 amd64 [可升级版本:3.8.5-1~20.04.3] python3.8/focal-updates,focal-security 3.8.10-0ubuntu1~20.04 amd64 [可升级版本:3.8.5-1~20.04.3] ubuntu-release-upgrader-core/focal-updates 1:20.04.35 all [可升级版本:1:20.04.33] abhi[email protected]:~$
清理未使用的软件包
随着系统使用时间的推移,可能会出现某些软件包不再被需要的情况。这些软件包通常是作为其他软件包的依赖项安装的,尽管依赖项已被删除,这些软件包可能仍然保留在系统中。为了清理这些不再使用的软件包并释放磁盘空间,可以使用以下命令:
$ sudo apt autoremove
例如:
[email protected]:~$ sudo apt autoremove 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未升级。 [email protected]:~$
由于我的系统中没有剩余的未使用的软件包,所以输出结果显示没有变化。
检查软件包依赖
一个软件包可能依赖于一个或多个其他软件包,这些依赖软件包必须在系统中安装才能使该软件包正常工作。APT 可以自动安装软件包的依赖项。如果您想检查特定软件包的依赖关系,请使用以下命令:
$ apt depends [软件包名称]
例如:
[email protected]:~$ apt depends zip zip 依赖:libbz2-1.0 依赖:libc6 (>= 2.14) 推荐:unzip [email protected]:~$
重新安装软件包
如果某个软件包损坏,或者需要重新安装以确保所有文件都正确,可以使用以下命令重新安装软件包,而无需先将其删除:
$ sudo apt reinstall [软件包名称]
例如:
[email protected]:~$ sudo apt reinstall unzip 正在读取软件包列表... 完成 正在构建依赖树 正在读取状态信息... 完成 升级了 0 个软件包,新安装了 0 个软件包,要重新安装 1 个软件包,有 0 个软件包未升级。 需要下载 169 kB 的归档。 解包后,不会额外使用磁盘空间。 获取:1 http://azure.archive.