Hiểu sự phụ thuộc của homebrew và keg only


120

Gần đây tôi đã bắt đầu sử dụng homebrew và tôi hơi bối rối không biết điều gì sẽ xảy ra khi tôi pha một thứ gì đó vào hệ thống của mình, nhưng các phụ thuộc được ủ của nó là keg-only, nghĩa là chúng được liên kết với nhau /usr/local.

Ví dụ, tôi đang cài đặt vips (một thư viện xử lý hình ảnh). Một trong nhiều phụ thuộc của nó là pixman. Pixman được cài đặt dưới dạng keg-only vì dường như Mac OSX (trong trường hợp này là Snow Leopard) đã đi kèm với nó (hoặc một phiên bản của nó).

Điều này có nghĩa là vips sẽ sử dụng phiên bản hệ thống của pixman? Nếu vậy, không có vấn đề về lập phiên bản tiềm ẩn nào liên quan đến việc sử dụng phiên bản hệ thống hơn là phiên bản phụ thuộc (giả sử chúng khác nhau)?

Câu trả lời:


197

Đối với một phần mềm được "keg chỉ" có nghĩa là nó được cài đặt trong /usr/local/Cellarnhưng không liên kết vào những nơi như /usr/local/bin, /usr/local/libvv Đó là phương tiện phần mềm khác mà phụ thuộc vào nó phải được biên soạn với các hướng dẫn cụ thể để sử dụng các tập tin trong /usr/local/Cellar. Điều đó được thực hiện tự động brew installkhi một công thức chỉ định phụ thuộc keg-only.

Các công thức chỉ định phụ thuộc keg-only đảm bảo rằng các thư viện hệ thống tương đương không được sử dụng. Việc cài đặt vips của bạn được liên kết với một phiên bản pixman cụ thể /usr/local/Cellar/pixman/<version>, vì vậy nó không bị ảnh hưởng bởi phiên bản hệ thống của pixman hoặc bất kỳ phiên bản pixman nào khác của Homebrew mà bạn có thể cài đặt.


9
Lời giải thích hay! Bạn thường có thể kiểm tra otool -L /usr/local/Cellar/vips/???/lib/*.dylibxem nó liên kết với những lib nào khác.
Samuel John

Tôi đã cài đặt openssl 1.0.2 bằng homebrew và hệ điều hành mac của tôi có LibreSSL 2.6.5 Khi tôi làm vậy openssl version, nó luôn hiển thị một từ hệ điều hành (LibreSSL) nhưng khi tôi chạy python ở chế độ tương tác, nó thực sự đang sử dụng openssl. Bạn có thể giúp tôi hiểu cách python chọn đúng openssl không? @echristopherson
Alex

1
@Alex Giống như echristopherson đã nói: Nó được liên kết với một phiên bản cụ thể của openssl(trong khi cài đặt). Hãy xem pythonCông thức nấu bia ; ở đó bạn có thể thấy rằng đường dẫn (tiền tố của brew) của openssl@1.1công thức được sử dụng làm arg, đến lượt nó được sử dụng cho configure.
einjohn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.