Verstehen Sie die Abhängigkeiten von Homebrew und Fass

118

Ich habe vor kurzem angefangen, Homebrew zu verwenden, und ich bin etwas verwirrt darüber, was passiert, wenn ich etwas auf mein System brühe, aber die gebrauten Abhängigkeiten sind nur im Fass, was bedeutet, dass sie unter verknüpft sind /usr/local.

Zum Beispiel installiere ich vips (eine Bildverarbeitungsbibliothek). Eine der vielen Abhängigkeiten ist pixman. Pixman wird nur als Fass installiert, da anscheinend Mac OSX (in diesem Fall Snow Leopard) bereits mit (oder einer Version davon) ausgeliefert wird.

Bedeutet dies, dass vips die Systemversion von pixman verwenden? Wenn ja, gibt es nicht potenzielle Versionsprobleme im Zusammenhang mit der Verwendung der Systemversion und nicht der Abhängigkeitsversion (vorausgesetzt, sie unterscheiden sich)?

cgat
quelle

Antworten:

195

Für eine Software „Fass-only“ Mittel zu sein , ist es installiert in , /usr/local/Cellaraber nicht in Orten wie verknüpft /usr/local/bin, /usr/local/libusw. Das bedeutet andere Software, die auf sie mit spezifischen Anweisungen kompiliert werden muss , hängt die Dateien zu verwenden /usr/local/Cellar. Dies geschieht automatisch, brew installwenn eine Formel Abhängigkeiten nur für Fässer angibt.

Formeln, die nur Keg-Abhängigkeiten angeben, stellen sicher, dass die entsprechenden Systembibliotheken nicht verwendet werden. Ihre Installation von vips ist mit einer bestimmten Version von pixman in verknüpft /usr/local/Cellar/pixman/<version>, sodass sie nicht von der Systemversion von pixman oder anderen Homebrew-Versionen von pixman beeinflusst wird, die Sie möglicherweise installieren.

Echristopherson
quelle
9
Gute Erklärung! Sie können häufig mit überprüfen, mit otool -L /usr/local/Cellar/vips/???/lib/*.dylibwelchen anderen Bibliotheken es verknüpft ist.
Samuel John
Ich habe eine openssl 1.0.2s von Homebrew installiert und mein Mac OS hat LibreSSL 2.6.5. Wenn ich das tue openssl version, wird immer die von OS (LibreSSL) angezeigt, aber wenn ich meine Python im interaktiven Modus ausführe, wird tatsächlich openssl verwendet. Können Sie mir helfen zu verstehen, wie Python das richtige openssl aufgenommen hat? @echristopherson
Alex
1
@Alex Wie echristopherson sagte: Es ist mit einer bestimmten Version von openssl(während der Installation) verknüpft . Schauen Sie sich die pythonBrew Formula an . Dort können Sie sehen, dass der Pfad (das Präfix des Gebräus) der [email protected]Formel als verwendet wird arg, für den wiederum verwendet wird configure.
Einjohn