どのパッケージがファイルを所有しているかを調べるにはどうすればよいですか?


回答:


44

Debianには、このタスクを実行するユーティリティがいくつかあります。説明については、このページを確認してください。私はそれらのうちの2つを言及し、よapt-filedlocate

apt-file内部キャッシュを検索するため、検索するすべてのパッケージをインストールすることはできません。以下に、より詳細なガイドがあります。

dlocatedpkg -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

これは、と多くのパッケージを一覧表示しunxrandrlxrandr.mosource_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

ビンゴ!これがパッケージです。


この回答の最初のリンク(debianhelp.co.uk/findfile.htm)は現在無効になっているようです。
rogpeppe

123
user@host:~$ dpkg-query -S /bin/bash 
bash: /bin/bash

bashはパッケージ名です。


4
この答えは、受け入れられているものよりもはるかに優れています!
ベックス

正しい。「受け入れられた答え」に緑色のチェックマークが付いているのは残念ですが、これは「正しい答え」も伝えるマークです。この場合、受け入れ答えは上のミスdpkg-query -S、それは...オプションパッケージをインストールするの間違ったパスの下君を送る
スコット・プリヴェ

42

別の選択肢:

$ dpkg -S /bin/bash
bash: /bin/bash

少なくとも私のUbuntuでは、両方ともdpkgパッケージに含まれているようですので、特定のものに本当の利点はありません...


14

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)"

2

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:~$ 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.