20 以系统管理员身份管理 Ubuntu 或 Debian 软件包的 apt 命令

深入了解 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.