Entenda as dependências homebrew e apenas barril

120

Recentemente, comecei a usar homebrew e estou um pouco confuso sobre o que acontece quando eu preparo algo em meu sistema, mas suas dependências de fermentação são apenas barris, o que significa que estão vinculadas /usr/local.

Por exemplo, estou instalando vips (uma biblioteca de processamento de imagens). Uma de suas muitas dependências é o pixman. Pixman é instalado apenas como barril porque, aparentemente, o Mac OSX (Snow Leopard neste caso) já vem com ele (ou uma versão dele).

Isso significa que o vips usará a versão do sistema do pixman? Em caso afirmativo, não há problemas de versão em potencial relacionados ao uso da versão do sistema em vez da versão de dependência (assumindo que sejam diferentes)?

cgat
fonte

Respostas:

197

Para um software para ser "barril-only" significa que é instalado no /usr/local/Cellar, mas não ligado em lugares como /usr/local/bin, /usr/local/lib, etc. Isso significa que outro software que depende dele tem que ser compilado com instruções específicas para usar os arquivos /usr/local/Cellar. Isso é feito automaticamente brew installquando uma fórmula especifica dependências apenas para barris.

As fórmulas que especificam dependências apenas para barris garantem que as bibliotecas de sistema equivalentes não sejam usadas. A sua instalação do vips está vinculada a uma versão específica do pixman no /usr/local/Cellar/pixman/<version>, então não é afetada pela versão do sistema do pixman ou qualquer outra versão Homebrew do pixman que você possa instalar.

echristopherson
fonte
9
Boa explicação! Freqüentemente, você pode verificar com otool -L /usr/local/Cellar/vips/???/lib/*.dylibquais outras bibliotecas ele se vincula.
Samuel John
Eu tenho um openssl 1.0.2s instalado pelo homebrew e meu mac os tem LibreSSL 2.6.5 Quando eu faço openssl version, ele sempre mostra o do SO (LibreSSL), mas quando eu executo meu python no modo interativo, ele está realmente usando o openssl. Você pode me ajudar a entender como o python pegou o openssl correto? @echristopherson
Alex
1
@Alex Como echristopherson disse: Ele está vinculado a uma versão específica do openssl(durante a instalação). Dê uma olhada na pythonfórmula de fermentação ; lá você pode ver que o caminho (prefixo da bebida) da [email protected]fórmula é usado comoarg , que por sua vez é usado para configure.
einjohn