han*_*xue 13 mac macports homebrew macos
有没有办法找出哪个应用程序/包拥有或创建特定文件?例如,在 Linux 中,这些命令将显示包所有者
apt-file /bin/progname
rpm -qf /bin/progname
yum whatprovides /bin/progname
Run Code Online (Sandbox Code Playgroud)
在 OS X 中,文件可以是本地 OS X 应用程序的一部分,或者由 Macports 或 Homebrew 安装。这些是完全不同的环境。是否有针对每个环境的命令来检查哪个应用程序/包拥有特定文件?
小智 21
这有点晚了,但也许对其他人有帮助。
您可以使用该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
Run Code Online (Sandbox Code Playgroud)
要列出包中包含的所有文件,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
。
要在 OSX 上为其他两个包管理器在一个地方收集它们:
对于MacPorts(正如 Neil 在上面的评论中提到的那样):
port provides /opt/local/bin/progname
Run Code Online (Sandbox Code Playgroud)
对于Brew,它不是那么简单,但通常可以使用以下方法找到包:
ls -la /usr/local/bin/progname
Run Code Online (Sandbox Code Playgroud)
其中应该显示包含包名称的软链接,否则可以使用这些问题之一的其他建议。
归档时间: |
|
查看次数: |
7127 次 |
最近记录: |