Ubuntu / Debianでファイルがどのパッケージに属しているかを見つけますか?


300

Ubuntu 8.04システムで作業しているときに、プログラム、マニュアルページ、またはその他のファイルが見つからないことがよくあります。特定のファイルが含まれているパッケージを検索する簡単な方法はありますか(既にインストールされているかどうか)?aptまたはdpkgのあいまいなオプションかもしれませんか?



25
dpkg -S /path/to/fileパッケージがインストールされている場合。
ザズ

回答:


247
apt-file search filename

または

apt-file search /path/to/file


をインストールするにはapt-file、次を使用します。

sudo apt-get install apt-file

データベースを使用する前に、データベースを更新する必要があります。

sudo apt-file update

7
参考までに、apt-fileはリポジトリによって提供されるContents-amd64.gzに依存しているようです。また、すべてのサードパーティリポジトリがこのファイルを提供しているわけではありません。
ジョークスター

3
私にはうまくいきませんでした。データベースを更新しましたが、何も返されません。dpkg -S以下に説明するように動作します。
ノースーズ16

404

(Debian / Ubuntu)ファイルがどのパッケージに属しているかを発見します

dpkg -S /usr/bin/ls

「dpkg -S」は指定した文字列と一致するだけなので、引数として「ls」を使用するだけで、ファイル名に「ls」があるパッケージのファイルと一致します。そのため、通常は絶対パスを使用することをお勧めします。2番目の例では、dpkgが認識している12,000個のファイルが、むき出しの文字列「ls」に一致することがわかります。


33
これは、ファイルが既にインストールされている場合のみです
ジョンT

19
これとは対照的にapt-file、これはパッケージを手動でインストールした場合、dpkg -i
タニウス

4
あなたが取得する場合はdpkg-クエリを:なしパスは、一致するパターンが見つからない 、これを試してくださいdpkg -S "$(readlink -fn "$(which rename)")"
パブロA

1
奇妙な、これは私のために動作しませんでした:dpkg-query: no path found matching pattern /usr/bin/java、でファイルがあるのに/usr/bin/java
nnyby

パブロAのコメントを参照してください@nnyby
VOG

19

packages.debian.orgは、私がこのタスクを達成するためにいつも使用しているものです。ファイル名の一部も検索できるため、apt-fileよりも優れています。また、説明、バグなどを一覧表示するメインパッケージリストにリンクされています。すべてが優れたWebサイトにあります。コマンドラインからはそれほど便利ではありませんが、それでもかなり便利です。

速度を上げるために、URLをブックマークしました。

http://packages.debian.org/search?searchon=contents&keywords=%s&mode=filename&suite=unstable&arch=any

Firefoxで「debfind」をキーワードとして追加し(ブックマークマネージャで「more」をクリックしてハイライト表示)、「debfind」と入力するだけで機能します。ディストリビューションの他のバージョンでは、「スイート」を不安定版から安定版または必要に応じてテスト版に変更できます。


ただし、カスタムリポジトリでは機能しません。
Ctrl-C

自動化に関する選択肢が不十分です。
アレクサンダーシュチェブリキン

11

dlocateを使用することもできます。manページから。

$ dlocate [ PATTERN ]
List all records where either the package name or the filename matches PATTERN.

1
dlocateまた、私のお気に入りの方法であり、非常に信頼できます。
Avio

2
@Avio dlocateは、sudo update-dlocatedb最初に実行しない限り、最近インストールされたパッケージを見つけません。このコマンドは、
etc / cron.daily / dlocateで

4

ワジグを見つけました...

wajig whichpackage /path/to/file 

例えば。

wajig whichpackage /etc/apt/sources.list

Wajigは便利なコマンドラインまたはコンソールツールであり、学習したくないapt-get、dpkgのすべての長所をまとめています。。

wajigをインストールするには:

apt-get install wajig

そのコマンド「whichpackage」自体はapt-fileに依存します

使用する前にデータベースを更新する必要があります:-wajig update whixhがapt-get更新を実行してファイルキャッシュも更新するかどうかはまだわかりませんが、そうなると思います。

sudo wajig update

sudo apt-file update

(そしてスーパーカウ、イースターegss?!)


2

Debianに対するjamuraaの回答と同様に、Ubuntuのhttp://packages.ubuntu.com/にもアクセスできます。ファイルのパスを入力できる「パッケージの内容を検索」検索ボックスを見つけるには、少し下にスクロールする必要があります。


Raspbianにも1つしかなかった場合:)
XTL

0

http://www.kodkast.com/applications/find-which-package-file-belongs-toを使用してファイルを検索してみてください

これは、異なるrpms / linuxパッケージに含まれるファイルを検索するためのアプリケーションであり、マシンにrpmがインストールされていなくても非常に便利です。


Downvote:リンクは壊れていて、そもそもリンクはRPMパッケージ用であるようです。
トリプリー

0

command-not-foundパッケージは、潜在的なコマンドとdebianパッケージの名前に関するヒントを提供します。bashシェルでコマンドを入力し、その出力を確認することで機能します。

たとえば、コマンド名がわかっている場合:

zer@ivy:~ 10:45 $ zsh5
The program 'zsh5' is currently not installed.  To run 'zsh5' please ask
your administrator to install the package 'zsh'
zsh5: command not found

コマンドが不明の場合、いくつかの推測が適用されます。

zer@ivy:~ 09:46 $ zsh
No command 'zsh' found, did you mean:
 Command 'lsh' from package 'lsh-client' (main)
 Command 'osh' from package 'omake' (main)
 Command 'ysh' from package 'libyaml-shell-perl' (main)
 Command 'ssh' from package 'openssh-client' (main)
 Command 'vsh' from package 'crystalspace' (main)
 Command 'dsh' from package 'dsh' (main)
 Command 'ash' from package 'ash' (main)
 Command 'msh' from package 'nmh' (main)
 Command 'zssh' from package 'zssh' (main)
 Command 'qsh' from package 'gridengine-client' (main)
 Command 'sh' from package 'dash' (main)
 Command 'bsh' from package 'bsh' (main)
zsh: command not found

ただし、OPが要求したように、これは任意のファイルでは機能しません。
CVn

プログラムが有害なことを行い、インストールされている場合、これは問題のあるヒントです。-hまたは--help最後に追加すると少し役立ちます。-h最後に追加することでこれが十分に安全になる場合はお勧めしますが、それでもOPが求めることを達成するのは良い方法ではありません。
ベコ博士
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.