Debian everything-in-usr 目錄方案 (usrrmerge) 破壞了 dpkg -S。解決辦法嗎?

Debian everything-in-usr 目錄方案 (usrrmerge) 破壞了 dpkg -S。解決辦法嗎?

我習慣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許多功能。dpkgusrmergedpkg -S

相關內容