どのアプリケーション/パッケージが特定のファイルを所有または作成しているかを確認する方法はありますか?たとえば、Linuxでは、これらのコマンドはパッケージの所有者を表示します
apt-file /bin/progname
rpm -qf /bin/progname
yum whatprovides /bin/progname
OS Xでは、ファイルはネイティブOS Xアプリケーションの一部であるか、MacportsまたはHomebrewによってインストールされます。これらは完全に異なる環境です。どのアプリケーション/パッケージが特定のファイルを所有しているかを確認するための各環境用のコマンドはありますか?
少し遅いですが、おそらく他の人の助けになるでしょう。
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から存在していることを知っています。
標準化されたパッケージ管理がないため、これは実際には不可能です。
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
を使用しないでください。