如何检查 Linux 中是否安装了软件包

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何使用各种命令行工具来检查特定软件包是否已安装在你的 Linux 系统上。你将探索 apt list --installed 命令,以获取已安装软件包的完整列表,以及如何使用 grep 过滤此列表。

此外,你将了解如何验证软件包的安装情况,并使用 dpkg -lapt policy 命令检索已安装软件包的详细信息,这将为你提供在基于 Debian 的 Linux 发行版上管理软件的必要技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/grep -.-> lab-558678{{"如何检查 Linux 中是否安装了软件包"}} linux/apt -.-> lab-558678{{"如何检查 Linux 中是否安装了软件包"}} end

使用 apt list --installed 检查软件包状态

在这一步中,你将学习如何使用 apt list --installed 命令来检查系统上安装了哪些软件包。

Linux 系统,尤其是像 Ubuntu(你在本实验中使用的系统)这样基于 Debian 的系统,使用软件包管理器来管理软件。apt 是为此目的而设计的强大命令行工具。

apt list 命令用于根据条件列出软件包。添加 --installed 选项可以过滤列表,只显示当前系统上已安装的软件包。

如果终端尚未打开,请打开它。记住,你可以在桌面左侧找到 Xfce Terminal 图标。

输入以下命令并按回车键:

apt list --installed

你将看到一长串软件包列表。该列表包含软件包名称、版本和架构信息。

Listing...
accountsservice/jammy-updates,now 0.6.55-0ubuntu12~22.04.5 amd64 [installed]
acl/jammy,now 2.3.1-1 amd64 [installed]
adduser/jammy,jammy,now 3.118ubuntu8 all [installed]
...
zlib1g/jammy-updates,now 1:1.2.11.dfsg-2ubuntu1.6 amd64 [installed]
zsh/jammy-updates,now 5.8.1-1ubuntu1.4 amd64 [installed]

此命令对于全面了解系统上安装的软件非常有用。由于列表可能很长,你可能需要向上滚动以查看输出的开头。

为了更方便地处理输出,你可以使用管道符号 (|) 将 apt list --installed 与其他命令结合使用。例如,要搜索特定的软件包,如 htop(你在上一个实验中安装的),可以使用 grep

apt list --installed | grep htop

此命令将 apt list --installed 的输出作为输入“管道”传递给 grep 命令,grep 命令会搜索包含“htop”的行。

你应该会看到类似以下的输出,确认 htop 已安装:

htop/jammy,now 3.0.5-1build2 amd64 [installed]

grepapt list --installed 结合使用是一种快速检查特定软件包是否存在于系统上的方法。

点击 Continue 进入下一步。

使用 dpkg -l 验证软件包安装情况

在这一步中,你将使用 dpkg 命令来验证软件包的安装状态。虽然 apt 是用于管理软件包(安装、移除、更新)的高级工具,但 dpkg 是处理 .deb 软件包文件实际安装和移除的底层工具。

dpkg -l 命令与 apt list --installed 类似,都会列出软件包,但它提供的信息略有不同,并且常用于更详细的状态检查。

打开你的终端。输入以下命令并按回车键:

dpkg -l

同样,你会看到一长串软件包列表。其输出格式与 apt list --installed 略有不同。

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/Trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||| Name                                Version                     Architecture Description
+++-===================================-===========================-============-===============================================================================
ii  accountsservice                     0.6.55-0ubuntu12~22.04.5    amd64        query and manipulate user account information
ii  acl                                 2.3.1-1                     amd64        Access control list utilities
ii  adduser                             3.118ubuntu8                all          add and remove users and groups
...
ii  zlib1g:amd64                        1:1.2.11.dfsg-2ubuntu1.6    amd64        compression library - runtime
ii  zsh                                 5.8.1-1ubuntu1.4            amd64        shell with lots of features

让我们来分析一下前几列的含义:

  • Desired:用户希望对软件包执行的操作(例如,i 表示安装,r 表示移除)。
  • Status:软件包的当前状态(例如,i 表示已安装,c 表示仅存在配置文件,p 表示已清除)。
  • Err?:表示软件包是否存在错误。

大多数行开头的 ii 表示“Install Ok, Installed”(安装正常,已安装)。这表明软件包已正确安装。

apt list 类似,你可以使用 grep 来查找特定的软件包。让我们再次检查 htop

dpkg -l | grep htop

你应该会看到类似这样的一行,确认 htop 的状态:

ii  htop                                3.0.5-1build2               amd64        interactive processes viewer

htop 所在行开头的 ii 确认它已正确安装。

虽然 apt list --installed 通常在获取简单列表时更快,但 dpkg -l 提供了更详细的状态标志,这对于排查安装问题很有帮助。

点击 Continue 继续。

使用 apt policy 检查软件包详细信息

在这一步中,你将使用 apt policy 命令来获取软件包的详细信息,包括其已安装版本以及不同软件源中可用的版本。此命令对于了解软件包的来源,以及如果你要升级或重新安装该软件包时会安装哪个版本特别有用。

打开你的终端。让我们使用 apt policy 来检查 htop 软件包。输入以下命令并按回车键:

apt policy htop

你会看到类似以下的输出:

htop:
  Installed: 3.0.5-1build2
  Candidate: 3.0.5-1build2
  Version table:
 *** 3.0.5-1build2 500
        500 http://archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
        100 /var/lib/dpkg/status

让我们来分析一下输出内容:

  • Installed:显示当前系统上已安装的 htop 版本。
  • Candidate:显示如果你运行 sudo apt install htopsudo apt upgrade htop 时将会安装的版本。在这种情况下,已安装版本也是候选版本。
  • Version table:列出了配置的软件源中该软件包的可用版本。
    • *** 开头的行表示已安装版本及其优先级。
    • 500 开头的行显示了来自 Ubuntu jammy/universe 软件源的可用版本及其优先级(500)。
    • 100 开头的行指的是来自 dpkg 状态文件的已安装版本。

这些数字(如 500 和 100)代表软件包源的优先级。在安装或升级时,会优先选择优先级较高的软件源。

apt policy 是一个强大的命令,可用于调试软件包问题、理解为什么安装了特定版本的软件包,或者查看配置的软件源中可用的版本。

你也可以在不指定软件包名称的情况下运行 apt policy,以查看所有软件包的策略,其中包括你配置的软件源及其优先级的信息。不过,该输出会非常长。

你现在已经学习了三种不同的方法来检查已安装软件包的状态和详细信息:apt list --installeddpkg -lapt policy。这些命令是在基于 Debian 的 Linux 系统上管理软件的重要工具。

点击 Continue 完成本实验。

总结

在本实验中,你学习了如何使用三种不同的命令行工具来检查 Linux 系统上是否安装了某个软件包。你首先使用 apt list --installed 来获取所有已安装软件包的完整列表,并学习了如何使用 grep 过滤此输出以查找特定的软件包。

然后,你探索了 dpkg -l,这是另一个用于管理 Debian 软件包的命令行工具,用于验证软件包的安装状态并查看其详细信息。最后,你使用 apt policy 来检查软件包的安装细节,包括其版本和来源,从而更深入地了解系统上软件包的管理方式。