如何在 Homebrew keg_only 依赖项之外使用 Homebrew 构建软件

“keg-only”是什么意思?

常见问题解答对此进行了简要说明。

例如

OpenSSL 未符号链接到我的 PATH,非 Homebrew 构建找不到它!

这是因为 Homebrew 将其隔离在其单独的前缀中,而不是符号链接到公开的位置。

关于潜在解决方法的建议

在这种情况下,许多人要么使用 brew link --force 强制链接 keg-only 工具,要么将默认系统实用程序移出 PATH,并用手动创建的符号链接替换它们,指向 Homebrew 提供的工具。

不要删除 macOS 原生工具,并用指向 Homebrew 提供的工具的符号链接强制替换它们。这样做可能会并且很可能在尝试构建软件时造成重大损坏。

brew link --forcebrew doctor 中创建一个警告,让您和维护人员知道存在可能导致问题的链接。如果您已链接了某些内容,并且没有任何问题?请随意忽略 brew doctor 错误。

如何在 Homebrew 之外使用这些工具?

如果您希望在 Homebrew 之外使用 keg-only 工具,则存在有用且可靠的备选方案。

构建标志

您可以设置标志,以便为配置脚本或 Makefile 提供正确的方向。设置标志的示例

./configure --prefix=/Users/Dave/Downloads CFLAGS="-I$(brew --prefix openssl)/include" LDFLAGS="-L$(brew --prefix openssl)/lib"

使用 pip 的示例

CFLAGS="-I$(brew --prefix icu4c)/include" LDFLAGS="-L$(brew --prefix icu4c)/lib" pip install pyicu

PATH 修改

您可以暂时使用工具的 bin 目录预置您的 PATH,例如

export PATH="$(brew --prefix openssl)/bin:${PATH}"

这会将该目录预置到您的 PATH 中,确保任何搜索 PATH 的构建脚本都能首先找到它。

使用此命令更改 PATH 可确保更改仅在 shell 会话期间存在。当前会话结束后,PATH 将恢复到其先前状态。

pkg-config 检测

如果您尝试构建的工具支持 pkg-config,您可以修改 PKG_CONFIG_PATH 以查找 keg-only 实用程序的 .pc 文件(如果有)。并非所有配方都附带这些文件。

一个示例是

export PKG_CONFIG_PATH="$(brew --prefix openssl)/lib/pkgconfig"

如果您对 PKG_CONFIG_PATH 变量感到好奇,man pkg-config 会提供更多详细信息。

您可以使用 pkg-config 打印默认搜索路径

pkg-config --variable pc_path pkg-config
Fork me on GitHub