我正在尝试查找libnss_mdns4_minimal.so.2
使用安装的软件包。当文件路径以 开头时,dpkg -S
输出会显示 ,但当文件路径以 开头时会成功。no path found
/usr/lib/
/lib/
我正在使用 Ubuntu 22.04 Server。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
为了找到文件的位置,我运行了以下命令:
$ sudo updatedb
$ locate mdns4_minimal
/usr/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
接下来,我使用dpkg -S
查找安装了 的包libnss_mdns4_minimal.so.2
。输出显示:no path found matching pattern
。
$ dpkg -S /usr/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
dpkg-query: no path found matching pattern /usr/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
但是,下面的操作成功了:
$ dpkg -S /lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
libnss-mdns:amd64: /lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
我注意到这/lib
是一个符号链接/usr/lib
:
$ ls -l /lib
lrwxrwxrwx 1 root root 7 Mar 19 2023 /lib -> usr/lib
我不明白为什么no path was found
使用完整路径时/usr/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
,使用时却成功/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
。无论我通过直接路径还是通过符号链接引用,文件不是都一样吗?
有人能解释一下吗?
dpkg -S
仅将输入与其包数据库中指定的路径列表进行匹配。它没有查看系统上的实际路径或文件。
在这种情况下,相关的 deb 包指定了 的路径
/lib/x86_64-linux-gnu/libnss_mdns4_minimal.so.2
,因此这就是dpkg
用于安装、删除……和搜索的内容。