了解Homebrew和Keg-only依赖

149

最近我开始使用homebrew,但是当我将某些东西安装到系统上时,我有点困惑它的依赖关系是keg-only的,也就是说这些依赖项链接在/usr/local下。

例如,我正在安装vips(一个图像处理库),其中之一的依赖项是pixman。Pixman被安装为keg-only,因为显然Mac OSX(在这种情况下是Snow Leopard)已经附带了它(或者它的一个版本)。

这是否意味着vips将使用系统版本的pixman?如果是这样,那么使用系统版本而不是依赖版本(假设它们不同)是否存在潜在的版本问题?

1个回答

242

“Keg-only”指的是软件已经安装在/usr/local/Cellar中,但没有链接到/usr/local/bin/usr/local/lib等位置。这意味着依赖它的其他软件必须使用/usr/local/Cellar中的文件进行编译。当配方指定了keg-only依赖项时,brew install会自动执行。

指定keg-only依赖项的公式(formula)确保不使用相应的系统库。您安装的vips版本链接至/usr/local/Cellar/pixman/<version>中的特定版本的pixman,因此不受系统版本的影响,也不受您安装的其他Homebrew版本的影响。


12
好的解释!你经常可以通过otool -L /usr/local/Cellar/vips/???/lib/*.dylib来检查它链接到哪些其他库。 - Samuel John
1
我安装了Homebrew的openssl 1.0.2s,我的Mac OS上有LibreSSL 2.6.5。当我运行openssl version时,它总是显示来自操作系统(LibreSSL)的版本,但是当我在交互模式下运行Python时,它实际上使用的是openssl。你能帮我理解Python如何选择正确的openssl吗?@echristopherson - Alex
1
@Alex 像 echristopherson 所说的那样:它在安装期间与特定版本的 openssl 相链接。请查看 python Brew Formula;在那里,您可以看到 openssl@1.1 公式的路径(brew 的前缀)被用作 arg,而 arg 又被用于 configure - einjohn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接