Spec-Zone.ru › Homebrew

Как собирать программы вне Homebrew с зависимостями Homebrew keg_only

Что означает «keg-only»?

Краткое объяснение приведено в разделе FAQ.

Например:

OpenSSL не связан символической ссылкой с моим PATH, и сборки вне Homebrew не могут его найти!

Это происходит потому, что Homebrew изолирует его в отдельном префиксе, а не создает символическую ссылку на общедоступное расположение.

Рекомендации по возможным обходным решениям

Некоторые пользователи в такой ситуации либо принудительно связывают инструменты keg-only с помощью brew link --force, либо перемещают стандартные системные утилиты из PATH и заменяют их вручную созданными символическими ссылками на инструменты, предоставляемые Homebrew.

Пожалуйста, не удаляйте встроенные инструменты macOS и не заменяйте их принудительно символическими ссылками на инструменты Homebrew. Это может привести и, скорее всего, приведет к серьезным проблемам при попытке собрать программы.

brew link --force создает предупреждение в brew doctor, чтобы вы и сопровождающие пакетов знали о наличии ссылки, которая может вызывать проблемы. Если вы создали ссылку и никаких проблем нет? Можете не обращать внимания на ошибку brew doctor.

Как использовать эти инструменты вне Homebrew?

Если вы хотите использовать инструменты keg-only вне Homebrew, для этого существуют удобные и надежные альтернативы.

Флаги сборки

Можно задать флаги, чтобы направить сценарии configure или 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 с помощью этой команды действует только в течение текущего сеанса оболочки. После его завершения PATH возвращается к прежнему состоянию.

Обнаружение с помощью pkg-config

Если инструмент, который вы пытаетесь собрать, поддерживает pkg-config, можно изменить PKG_CONFIG_PATH, чтобы находить файлы .pc утилиты keg-only, если они есть. Не все формулы содержат такие файлы.

Например:

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

Если вас интересует переменная PKG_CONFIG_PATH, в man pkg-config приведены более подробные сведения.

Чтобы вывести стандартный путь поиска pkg-config, выполните:

pkg-config --variable pc_path pkg-config

Обнаружение Common Package Specification

CMake 4.3 и более поздних версий может считывать файлы .cps формата Common Package Specification из префиксов пакетов. Если инструмент, который вы пытаетесь собрать, использует CMake, а зависимость keg-only содержит файлы .cps, добавьте префикс этой зависимости в начало CMAKE_PREFIX_PATH:

export CMAKE_PREFIX_PATH="$(brew --prefix openssl):${CMAKE_PREFIX_PATH}"

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/How-to-Build-Software-Outside-Homebrew-with-Homebrew-keg-only-Dependencies

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API