简介
在这个实验中,你将学习如何检查特定库是否已安装在你的 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 系统上库的安装状态提供了全面的方法。