Zrozum zależności homebrew i tylko keg

120

Niedawno zacząłem używać homebrew i jestem trochę zdezorientowany, co się dzieje, gdy warzę coś w moim systemie, ale jego warzone zależności są tylko beczkami, co oznacza, że ​​są połączone w ramach /usr/local.

Na przykład instaluję vips (bibliotekę przetwarzania obrazów). Jedną z wielu zależności jest pixman. Pixman jest instalowany tylko jako beczka, ponieważ najwyraźniej Mac OSX (w tym przypadku Snow Leopard) jest już dostarczany z nim (lub jego wersją).

Czy to oznacza, że ​​VIP-y będą używać systemowej wersji Pixmana? Jeśli tak, czy nie ma potencjalnych problemów z wersjonowaniem związanych z używaniem wersji systemu, a nie wersji zależności (zakładając, że są różne)?

cgat
źródło

Odpowiedzi:

198

Za oprogramowanie jako „beczka-only” oznacza, że jest zainstalowany /usr/local/Cellar, ale nie wiąże się w miejscach takich jak /usr/local/bin, /usr/local/libitp Oznacza inne oprogramowanie, które zależy to musi być skompilowany ze specyficznymi instrukcjami wykorzystują pliki /usr/local/Cellar. Dzieje się to automatycznie, brew installgdy formuła określa zależności dotyczące tylko beczek.

Formuły określające zależności dotyczące tylko beczek zapewniają, że nie są używane równoważne biblioteki systemowe. Twoja instalacja vips jest połączona z konkretną wersją pixman w /usr/local/Cellar/pixman/<version>, więc nie ma na nią wpływu wersja systemu pixman ani żadna inna wersja pixman Homebrew, którą możesz zainstalować.

echristopherson
źródło
9
Dobre wytłumaczenie! Często możesz sprawdzić, z otool -L /usr/local/Cellar/vips/???/lib/*.dylibktórymi innymi bibliotekami się łączy.
Samuel John
Mam zainstalowany openssl 1.0.2s przez homebrew, a mój Mac OS ma LibreSSL 2.6.5 Kiedy to robię openssl version, zawsze pokazuje ten z systemu operacyjnego (LibreSSL), ale kiedy uruchamiam mojego Pythona w trybie interaktywnym, w rzeczywistości używa on openssl. Czy możesz mi pomóc zrozumieć, w jaki sposób Python wybrał poprawny plik openssl? @echristopherson
Alex
1
@Alex Jak echristopherson powiedział: To jest związany przeciwko konkretnej wersji z openssl(podczas instalacji). Spójrz na pythonformułę parzenia ; tam widać, że ścieżka (przedrostek naparu) [email protected]formuły jest używana jako arg, która z kolei jest używana do configure.
einjohn