如何检查 Linux 中是否安装了某个库

LinuxLinuxBeginner
立即练习

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

简介

在这个实验中,你将学习如何检查特定库是否已安装在你的 Linux 系统上。你将探索不同的方法来实现这一目标,首先使用 ldconfig -p 列出可用的共享库,以了解系统中存在哪些库及其位置。

接下来,你将使用 dpkg -l 命令来确定与特定库关联的软件包,从而深入了解系统的软件包管理器是如何管理库的。最后,你将学习如何直接检查 /usr/lib 等常见的库目录,以手动验证库文件是否存在。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/InputandOutputRedirectionGroup(["Input and Output Redirection"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/less("File Paging") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/InputandOutputRedirectionGroup -.-> linux/pipeline("Data Piping") linux/PackagesandSoftwaresGroup -.-> linux/software("Linux Software") subgraph Lab Skills linux/ls -.-> lab-558728{{"如何检查 Linux 中是否安装了某个库"}} linux/less -.-> lab-558728{{"如何检查 Linux 中是否安装了某个库"}} linux/cd -.-> lab-558728{{"如何检查 Linux 中是否安装了某个库"}} linux/grep -.-> lab-558728{{"如何检查 Linux 中是否安装了某个库"}} linux/pipeline -.-> lab-558728{{"如何检查 Linux 中是否安装了某个库"}} linux/software -.-> lab-558728{{"如何检查 Linux 中是否安装了某个库"}} end

使用 ldconfig -p 列出库

在这一步中,你将学习如何使用 ldconfig 命令列出 Linux 系统上可用的共享库。

共享库是多个程序可以使用的代码集合。这样可以节省磁盘空间和内存,因为代码无需在每个程序中重复。

ldconfig 命令主要用于配置动态链接器的运行时绑定。当使用 -p 选项时,它会打印出缓存的目录和候选库列表。

如果终端尚未打开,请打开它。你可以通过点击桌面左侧的 Xfce Terminal 图标来打开终端。

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

ldconfig -p

此命令将输出系统上找到的一长串共享库。输出内容大致如下:

...
        libzstd.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libzstd.so.1
        libz.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libz.so.1
        libxml2.so.2 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxml2.so.2
        libxml2.so (libc6,x86-64) => /lib/x86_64-linux-gnu/libxml2.so
        libxslt.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libxslt.so.1
...

输出显示了库的名称、其构建所针对的架构(如 x86-64)以及系统上库文件的路径。

由于输出内容很长,你可能想将其通过管道传递给 less 等分页器,以便逐屏查看。为此,请使用管道符号 |

ldconfig -p | less

按空格键向下滚动一页,按 b 键向上滚动,按 q 键退出 less

此命令有助于查看哪些库可用以及它们的位置。

点击 Continue 进入下一步。

使用 dpkg -l 检查库所属的软件包

在上一步中,你列出了共享库。现在,让我们学习如何使用 dpkg 命令找出特定库所属的软件包。

dpkg 是基于 Debian 的系统(如 Ubuntu)的软件包管理器,用于安装、移除和管理 .deb 软件包。-l 选项用于列出已安装的软件包。

为了查找特定的软件包,我们可以将 dpkg -lgrep 结合使用来过滤输出。让我们搜索与在 ldconfig -p 输出中看到的 xml2 库相关的软件包。

在终端中输入以下命令并按回车键:

dpkg -l | grep xml2

此命令列出所有已安装的软件包(dpkg -l),然后过滤该列表,只显示包含 "xml2" 的行(grep xml2)。

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

ii  libxml2:amd64                      <version>                     amd64        GNOME XML library
ii  libxml2-dev:amd66                  <version>                     amd64        Development files for the GNOME XML library
...

输出提供了有关软件包的信息:

  • 前两个字符(ii)表示软件包的状态(已安装)。
  • 软件包名称(例如,libxml2:amd64)。
  • 版本号。
  • 架构(例如,amd64)。
  • 软件包的简要描述。

这是一种识别哪个软件包提供特定库文件的有效方法,对于故障排除或了解依赖关系非常有用。

点击 Continue 继续。

检查 /usr/lib 中的库文件

在这最后一步,让我们来探索存储许多共享库的目录:/usr/lib

Linux 中的 /usr 目录包含用户级别的程序和数据。/usr/lib 子目录专门存放那些对于系统启动并非必需,但应用程序需要的共享库。

首先,让我们将当前目录更改为 /usr/lib。为此,我们使用 cd 命令。

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

cd /usr/lib

现在你已进入 /usr/lib 目录。要查看该目录的内容,使用 ls 命令。由于这个目录包含许多文件,我们将再次把输出通过管道传递给 less

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

ls | less

你会看到一长串的文件和目录。许多以 .so 结尾的文件是共享库。你可能还会看到像 x86_64-linux-gnu 这样的目录,其中包含特定架构的库。

按空格键向下滚动,按 q 键退出 less

让我们查找上一步中讨论过的 libxml2 库文件。我们可以使用 lsgrep 在当前目录(/usr/lib)中找到它。

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

ls | grep libxml2

你应该会看到类似以下的输出,显示 libxml2 库文件和符号链接:

libxml2.so
libxml2.so.2
libxml2.so.2.<version>

.so 文件是实际的共享库,而没有版本号的文件(如 libxml2.so)通常是指向带有版本号的实际库文件的符号链接。

你可以使用 readlink 命令查看符号链接指向的位置。例如:

readlink libxml2.so

这将显示 libxml2.so 链接到的实际文件,其中包含完整的版本号。

libxml2.so.2

这一步向你展示了如何使用 cdlsgrep 导航到常见的库目录并检查其内容。了解库的存储位置对于系统管理和开发至关重要。

点击 Continue 完成实验。

总结

在这个实验中,你学习了如何使用多种方法检查 Linux 中是否安装了某个库。你首先使用 ldconfig -p 命令列出可用的共享库及其位置,了解了它在管理动态链接器绑定方面的作用。

接下来,你探索了如何使用 dpkg -l 命令识别特定库所属的软件包,该命令是管理 Debian 软件包的关键工具。最后,你学会了直接检查像 /usr/lib 这样的常见库目录,以手动验证库文件是否存在。这些步骤为确定 Linux 系统上库的安装状态提供了全面的方法。