要在 macOS 上查找 Homebrew 安装依赖项的位置,可向 Homebrew 查询该软件包的前缀(prefix),然后列出其当前安装中的文件。请将以下命令中的 openssl@3 替换为你需要的 formula 名称。Homebrew 将 formula 版本存储在其 Cellar 中,并可能将文件链接到共享前缀目录中,因此软件包的安装位置与你运行命令的路径可能会有所不同。Homebrew 的 brew(1) 参考手册

查找 formula 的安装路径

在终端中运行:

brew --prefix openssl@3

对于已安装的 formula,该命令会输出该 formula 所在或被链接的位置。如果你希望在未安装该 formula 时让 Homebrew 报错,请使用 --installed 选项:

brew --prefix --installed openssl@3

输出结果通常会使用 Homebrew 稳定的 opt 路径,例如在许多 Apple 芯片配置上为 /opt/homebrew/opt/openssl@3,在 Intel 上为 /usr/local/opt/openssl@3。这些是常见的默认设置,但并非绝对:一台 Mac 可能会有自定义前缀或多个 Homebrew 安装。请在你自己的机器上查看输出,而不是假设采用另一台 Mac 的路径。Homebrew 文档指出 /opt/homebrew 为其默认的 Apple 芯片前缀,/usr/local 为其默认的 Intel 前缀。Homebrew 常见问题解答

查看带版本的文件和实际可执行文件

要列出该 formula 当前 keg(即其已安装版本的目录)内的路径,请运行:

brew list --formula openssl@3

Homebrew 将带有 formula 参数的 brew list 定义为该 formula 当前 keg 内路径的摘要。要查看带版本的 Cellar 路径本身,请将 formula 的前缀与 readlink 结合使用:

readlink "$(brew --prefix openssl@3)"

输出通常指向一个带版本的目录,例如 ../Cellar/openssl@3/3.x.y。确切版本取决于已安装的内容。Homebrew 将 formula 的安装描述为 Cellar 中的 keg,其中一些文件会软链接到更广泛的 Homebrew 前缀中。Formula 手册 (Cookbook)

如果具体问题是“我的 shell 会运行哪个可执行文件?”,请单独检查命令解析:

command -v openssl

这将报告通过你当前 shell 的 PATH 找到的第一个匹配命令。如果另一个安装出现在 PATH 中更靠前的位置,或者该 formula 没有提供该名称的命令,则该结果可能与 formula 的前缀不同。要直接检查二进制文件,请将 command -v 输出的路径与 ls -l 结合使用,以查看它是否为符号链接。一个软件包除了可执行文件外,还可能包含库、头文件和支持文件;仅检查一个命令并不能定位该软件包的所有文件。

如果 formula 名称不明确或缺失

列出已安装的 formula 及其版本,然后找出相关名称:

brew list --formula --versions

Homebrew 还会区分它认为是用户主动请求安装的 formula 与作为依赖项安装的 formula。以下命令有助于缩小列表范围:

brew list --formula --installed-on-request
brew list --formula --no-installed-on-request

如果 brew --prefix --installed NAME 报告该 formula 未安装,请在 brew list --formula --versions 中核对其实际名称。依赖项可能已在清理过程中被删除、可能属于另一个 Homebrew 安装,或者可能是通过其他包管理器安装的。如果存在多个 brew 副本,command -v brew 会显示当前 shell 使用的是哪一个;请通过同一个 brew 命令运行软件包查询。

当软件包来自 macOS 安装器时

对于由 Apple 的“安装器”应用从 .pkg 安装的软件,Homebrew 命令不适用。macOS 的 pkgutil 可以列出软件包 ID 以及收据中记录的文件:

pkgutil --pkgs
pkgutil --files com.example.package

将 com.example.package 替换为第一个命令获取的实际 ID。--files 的输出来自安装器的收据数据库;它并不是所有包管理器安装的通用清单。软件包 ID 可能与应用程序的显示名称不一致。Apple pkgutil 手册

这些路径说明了什么,以及未说明什么

对于 Homebrew formula,brew --prefix NAME 是查找其由 Homebrew 管理的位置的快捷方式,而 brew list NAME 则显示其当前 keg 中的路径。当你需要知道 shell 会选择哪个可执行文件时,请使用 command -v。这些命令回答的是不同的问题:即使某个软件包的可执行文件不在 PATH 中,其文件也可能存在;而在 PATH 上找到的可执行文件可能来自你正在检查的 formula 之外的其他地方。

如果你需要通过其他方式安装的软件包的完整文件清单,请使用该包管理器自己的收据或列表工具。切勿仅凭软件包名称推断安装位置。

来源