Answers:
有点晚了,但也许会对其他人有所帮助。
您可以使用该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起就存在。
由于没有标准化的软件包管理,因此这实际上是不可能的。
除非您对MacPorts或Homebrew进行了不同的配置,否则您将始终在其他人无法使用的位置找到它们的可执行文件。由于MacPorts和Homebrew不在单独的用户帐户下运行,因此它们创建的文件将始终由您的用户或拥有root
。
剩下的就是您只能尝试根据可执行文件的位置进行猜测。以下是一些规则:
MacPorts使用/opt/local/bin
和/opt/local/sbin
作为可执行文件,所有前缀为/opt/local
。
Homebrew /usr/local/bin
用于可执行文件,其他所有内容都在之下/usr/local/
。
其他应用程序应该建立在自己的目录中的某个地方/usr
,比如/usr/local/git/bin
对于Git的OS X安装或/usr/X11/bin
为X11。
一些系统框架符号链接到/usr/bin
,例如rake
指向/System/Library/Frameworks/Ruby.framework
任何应用程序都不得使用/bin
或/sbin
。任何第三方应用程序(即非OS X框架的任何东西)都不应使用/usr/bin
。
pkgutil
,这听起来很方便。
port provides FILE
pkgutil --file-info /Applications/TextEdit.app
,您将获得它属于com.apple.pkg.Esssentials的信息,但同时还会告诉您已对其应用了哪些更新程序(在我的情况下为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)。