我习惯于dpkg -S /path/to/file
在 Debian 上找出某些东西的来源。~new "everything-in-usr" AKA usrmerge 政策经常打破这一点。仅举个例子:
> 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
Run Code Online (Sandbox Code Playgroud)
这很糟糕,因为实际运行的可执行文件是 /usr/lib/systemd/systemd 所以我更有可能想知道在任何给定的dpkg -S
. 是否有另一个 usrrerge 感知替代品dpkg -S
可以用来轻松可靠地将可执行文件跟踪回其包?
我不知道有任何/usr
等价于的 -merge-aware dpkg -S
,但有一种方法可以避免这个问题:dpkg -S
不需要完整路径,所以
dpkg -S lib/systemd/systemd
Run Code Online (Sandbox Code Playgroud)
和
dpkg -S bin/systemd
Run Code Online (Sandbox Code Playgroud)
会给你你正在寻找的答案。如果要避免将与给定模式匹配的所有文件列为子字符串,请添加*
:
dpkg -S '*lib/systemd/systemd' '*bin/systemd'
Run Code Online (Sandbox Code Playgroud)
另请参阅dpkg-query: no path found matching pattern /usr/bin/bash,以及此/usr
合并说明(由dpkg
维护者编写),其中解释了所涉及的一些约束,并列出了许多dpkg
被usrmerge
软件包破坏的功能方法(包括dpkg -S
)。
归档时间: |
|
查看次数: |
111 次 |
最近记录: |