Зрозумійте залежності доморощених та кег


120

Нещодавно я почав використовувати домашню капусту, і я трохи розгублений, що відбувається, коли я щось заварюю в моїй системі, але її заварені залежності є лише кегами, це означає, що вони пов'язані під /usr/local.

Наприклад, я встановлюю vips (бібліотека обробки зображень). Однією з численних її залежностей є піксман. Pixman встановлюється як кег, тому що, мабуть, Mac OSX (Snow Leopard в даному випадку) вже поставляється з ним (або його версією).

Чи означає це, що vips використовуватиме системну версію pixman? Якщо так, то чи не існують потенційні проблеми з версіями, пов’язані з використанням версії системи, а не версії залежності (якщо припустити, що вони різні)?

Відповіді:


197

Для програмного забезпечення , щоб бути «бочонок тільки» означає , що він встановлений в /usr/local/Cellarале НЕ пов'язані в таких місцях , як /usr/local/bin, /usr/local/libі т.д. Це означає інше програмне забезпечення , яке залежить від того, він повинен бути скомпільовано з конкретними інструкціями по використанню файлів в /usr/local/Cellar. Це робиться автоматично, brew installколи формула вказує залежності, які стосуються лише кег.

Формули, які задають залежності лише від кег, гарантують, що еквівалентні системні бібліотеки не використовуються. Ваша установка vips пов'язана з певною версією pixman в /usr/local/Cellar/pixman/<version>, тому на неї не впливає системна версія pixman або будь-які інші версії pixman, які ви можете встановити.


9
Гарне пояснення! Ви можете часто otool -L /usr/local/Cellar/vips/???/lib/*.dylibзвертатися до того, щоб побачити, на які інші лісти він посилається.
Самуель Джон

У мене встановлено openssl 1.0.2s homebrew, і у мого mac os є LibreSSL 2.6.5 Коли я це роблю openssl version, він завжди показує файл від os (LibreSSL), але коли я запускаю python в інтерактивному режимі, він фактично використовує openssl. Чи можете ви допомогти мені зрозуміти, як пітон підібрав правильний openssl? @echristopherson
Алекс

1
@Alex Як echristopherson сказав: Це пов'язано з певною версією з openssl(під час установки). Погляньте на pythonформулу Brew ; там ви бачите, що шлях (префікс пива) openssl@1.1формули використовується як arg, для чого, в свою чергу, використовується configure.
einjohn
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.