Brew doctor - "предупреждение: файлы непареных заголовков были найдены в /usr/local/include"?

Когда я бегу 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

Будет ли безопасно удалить эти файлы? Каков оптимальный способ устранить это предупреждение?

6 ответов

Решение

Похоже, вы установили curl и nodejs без использования homebrew.

У вас есть два варианта:

  1. Ничего не делайте, кроме как помните это навсегда, так что вы не думаете, что они из доморощенного, и удивляетесь, почему доморощенный жалуется.
  2. Удалите их и установите nodejs и curl из homebrew.

1 - это простой способ, пока это не так.

Я рекомендую #2, потому что, скорее всего, в будущем вы будете устанавливать что-то из homebrew, что зависит от curl и / или узла, и homebrew попытается установить эти зависимости. При сборке из исходного кода могут быть использованы неправильные заголовки и не соответствовать библиотекам, которые связаны. Это не весело для отладки.

Если эти заголовочные файлы не являются доморощенными по какой-то причине, и вы собираете с ними программное обеспечение, то вы, вероятно, сможете вернуть их обратно, если они вам понадобятся. Если вы не создаете программное обеспечение с ними, тогда они вам не нужны. Идите и удалите их сейчас.

Вы можете пропустить проверку блуждающих заголовков, чтобы было легче увидеть, есть ли другие проблемы, кроме node/npm, которые плохо играют с homebrew

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

Может быть безопасно оставить эти файлы на месте, если только у вас не возникнут проблемы со сборкой или связью с другими формулами Homebrew; brew doctor вывод носит рекомендательный, а не нормативный характер.

Если вы не думаете, что у вас есть причина для сборки против версий curl или node в / usr / local, вы можете удалить эти заголовочные файлы; Вы всегда можете переустановить последнюю версию позже с Homebrew.

Я бы скопировал их в файл ( tmpKill), а затем запустите:

      xargs -0 -n 1 rm -rf < <(tr \\n \\0 <tmpKill)

Это позволяет легко убить их всех. Самая левая команда генерирует набор строк, на которых выполняется команда (которая удаляет файлы). В -n директива гарантирует, что команда ( rm -rf) запускается только один раз для каждой записи.

У меня была такая же ошибка сегодня (19 ноября 2021 г.), и я узнал об этом обсуждении на GitHub, которое помогло ее исправить. https://github.com/Homebrew/discussions/discussions/1512

На самом деле я получил 3 предупреждения:

Предупреждение: Homebrew/homebrew-core не был задействован должным образом! Выполнить: rm -rf "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" brew tap homebrew/core

Предупреждение: в /usr/local/include обнаружены незаваренные заголовочные файлы. Если вы не поместили их туда намеренно, они могут вызвать проблемы при построении формул Homebrew, и, возможно, их придется удалить.

Предупреждение: некоторые краны не находятся в исходной ветке git по умолчанию и могут не получать обновления. Если это для вас неожиданно, проверьте ветку по умолчанию с помощью: git -C $(brew --repo homebrew/core) checkout master

Я выполнил эти 2 команды, и это решило проблему:

      > rm -rf "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core"
> brew tap homebrew/core

Это решение сработало для меня!

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.*
Другие вопросы по тегам