web-dev-qa-db-ja.com

Mac OS Xのどのパッケージにファイルが属しているかを確認するにはどうすればよいですか?

どのアプリケーション/パッケージが特定のファイルを所有または作成しているかを確認する方法はありますか?たとえば、Linuxでは、これらのコマンドはパッケージの所有者を表示します

apt-file /bin/progname

rpm -qf /bin/progname

yum whatprovides /bin/progname

OS Xでは、ファイルはネイティブOS Xアプリケーションの一部であるか、MacportsまたはHomebrewによってインストールされます。これらは完全に異なる環境です。どのアプリケーション/パッケージが特定のファイルを所有しているかを確認するための各環境用のコマンドはありますか?

8
hanxue

少し遅いですが、おそらく他の人の助けになるでしょう。

pkgutilコマンドを使用できます。

たとえば、「less」コマンドがどのパッケージに属しているかを知りたい場合は、次のようにします。

pkgutil --file-info /usr/bin/less

これは次のようなものを出力します:

volume: /
path: /usr/bin/less

pkgid: com.Apple.pkg.BaseSystemBinaries
pkg-version: 10.7.0.1.1.1309742044
install-time: 1310407891
uid: 0
gid: 0
mode: 755

パッケージに含まれるすべてのファイルを一覧表示するには、com.Apple.pkg.BaseSystemBinariesこの例では、次を実行します。

pkgutil --files com.Apple.pkg.BaseSystemBinaries

私はこのツールがOSX10.6から存在していることを知っています。

19
bhavin

標準化されたパッケージ管理がないため、これは実際には不可能です。

MacPortsまたはHomebrewを別の方法で構成しない限り、それらの実行可能ファイルは常に他の誰も使用しない場所にあります。 MacPortsとHomebrewは別々のユーザーアカウントで実行されないため、それらが作成するファイルは常にユーザーまたはrootが所有します。

残っているのは、実行可能ファイルの場所に基づいて推測することしかできないということです。ここにいくつかのルールがあります:

  • MacPortsは、実行可能ファイルに/opt/local/bin/opt/local/sbinを使用します。すべてのプレフィックスは/opt/localです。

  • Homebrewは実行可能ファイルに/usr/local/binを使用し、それ以外はすべて/usr/local/の下にあります。

  • 他のアプリケーションは、/usrの下のどこかに独自のディレクトリを作成する必要があります。 Git OSXインストーラーの場合は/usr/local/git/bin、X11の場合は/usr/X11/bin

  • 一部のシステムフレームワークは、/usr/binにシンボリックリンクしています。 rake/System/Library/Frameworks/Ruby.frameworkを指します

  • アプリケーションで/binまたは/sbinを使用しないでください。サードパーティのアプリケーション(つまり、OS Xフレームワーク以外のもの)も/usr/binを使用しないでください。

5
slhck

OSX上の他の2つのパッケージマネージャーのためにそれらを1か所に集めるには:

MacPortsの場合(上記のコメントでNeilが言及したように):

port provides /opt/local/bin/progname

Brewの場合、それほど単純ではありませんが、通常、次を使用してパッケージを見つけることができます。

ls -la /usr/local/bin/progname

パッケージ名を含むソフトリンクを表示する必要があります。そうでない場合は、これらの one からの他の提案を使用できます questions

2
Pierz