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.
У вас есть два варианта:
- Ничего не делайте, кроме как помните это навсегда, так что вы не думаете, что они из доморощенного, и удивляетесь, почему доморощенный жалуется.
- Удалите их и установите 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.*