Как создать программное обеспечение за пределами 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.
Флаги сборки
Можно установить флаги, чтобы направить утилиты конфигурации или Makefiles в нужном направлении. Пример установки флагов:
./configure --prefix=/Users/Dave/Downloads CFLAGS="-I$(brew --prefix)/opt/openssl/include" LDFLAGS="-L$(brew --prefix)/opt/openssl/lib"
Пример с использованием pip:
CFLAGS="-I$(brew --prefix)/opt/icu4c/include" LDFLAGS="-L$(brew --prefix)/opt/icu4c/lib" pip install pyicu
PATH модификация
Можно временно добавить в начало вашего PATH каталог bin инструмента, например:
export PATH="$(brew --prefix)/opt/openssl/bin:${PATH}" Это добавит каталог в начало вашего PATH, гарантируя, что любой скрипт сборки, который ищет в PATH, найдёт его в первую очередь.
Изменение вашего PATH с помощью этой команды гарантирует, что изменение существует только в течение текущего сеанса оболочки. После завершения текущего сеанса PATH вернётся к своему предыдущему состоянию.
pkg-config обнаружение
Если инструмент, который вы пытаетесь собрать, поддерживает pkg-config, вы можете изменить свой PKG_CONFIG_PATH для поиска файлов .pc keg-only утилиты, если они есть. Не все формулы поставляются с этими файлами.
Пример этого:
export PKG_CONFIG_PATH="$(brew --prefix)/opt/openssl/lib/pkgconfig"
Если вас интересует переменная PKG_CONFIG_PATH, man pkg-config содержит более подробную информацию.
Вы можете вывести путь поиска по умолчанию с помощью:
pkg-config --variable pc_path pkg-config
© 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