keg_only 依赖项之外使用 Homebrew 构建软件常见问题解答对此进行了简要说明。
例如
OpenSSL 未符号链接到我的 PATH,非 Homebrew 构建找不到它!
这是因为 Homebrew 将其隔离在其单独的前缀中,而不是符号链接到公开的位置。
在这种情况下,许多人要么使用 brew link --force 强制链接 keg-only 工具,要么将默认系统实用程序移出 PATH,并用手动创建的符号链接替换它们,指向 Homebrew 提供的工具。
请不要删除 macOS 原生工具,并用指向 Homebrew 提供的工具的符号链接强制替换它们。这样做可能会并且很可能在尝试构建软件时造成重大损坏。
brew link --force 在 brew doctor 中创建一个警告,让您和维护人员知道存在可能导致问题的链接。如果您已链接了某些内容,并且没有任何问题?请随意忽略 brew doctor 错误。
如果您希望在 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