Pahami dependensi homebrew dan keg-only

120

Saya baru-baru ini mulai menggunakan homebrew, dan saya agak bingung dengan apa yang terjadi ketika saya menyeduh sesuatu ke sistem saya, tetapi dependensi yang diseduh hanya berupa tong, artinya mereka ditautkan di bawah /usr/local.

Misalnya, saya menginstal vips (perpustakaan pemrosesan gambar). Salah satu dari banyak dependensinya adalah pixman. Pixman dipasang sebagai tong-saja karena tampaknya Mac OSX (dalam hal ini Snow Leopard) sudah disertakan (atau versinya).

Apakah ini berarti vips akan menggunakan versi sistem dari pixman? Jika demikian, tidakkah ada potensi masalah pembuatan versi yang terkait dengan penggunaan versi sistem daripada versi ketergantungan (dengan asumsi mereka berbeda)?

cgat
sumber

Jawaban:

197

Untuk perangkat lunak untuk menjadi "tong-satunya" berarti sudah terpasang di /usr/local/Cellartetapi tidak dihubungkan ke tempat-tempat seperti /usr/local/bin, /usr/local/lib, dll Itu berarti perangkat lunak lain yang bergantung pada itu harus disusun dengan petunjuk khusus untuk menggunakan file dalam /usr/local/Cellar. Itu dilakukan secara otomatis brew installsaat rumus menentukan dependensi khusus tong.

Rumus yang menentukan dependensi khusus keg memastikan bahwa pustaka sistem yang setara tidak digunakan. Instalasi vips Anda ditautkan dengan versi tertentu dari pixman /usr/local/Cellar/pixman/<version>, jadi tidak terpengaruh oleh versi sistem dari pixman atau versi Homebrew dari pixman yang mungkin Anda pasang.

echristopherson
sumber
9
Penjelasan yang bagus! Anda sering dapat memeriksa dengan otool -L /usr/local/Cellar/vips/???/lib/*.dylibuntuk melihat libs lain mana yang ditautkan.
Samuel John
Saya memiliki opensl 1.0.2s yang diinstal oleh homebrew dan mac os saya memiliki LibreSSL 2.6.5. Ketika saya melakukannya openssl version, itu selalu menunjukkan salah satu dari os (LibreSSL) tetapi ketika saya menjalankan python saya dalam mode interaktif, itu sebenarnya menggunakan openssl. Dapatkah Anda membantu saya memahami bagaimana python mengambil openssl yang benar? @echristopherson
Alex
1
@ Alex Seperti echristopherson mengatakan: Hal ini terkait terhadap versi tertentu dari openssl(selama instalasi). Lihat pythonFormula Brew ; di sana Anda dapat melihat bahwa jalur (awalan minuman) [email protected]rumus digunakan sebagai arg, yang pada gilirannya digunakan untuk configure.
einjohn