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个回答

809

承担起它及其中所有的责任。

Mac OS High Sierra 或更新版本:(感谢下面评论区的 Kirk)

$ sudo chown -R $(whoami) $(brew --prefix)/*

macOS 的早期版本:

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

然后再做另一个。

$ brew doctor

15
操作不允许? - topwik
69
使用 $ sudo chown -R \whoami` /usr/local/` 命令的任何优势? - Labu
2
@WillemLabu 少一个进程分叉?whoami 是有效用户 ID,正如 man 页面所说的那样已经过时了 :) bash 是 OSX 上的默认 shell,并且某个地方正在设置 USER。 - jrwren
7
将 /usr/local 的所有权更改为用户是否是一个干净的解决方案,这让我感到好奇。将 $USER 添加到 "wheel" 组中会不会更好?或者将 /usr/local 的组更改为管理员组? - Michael Lehn
16
根据Homebrew的说法,在Mac OS High Sierra中,chown /usr/local已经不再起作用了。取而代之的是,使用命令 sudo chown -R $(whoami) $(brew --prefix)/* - Kirk Hammett
显示剩余15条评论

123

对我有效的是

sudo chmod g+w /usr/local
sudo chgrp staff /usr/local

24
这是唯一明智的修复方法,在多用户操作系统中占有 /usr/local 不是一个真正明智的选择。 - Alexander Torstling
4
需要给这个家伙一些投票!;) 这个方法非常有效。 - jrista
3
在我看来,这是更好的解决方案。 - jacurtis
9
在 High Sierra 上不行。"无法更改 /usr/local 的文件模式:操作不允许。" - user980018
1
@user980018 我也遇到了同样的问题 - 这是我使用的解决方法。 - Casey Davidson

40

适合我的方法是

$ sudo chown -R yourname:admin /usr/local/bin

39

在El Capitan上,唯一对我有效的是:

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

8
chown: /usr/local: 操作不允许。 - AlxVallejo
1
@AlxVallejo 在 /usr/local/bin 上操作对我有效。 - marcotama
1
对于现在正在阅读的任何人:如果在Big Sur上使用sudo chown -R $(whoami) /usr/local时出现错误,请尝试sudo chown -R $(whoami) /usr/local/include。 - Evan Baldonado
为什么你想这样做呢?这些文件应该是属于root和管理员组的,而不是你的本地用户。 - undefined

27

如果您使用的是High Sierra并且遇到此问题,请按照以下步骤操作(注意:在High Sierra中无法更改/usr/local的所有者):

sudo mkdir /usr/local/include
sudo chown -R $(whoami) $(brew --prefix)/*

那么尝试使用 brew link 进行链接。我遇到了类似的问题,上面的解决方案都无法在 High Sierra 上工作。希望这能帮助到有需要的人。


1
我尝试了很多次。Brew doctor告诉我那个目录丢失了。你的答案帮助了我,现在我能够完成工作了。谢谢。 Mac用户,请尝试这个。 - Sankara Narayanan

24

对于High Sierra:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后,尝试使用您的brew命令。

问题#3285


4
不确定为什么这个被踩了,如果你之前已经安装了brew并升级到High Sierra,重新安装Homebrew可以解决这个问题。这是最简单的方法。 - sam9046
具有讽刺意味的是,这是因为该脚本正好执行了其他答案所建议的操作。 - Lightness Races in Orbit
这对我有用,但我首先使用以下命令卸载了之前的程序:ruby -e“$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)” - abbas

12
您可以将该命令设置为别名并添加到您的.bash_profile文件中,每次遇到此问题时运行它:
~/.bash_profile文件末尾添加:
alias fix_brew='sudo chown -R $USER /usr/local/'

现在在您的终端中可以运行:

$ fix_brew

12

这个方法适用于我在macOS 10.12上的情况:

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

我在更新homebrew时遇到了以下错误:

/usr/local is not writable. You should change the ownership
and permissions of /usr/local back to your user account:
  sudo chown -R $(whoami) /usr/local

9

首先,您需要创建目录:

sudo mkdir /usr/local/include

第二点:

sudo chown -R $(whoami) $(brew --prefix)/*

8

对于一些人来说,这将是:

sudo chown -R JonJames:admin /usr/local/lib

其中“lib”是用来代替“bin”、“include”或其他内容的

Homebrew的警告“应该”解释哪些具体内容不可写,并给出一个命令语法供您遵循,但是您需要使用“:”而不是警告中提到的实际上不正确的语法??


警告中的语法有点令人困惑,我认为。我给Homebrew的主要贡献者发了电子邮件,询问他们是否会对此进行任何更改,正在等待回复。也许在未来的brew更新中,警告的措辞会发生变化。 - Jonathan James
谢谢!在大量搜索后,这个方法终于奏效了。 - thiswayup

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