当我运行
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
删除这些文件安全吗?解决此警告的最佳方法是什么?u200fu200fu200fu200fu200fu200f
看起来你安装了curl和nodejs而没有使用homebrew。
您有两个选择:
我推荐#2,因为将来您可能会从自制程序安装依赖于curl和/或节点的东西,并且自制程序将尝试安装这些依赖项。从源代码构建时,可能会使用错误的标头并且链接的库不匹配。调试起来并不有趣。
如果这些非自制头文件的存在是有原因的,并且您正在使用它们编译软件,那么如果您需要它们,您可能可以将它们放回去。如果您不使用它们构建软件,那么您就不需要它们。现在就删除它们吧。
您可以跳过杂散标头检查,以便更轻松地查看是否存在除 Node/npm 无法与自制程序良好配合之外的问题
brew doctor `brew doctor --list-checks | grep -v stray_headers`
保留这些文件可能是安全的,除非您遇到其他 Homebrew 公式的构建或链接问题;
brew doctor
输出是建议性的,而不是规范性的。
如果您认为没有理由针对 /usr/local 中的curl 或node 版本进行构建,则可以删除这些头文件;您可以随时使用 Homebrew 重新安装最新版本。
我会将它们复制到一个文件中(
tmpKill
),然后运行:
xargs -0 -n 1 rm -rf < <(tr \\n \\0 <tmpKill)
这使得杀死他们变得很容易。最左边的命令生成一组运行
rm -rf
命令(删除文件)的行。 -n
指令确保命令 (rm -rf
) 每个条目仅运行一次。
我今天(2021 年 11 月 19 日)遇到了同样的错误,我在 GitHub 上发现了这个讨论,这有助于修复它。 https://github.com/Homebrew/discussions/discussions/1512
我实际上收到了 3 个警告:
警告:Homebrew/homebrew-core 未正确利用!跑步: rm -rf“/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core” 酿造水龙头自制/核心
警告:在 /usr/local/include 中发现未编译的头文件。 如果您不是故意将它们放在那里,那么它们可能会导致问题 构建 Homebrew 公式,可能需要删除。
警告:某些点击不在默认的 git origin 分支上,可能收不到 更新。如果这让您感到惊讶,请使用以下命令检查默认分支: git -C $(brew --repo homebrew/core) checkout master
我运行了这两个命令,它解决了问题:
> rm -rf "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core"
> brew tap homebrew/core
我自己也遇到了这个问题,这是帮助我的解决方案:https://stackoverflow.com/a/77863320/9024807
这个解决方案对我有用!
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.*