如何使用 Homebrew keg_only 相依套件在 Homebrew 外部建置軟體

「keg-only」是什麼意思?

常見問題集 簡要說明了這一點。

舉例來說

OpenSSL 沒有符號連結到我的 PATH,非 Homebrew 建置找不到它!

這是因為 Homebrew 將其隔離在個別前置詞中,而不是符號連結到公開位置。

關於潛在解決方法的建議

許多處於這種情況的人會強制連結 keg-only 工具與 brew link --force,或將預設系統公用程式移出 PATH,並用 Homebrew 提供的工具手動建立的符號連結取代它們。

不要移除 macOS 原生工具,並強制用符號連結取代它們,指向 Homebrew 提供的工具。這麼做可能會造成重大損壞,並可能在嘗試建置軟體時造成重大損壞。

brew link --force 會在 brew doctor 中建立警告,讓您和維護人員知道存在可能造成問題的連結。如果您已連結某個項目,且完全沒有問題?請忽略 brew doctor 錯誤。

如何在 Homebrew 外部使用這些工具?

如果您想在 Homebrew 外部使用 keg-only 工具,有許多有用且可靠的替代方案。

建置旗標

您可以設定旗標,讓設定指令碼或 Makefiles 朝正確的方向前進。設定旗標的範例

./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 修改

您可以暫時在 PATH 前加上工具的 bin 目錄,例如

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

這會在您的 PATH 前加上目錄,確保任何搜尋 PATH 的建置指令碼會先找到它。

使用此命令變更 PATH,可確保變更僅存在於 shell 會話期間。目前的會話結束後,PATH 會回復到前一個狀態。

pkg-config 偵測

如果您嘗試建置的工具知道 pkg-config,您可以修改 PKG_CONFIG_PATH 以尋找 keg 專用工具的 .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