Mac OS Xのどのパッケージに属するファイルを見つけるには?


8

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

apt-file /bin/progname

rpm -qf /bin/progname

yum whatprovides /bin/progname

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

回答:


19

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

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

このツールがOS X 10.6から存在していることは知っています。


これは正解としてマークする必要があります。GUIアプリケーションでも使用できます。試してみるとpkgutil --file-info /Applications/TextEdit.app、それがcom.apple.pkg.Essentialsに属していることがわかりますが、どのアップデーターが適用されているかもわかります(私の場合、com.apple.pkg.update.os.10.10.2.14C109)。 .patch、com.apple.pkg.update.os.10.10.3.14D131.delta、com.apple.pkg.update.os.10.9.2.13C64.combo)。
juandesant、2016年

5

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

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

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

  • MacPortsは/opt/local/bin/opt/local/sbin実行可能ファイルの場合、接頭辞がのすべてを使用します/opt/local

  • Homebrewは/usr/local/bin実行可能ファイルに使用します/usr/local/

  • 他のアプリケーションは、どこかの下で、独自のディレクトリを作成する必要があり/usr、例えば/usr/local/git/binGitのOS Xインストーラまたは/usr/X11/binX11のために。

  • 一部のシステムフレームワークはにシンボリックリンクします/usr/bin。たとえばrake/System/Library/Frameworks/Ruby.framework

  • アプリケーションで/binやを使用することはできません/sbin。サードパーティのアプリケーション(OS Xフレームワーク以外のもの)も使用し/usr/binないでください。


標準化されたパッケージ管理がないわけではありません。Mac OS Xは(インストーラーを使用して)パッケージからほとんどすべてのソフトウェアをインストールし、記録を保持します。@bhavinからの回答を参照してください。
Neil Mayhew、2015年

1
あなたが正しい。標準パッケージを使用しない可能性のあるプログラムについてもっと話していました。私がこの回答を書いたとき、pkgutilについてよく知りませんでした。
slhck

私もpkgutilどちらも知りませんでした。
Neil Mayhew

MacPortsを使用すると、特定のファイルを所有しているポートを特定できますport provides FILE
Neil Mayhew

2

OSX上の他の2つのパッケージマネージャー用に1つの場所にそれらを収集するには:

MacPortsの:(上記コメントでニールにより述べたように)

port provides /opt/local/bin/progname

以下のためにブリューそれはそう単純ではないのですが、1つは、通常は使用してパッケージを見つけることができます。

ls -la /usr/local/bin/progname

どのパッケージ名が含まれているソフトリンクを表示する必要があり、さもなければ1から他の提案を使用することができます1これらの質問

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