我习惯于dpkg -S /path/to/file
在 Debian 上找出某些东西来自哪里。 〜新“usr 中的所有内容”AKA 用户合并策略经常打破这一点。仅举个例子:
> dpkg -S /bin/systemd
systemd: /bin/systemd
> readlink -f /bin/systemd
/usr/lib/systemd/systemd
> dpkg -S /usr/lib/systemd/systemd
dpkg-query: no path found matching pattern /usr/lib/systemd/systemd
这很糟糕,因为实际运行的可执行文件是 /usr/lib/systemd/systemd 所以我更有可能想知道在任何给定的dpkg -S
.是否有另一个 usrmerge 感知替代品dpkg -S
可以用来轻松可靠地将可执行文件跟踪回其包?
答案1
我不知道任何/usr
-merge-aware 相当于dpkg -S
,但有一种方法可以避免这个问题:dpkg -S
不需要完整路径,所以
dpkg -S lib/systemd/systemd
和
dpkg -S bin/systemd
将为您提供您正在寻找的答案。如果您想避免将与给定模式匹配的所有文件作为子字符串列出,请添加*
:
dpkg -S '*lib/systemd/systemd' '*bin/systemd'
也可以看看dpkg-query:找不到匹配模式 /usr/bin/bash 的路径, 和/usr
合并的描述(由维护者编写)它解释了所涉及的一些约束,并列出了包方法(包括)所破坏的dpkg
许多功能。dpkg
usrmerge
dpkg -S