Понимание зависимостей homebrew и keg-only

120

Я недавно начал использовать homebrew, и я немного смущен тем, что происходит, когда я что-то добавляю в свою систему, но его заваренные зависимости относятся только к кегам, что означает, что они связаны между собой /usr/local.

Например, я устанавливаю vips (библиотеку обработки изображений). Одна из его многочисленных зависимостей - pixman. Pixman устанавливается только для кеги, поскольку, очевидно, Mac OSX (в данном случае Snow Leopard) уже поставляется с ним (или его версией).

Значит ли это, что vips будут использовать системную версию pixman? Если да, то нет ли потенциальных проблем с версией, связанных с использованием версии системы, а не версии зависимости (при условии, что они разные)?

cgat
источник

Ответы:

198

Для программного обеспечения , чтобы быть «бочонок только» означает , что он установлен в /usr/local/Cellarно не связаны в таких местах , как /usr/local/bin, /usr/local/libи т.д. Это означает другое программное обеспечение , которое зависит от того, он должен быть скомпилирован с конкретными инструкциями по использованию файлов в /usr/local/Cellar. Это делается автоматически, brew installкогда в формуле указываются зависимости только для кеги.

Формулы, определяющие зависимости только для keg, гарантируют, что эквивалентные системные библиотеки не используются. Ваша установка vips связана с определенной версией pixman /usr/local/Cellar/pixman/<version>, поэтому она не зависит от системной версии pixman или любых других версий pixman для Homebrew, которые вы можете установить.

echristopherson
источник
9
Хорошее объяснение! Вы можете часто проверять, с otool -L /usr/local/Cellar/vips/???/lib/*.dylibкакими другими библиотеками он ссылается.
Samuel John
У меня есть openssl 1.0.2s, установленный homebrew, а в моей mac os есть LibreSSL 2.6.5. Когда я это делаю openssl version, он всегда показывает один из os (LibreSSL), но когда я запускаю свой python в интерактивном режиме, он фактически использует openssl. Можете ли вы помочь мне понять, как python подобрал правильный openssl? @echristopherson
Алекс
1
@Alex Как echristopherson сказал: Это связано с определенной версией из openssl(во время установки). Взгляните на pythonФормулу пивоварения ; там вы можете видеть, что путь (префикс brew) openssl@1.1формулы используется как arg, что, в свою очередь, используется для configure.
einjohn