Debian の everything-in-usr ディレクトリ スキーム (usrmerge) により、dpkg -S が機能しなくなります。回避策はありますか?

Debian の everything-in-usr ディレクトリ スキーム (usrmerge) により、dpkg -S が機能しなくなります。回避策はありますか?

私はdpkg -S /path/to/fileDebianで何かがどこから来たのかを知るために、~new「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

これは困ったものです。実際に実行されている実行ファイルは /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)。

関連情報