dpkg-query:找不到匹配模式 /usr/bin/bash 的路径

dpkg-query:找不到匹配模式 /usr/bin/bash 的路径

当包管理器无法确定相应命令是从哪个包安装时,这意味着什么。
当我做 -

$ sudo dpkg -S /usr/bin/passwd 
passwd: /usr/bin/passwd

从输出中,我可以推断它passwd是从passwd包中安装的

但对于像 - ftpbashcat等少数命令ls,源信息没有提供有关包的信息。以下输出适用于,但其他命令(如 、等)bash的输出完全相同。ftpcatls

$ sudo dpkg -S /usr/bin/bash
dpkg-query: no path found matching pattern /usr/bin/bash

所以,我很困惑上面的输出意味着什么。这些命令是否内置于 shell 或内核中(我认为情况并非如此,因为命令/utilslscatcoreutils 包的一部分,并且 man ls 或 cat 确认了这一点。)

那么,包管理器是什么意思无法确定命令是从哪个包安装的。

观察笔记:

$ sudo apt list coreutils
Listing... Done
coreutils/focal,now 8.30-3ubuntu2 amd64 [installed,automatic]

apt show coreutils | grep -Ew "ls|cat" 

提炼

具体来说,这个包包括:
arch base64 basenamechcon chgrp chmod chown chroot cksum comm cp csplit 剪切日期 dd df dir dircolors dirname du echo env 展开 expr 因子 false 羊群 fmt 折叠组头主机 ID id 安装加入链接 ln 日志名LSmd5sum mkdir mkfifo mknod mktemp mv 不错 nl nohup nproc numfmt

编辑-遵循斯蒂芬斯的回应。 (也作为单独的问题发布 -如何在linux中有效追踪硬链接?
软链接更容易处理,但硬链接不容易追踪到原始文件 -

$ ll -i /usr/bin/bash /bin/bash  
1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /bin/bash*  
1310813 -rwxr-xr-x 1 root root 1183448 Jun 18 21:14 /usr/bin/bash*

以上符合预期 - 酷

$ find / -samefile /bin/bash 2>/dev/null
/usr/bin/bash

再次符合预期 - 所以没有问题

find / -samefile /usr/bin/bash 2>/dev/null
/usr/bin/bash  

这是不是凉爽的。现在我如何跟踪 org 文件

奇怪 - 下面也没有帮助。

$ find / -inum 1310813 2>/dev/null
/usr/bin/bash

答案1

dpkg-query: no path found matching pattern /usr/bin/bash

意味着没有包裹/usr/bin/bash(直接)运送。dpkg -S搜索已发货的包内容,忽略替代项、符号链接等。

dpkg -S /bin/bash

会找到包裹,因为它发货了/bin/bash

也可以看看:

$ dpkg -L bash|grep bin/bash
/bin/bash
/usr/bin/bashbug

这同样适用于catls— 它们以/bin.在这种情况下查找命令的最佳方法是查找前缀为 的命令bin/

$ dpkg -S bin/bash
bash: /usr/bin/bashbug
bash: /bin/bash

ftp /usr/bin它是一个替代方案;要找到它,请使用readlink

$ dpkg -S $(readlink -f /usr/bin/ftp)
ftp: /usr/bin/netkit-ftp

相关内容