Brew doctor - “попередження: файли заголовків, які не були створені, були знайдені в / usr / local / include”?


77

Коли я запускаю brew doctor, виникає така помилка

Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected header files:
    /usr/local/include/curl/curl.h
    /usr/local/include/curl/curlbuild.h
    /usr/local/include/curl/curlrules.h
    /usr/local/include/curl/curlver.h
    /usr/local/include/curl/easy.h
    /usr/local/include/curl/mprintf.h
    /usr/local/include/curl/multi.h
    /usr/local/include/curl/stdcheaders.h
    /usr/local/include/curl/typecheck-gcc.h
    /usr/local/include/node/ares.h
    /usr/local/include/node/ares_version.h
    /usr/local/include/node/nameser.h
    /usr/local/include/node/node.h
    /usr/local/include/node/node_buffer.h
    /usr/local/include/node/node_internals.h
    /usr/local/include/node/node_object_wrap.h
    /usr/local/include/node/node_version.h
    /usr/local/include/node/openssl/opensslconf.h
    /usr/local/include/node/uv-private/ngx-queue.h
    /usr/local/include/node/uv-private/stdint-msvc2008.h
    /usr/local/include/node/uv-private/tree.h
    /usr/local/include/node/uv-private/uv-bsd.h
    /usr/local/include/node/uv-private/uv-darwin.h
    /usr/local/include/node/uv-private/uv-linux.h
    /usr/local/include/node/uv-private/uv-sunos.h
    /usr/local/include/node/uv-private/uv-unix.h
    /usr/local/include/node/uv-private/uv-win.h
    /usr/local/include/node/uv.h
    /usr/local/include/node/v8-debug.h
    /usr/local/include/node/v8-preparser.h
    /usr/local/include/node/v8-profiler.h
    /usr/local/include/node/v8-testing.h
    /usr/local/include/node/v8.h
    /usr/local/include/node/v8stdint.h
    /usr/local/include/node/zconf.h
    /usr/local/include/node/zlib.h

Чи безпечно видалити ці файли? Який оптимальний спосіб вирішити це попередження?

Відповіді:


78

Схоже, ви встановили curl і nodejs, не використовуючи доморощену мову.

У вас є два варіанти:

  1. Нічого не робіть, крім того, щоб пам’ятати це назавжди, щоб ви не думали, що вони походять з доморощеного, і не дивувались, чому доморощенський скаржиться.
  2. Видаліть їх і встановіть nodejs і curl з домашньої писемності.

1 - це простий спосіб, поки це не так.

Я рекомендую №2, оскільки, швидше за все, у майбутньому ви встановите щось із homebrew, яке залежить від curl та / або вузла, і homebrew спробує встановити ці залежності. При побудові з вихідного коду можуть використовуватися неправильні заголовки та невідповідність бібліотек, які зв’язуються. Це не цікаво налагоджувати.

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


Нещодавно я почав розробляти NodeJS, який я встановив через пакувальний двійковий файл на сайті nodejs.org. Я не пам’ятаю, щоб явно встановлював Curl, але це було б корисно мати. Якщо я видалю свій nodejs і перевстановлю його через Homebrew, це щось зламає чи це буде чистий обмін?
T_Conroy

Це має спрацювати. Спробуй це. Якщо це не спрацює, ви можете скопіювати ці заголовки назад або переінсталювати упакований двійковий файл. Якщо це допоможе, я можу підтвердити, що у мене є вузол з доморощеної мови і ці заголовки там є. У мене немає завивки від доморощеного або тих заголовків для завивки.
jrwren

Я думаю, проблема полягає в тому, що я оновив curl з двійковими файлами з домашньої сторінки curl, і він розмістив ці заголовки тут. Чи є спосіб сказати Брюві ігнорувати їх? Натомість я спробував встановити curl через homebrew, але, здається, не можу встановити curl для заварювання як "за замовчуванням", зміни шляху не мали ефекту,
T_Conroy

@Prefix Немає способу сказати homebrew ігнорувати їх. Якщо ви не компілюєте ці заголовки для завивки, їх можна безпечно видалити. Ви можете встановити закручування за замовчуванням, переконавшись, що / usr / local / bin знаходиться у вашому шляху перед / usr / bin. Див stackoverflow.com/a/10343891/16998
jrwren

1
@Prefix чи варив лікар коли-небудь скаржився на /usr/local/lib/libcurl.4.dylib? Я здогадуюсь, що це залишилось із двійкового пакету домашньої сторінки curl. ls -l /usr/local/lib/libcurl.4.dylib повинен показати, що це символьне посилання. Якщо це не символічне посилання, то, швидше за все, з пакета домашньої сторінки curl. Якщо це символьне посилання, то з цим пакетом щось не так. Крім того, подивіться на результат otool -L /usr/local/bin/curl. Він повинен пов'язувати libcurl.4.dylib з Cellar / curl ..., а не з / usr / local / lib. Спробуйте заварити завивку; rm / usr / local / bin / curl; заварювальна ланка - сила завитки.
jrwren

6

Ви можете пропустити перевірку збитого заголовка, щоб полегшити перевірку, чи існують інші проблеми, крім node / npm, які погано грають з homebrew

brew doctor `brew doctor --list-checks | grep -v stray_headers`

Приємно, дякую! Я використовував версію, яка також ігнорує несподівані диліби та статичні ліби, а не просто включає:brew doctor $(brew doctor --list-checks | grep -vE 'check_for_stray_(dylibs|static_libs|headers)')
вальдирний

3

Можливо, залишити ці файли на місці, якщо ви не зіткнетеся з проблемами збірки чи зв’язку з іншими формулами Homebrew; brew doctorрезультат є дорадчим, а не нормативним.

Якщо ви не вважаєте, що у вас є причина будувати версії curl або node в / usr / local, ви можете видалити ці заголовкові файли; Ви завжди можете перевстановити останню версію пізніше за допомогою Homebrew.


-11

Це рішення спрацювало для мене!

sbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom | while read f; do  sudo rm /usr/local/${f}; done

sudo rm -rf /usr/local/lib/node /usr/local/lib/node_modules /var/db/receipts/org.nodejs.*

Я вважаю це рішення дуже страшним. Я зробив коментар детально, але не помітив, що це рішення скопійовано з відповіді на інше питання, тому я переніс свій коментар туди.
Дон Хетч,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.