酿酒医生 - "warning: unbrewed header files were found in /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

删除这些文件安全吗?解决此警告的最佳方法是什么?‏‏‏‏‏‏

看起来您安装curl和nodejs时没有使用自制软件。

你有两个选择:

  1. 除了永远记住这一点,别无选择,这样你就不会认为它们来自自制软件,也不会想知道自制软件为什么会抱怨
  2. 删除它们并从自制程序中安装nodejs和curl

1是一种简单的方法,直到它不是

我推荐#2,因为在未来,你可能会从依赖于curl和/或node的自制程序中安装一些东西,自制程序会尝试安装这些依赖项。从源代码构建时,可能会使用错误的头文件,并链接不匹配的库。这不是一个有趣的调试。

如果这些非自制的头文件是有原因的,并且你正在用它们编译软件,那么如果你需要的话,你可能可以把它们放回去。如果你不使用它们构建软件,那么你就不需要它们。现在就删除它们。

您可以跳过杂散标头检查,以便更容易地查看是否存在除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个警告:

警告:自制/自制核心未正确敲击!运行:rm-rf"/usr/local/Homebrew/Library/Taps/Homebrew/Homebrew-core";酿造龙头自制/核心

警告:在/usr/local/include中找到了未重写的头文件。如果你不是故意把它们放在那里,它们可能会在正在构建Homebrew公式,并且可能需要删除。

警告:某些抽头不在默认的git原点分支上,可能无法接收更新。如果这让您感到意外,请使用以下内容查看默认分支:git-C$(brew-repo-homebrew/core)结账主

我运行了这两个命令,它解决了问题:

> 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.*

最新更新