Homebrew医生报告说:“警告:/usr/local/include不可写。”

408

Brew doctor报告如下:

警告:/usr/local/include目录不可写。如果您“sudo make install”软件而该软件并非由Homebrew管理,则会发生这种情况。

如果brew尝试将头文件写入此目录,则在链接步骤期间安装将失败。

您应该使用chown命令更改/usr/local/include目录的所有者。

我已经尝试了不同的命令来解决这个问题,但我仍然卡在这里。

我正在10.8.2上运行homebrew。


1
我在Homebrew 0.9.4中的"/usr/local/lib"也遇到了类似的错误,不过以下解决方案也同样解决了该问题。 - Well Actually
19个回答

7

请为我工作

$ sudo chown -R $(whoami):admin /usr/local

$ cd /usr/local/Library && git stash && git clean -d -f

5

在 MacOS 10.13 上出现了同样的错误。

/usr/local/include/usr/local/ /usr/lib 没有被创建。我手动创建了这些目录并且 brew link 最终起作用了。


4

当我在计算机上有多个用户时,以下方法适用于我。

使用终端:

  • 运行brew doctor
    • 看到多个/usr/local/...无法写入的错误
  • 禁用Mac的系统完整性保护:https://apple.stackexchange.com/a/208481/55628
  • 运行以下命令
  • sudo chown -R $(whoami) /usr/local/*
  • brew doctor && brew upgrade && brew doctor

运行Macbook Pro OSX High Sierra(版本10.13.3)。

编辑1:

请注意,这会导致在MAC上运行MySQL出现问题。

为了能够启动我的本地服务器,我必须运行:

sudo chown -R mysql:mysql /usr/local/mysql/data

运行此命令后,您可以启动本地MySQL服务器。


1
太好了!谢谢你! - shmuli

3

如果它们不存在,您需要创建 /usr/local/include 和 /usr/local/lib:

$ sudo mkdir -p /usr/local/include
$ sudo chown -R $USER:admin /usr/local/include

3
sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin

sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin

这将创建所有必需的目录并给它正确的所有权。

运行这些命令后,请使用:brew doctor 进行检查。

此方法适用于Mojave。


2

您需要掌控整个 /usr/local 目录,为此您需要在 /usr/local 下递归执行 chown 命令。

sudo chown -R YOUR_USERNAME:admin /usr/local/


2
我只是想附和sam9046的谦虚评论,作为一种替代方案和可能更简单的解决方法,在我的情况下起作用:从头开始卸载重新安装homebrew。不需要sudo命令。
如果您需要确保它不会影响您以前安装的软件包,您还可以浏览/修改上面链接中的卸载脚本。在我的情况下,这只是我的家用电脑,所以我重新开始了。

请参见 https://github.com/Homebrew/brew/issues/3665#issuecomment-357175220。 - Johnathan J.

1
进入/bin目录并输入以下命令:

chown -R $(whoami):admin /usr/local/bin


1
我所在的组织将所有用户绑定到活动目录后(有效地将UID从50x更改为######),我遇到了这种情况。
现在只需更改所有文件的所有权,这些文件原来归x所有,现在应该归y所有。
501是我的旧数值用户ID,仍与所有homebrew文件相关联。
可以使用ll /usr/local/Cellar找到旧的用户ID。
现在更新所有权:sudo find /usr/local -user 501 -exec chown -h $USER {} \; 这样,我们就避免了更改不受homebrew控制或属于其他系统用户的文件所有权。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接