%20%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81dpkg%20-S%20%E3%81%8C%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E5%9B%9E%E9%81%BF%E7%AD%96%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
私はdpkg -S /path/to/file
Debianで何かがどこから来たのかを知るために、~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
)。