回答:
Debianには、このタスクを実行するユーティリティがいくつかあります。説明については、このページを確認してください。私はそれらのうちの2つを言及し、よapt-file
とdlocate
。
apt-file
内部キャッシュを検索するため、検索するすべてのパッケージをインストールすることはできません。以下に、より詳細なガイドがあります。
dlocate
dpkg -L
(パッケージの内容を一覧表示するコマンド)の高速な代替手段であるため、インストールされているパッケージのみを検索します。検索はによって実行されdlocate -S file.name
ます。
また、packages.debian.orgサーバーを使用してオンラインでパッケージを検索できます(「パッケージの内容を検索する」セクション)。
apt-file
最初に更新することをお勧めします。
sudo apt-get update
何を参照してくださいapt-file
ためのものです:
apt-cache show apt-file
インストールしてください:
sudo apt-get install apt-file
リポジトリからデータを読み取ります(これsudo
は、ユーザーのキャッシュを作成しなくても機能しますがsudo
、キャッシュはシステム全体に適用されます)。
sudo apt-file update
検索を実行します。この例では、どのパッケージxrandr
実行可能ファイルが次のものであるかを知りたい:
apt-file search xrandr
これは、と多くのパッケージを一覧表示しunxrandr
、lxrandr.mo
かsource_lxrandr.py
。私たちの場合、あまり役に立ちません。より賢い検索:
apt-file search -x /xrandr$
($
行末を示します)。出力例:
bash-completion: /usr/share/bash-completion/completions/xrandr
x11-xserver-utils: /usr/bin/xrandr
最初の結果は実行可能ファイルのように見えませんが、2番目の結果は実行可能ファイルのように見えません。さらに調査することができます。実行:
apt-cache show x11-xserver-utils
ビンゴ!これがパッケージです。
別の選択肢:
$ dpkg -S /bin/bash
bash: /bin/bash
少なくとも私のUbuntuでは、両方ともdpkg
パッケージに含まれているようですので、特定のものに本当の利点はありません...
https://askubuntu.com/a/667227/52975でdpkg -S
言及されているように、インストールによって生成されたファイルはによって検出されません。
たとえば/bin/nc
、パッケージをインストールすると表示されますnetcat-openbsd
。
しかし、次の場合:
dpkg -S /bin/nc
取得しdpkg-query: no path found matching pattern /bin/nc
ます。
これは、インストール後に実行されるpostinstスクリプトの呼び出し/bin/nc
によって生成されるためです。update-alternatives
パッケージ/bin/nc
によって別のバージョンが提供されるため、このように機能しnetcat-traditional
ます。
このような生成されたファイルを見つける一般的な方法はないと思います。代替シンボリックリンクの特定のケースでは、次のリンクをたどることができますreadlink -f
。
dpkg -S "$(readlink -f /bin/nc)"
Debianに精通していないので、これを試したときに困惑しました。
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/vncviewer
dpkg-query: no path found matching pattern /usr/bin/vncviewer
kearnsp@xubuntuvb:~$
少し調べて、パッケージを見つけました:
kearnsp@xubuntuvb:~$ ls -l /usr/bin/vncviewer
lrwxrwxrwx 1 root root 27 May 28 15:49 /usr/bin/vncviewer -> /etc/alternatives/vncviewer
kearnsp@xubuntuvb:~$ ls -l /etc/alternatives/vncviewer
lrwxrwxrwx 1 root root 20 May 28 15:49 /etc/alternatives/vncviewer -> /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$ dpkg -S /usr/bin/xvnc4viewer
xvnc4viewer: /usr/bin/xvnc4viewer
kearnsp@xubuntuvb:~$