介绍
在这个实验中,你将学习如何检查特定库是否已安装在你的 Linux 系统上。你将探索不同的方法来实现这一目标,首先使用 ldconfig -p 列出可用的共享库,以了解系统中存在哪些库及其位置。
接下来,你将使用 dpkg -l 命令来确定与特定库关联的软件包,从而深入了解系统的软件包管理器是如何管理库的。最后,你将学习如何直接检查 /usr/lib 等常见的库目录,以手动验证库文件是否存在。
在这个实验中,你将学习如何检查特定库是否已安装在你的 Linux 系统上。你将探索不同的方法来实现这一目标,首先使用 ldconfig -p 列出可用的共享库,以了解系统中存在哪些库及其位置。
接下来,你将使用 dpkg -l 命令来确定与特定库关联的软件包,从而深入了解系统的软件包管理器是如何管理库的。最后,你将学习如何直接检查 /usr/lib 等常见的库目录,以手动验证库文件是否存在。
在这一步中,你将学习如何使用 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 命令找出特定库所属的软件包。
dpkg 是基于 Debian 的系统(如 Ubuntu)的软件包管理器,用于安装、移除和管理 .deb 软件包。-l 选项用于列出已安装的软件包。
为了查找特定的软件包,我们可以将 dpkg -l 与 grep 结合使用来过滤输出。让我们搜索与在 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。
Linux 中的 /usr 目录包含用户级别的程序和数据。/usr/lib 子目录专门存放那些对于系统启动并非必需,但应用程序需要的共享库。
首先,让我们将当前目录更改为 /usr/lib。为此,我们使用 cd 命令。
输入以下命令并按回车键:
cd /usr/lib
现在你已进入 /usr/lib 目录。要查看该目录的内容,使用 ls 命令。由于这个目录包含许多文件,我们将再次把输出通过管道传递给 less。
输入以下命令并按回车键:
ls | less
你会看到一长串的文件和目录。许多以 .so 结尾的文件是共享库。你可能还会看到像 x86_64-linux-gnu 这样的目录,其中包含特定架构的库。
按空格键向下滚动,按 q 键退出 less。
让我们查找上一步中讨论过的 libxml2 库文件。我们可以使用 ls 和 grep 在当前目录(/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
这一步向你展示了如何使用 cd、ls 和 grep 导航到常见的库目录并检查其内容。了解库的存储位置对于系统管理和开发至关重要。
点击 Continue 完成实验。
在这个实验中,你学习了如何使用多种方法检查 Linux 中是否安装了某个库。你首先使用 ldconfig -p 命令列出可用的共享库及其位置,了解了它在管理动态链接器绑定方面的作用。
接下来,你探索了如何使用 dpkg -l 命令识别特定库所属的软件包,该命令是管理 Debian 软件包的关键工具。最后,你学会了直接检查像 /usr/lib 这样的常见库目录,以手动验证库文件是否存在。这些步骤为确定 Linux 系统上库的安装状态提供了全面的方法。