Brew Doctor 说:“警告:/usr/local/include 不可写。”

Posted

技术标签:

【中文标题】Brew Doctor 说:“警告:/usr/local/include 不可写。”【英文标题】:Brew doctor says: "Warning: /usr/local/include isn't writable." 【发布时间】:2013-01-09 18:06:05 【问题描述】:

酿酒医生说:

警告:/usr/local/include 不可写。如果您“sudo make install”不是由 Homebrew 管理的软件,就会发生这种情况。

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

你可能应该chown /usr/local/include

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

我在 10.8.2 上运行自制软件

【问题讨论】:

我在 Homebrew 0.9.4 中遇到了类似的“/usr/local/lib”错误,下面的解决方案也解决了这个错误。 【参考方案1】:

拥有它以及其中的一切。

Mac OS High Sierra 或更新版本:(在下面的 cmets 中与 Kirk 相关)

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

以前版本的macos:

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

然后再做一个

$ brew doctor

【讨论】:

不允许操作? $ sudo chown -R `whoami` /usr/local/相比有什么优势吗? @WillemLabu 少一个进程分叉? whoami 是有效的用户 ID,正如手册页所说的那样已经过时了 :) bash 是 OSX 上的默认 shell,并且 USER 正在某个地方设置。 我想知道将 /usr/local 的所有权更改为用户是否是一个干净的解决方案。将 $USER 添加到“wheel”组不是更好吗?还是把/usr/local的组改成admin组? 根据 Mac OS High Sierra 中的Homebrew chown /usr/local 不再起作用。而是使用sudo chown -R $(whoami) $(brew --prefix)/*【参考方案2】:

对我有用的是

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

【讨论】:

【参考方案3】:

在我们的所有用户都绑定到活动目录之后,我的组织中发生了这种情况(实际上将 UID 从 50x 更改为 ######)。

现在只需将 x 拥有的所有文件的所有权更改为 y。

其中 501 是我的旧数字用户 ID,它仍然与所有自制文件相关联。

可以使用ll /usr/local/Cellar找到旧用户ID

现在更新所有权 sudo find /usr/local -user 501 -exec chown -h $USER \;

这样我们可以避免更改不受自制软件控制或属于其他系统用户的文件的所有权。

【讨论】:

【参考方案4】:

您可以在.bash_profile 中为修复此问题的命令设置别名,并在每次遇到它时运行它:

在文件~/.bash_profile末尾添加:

alias fix_brew='sudo chown -R $USER /usr/local/'

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

$ fix_brew

【讨论】:

【参考方案5】:

为我工作

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

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

【讨论】:

【参考方案6】:

对我也有用

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

【讨论】:

这是唯一合理的解决方法,在多用户操作系统中获取 /usr/local 的所有权并不是很合理 需要给这个家伙一些选票! ;) 效果很好。 恕我直言,这是更好的解决方案 嗯,不在高山脉。 “无法更改 /usr/local 上的文件模式:不允许操作” @user980018 我刚刚遇到了同样的事情 - 这是workaround I used【参考方案7】:

对于某些人来说,它会是:

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

其中使用“lib”,而不是“bin”、“include”或“其他”

Homebrew 警告“应该”解释什么具体是不可写的,然后给你一个跟随的命令语法,但是你需要使用“:”而不是警告提到的实际上是不正确的语法??

【讨论】:

我相信,警告中的语法有点令人困惑,我给 Homebrew 的主要贡献者发了电子邮件,询问他们是否会改变它,等待回复,也许警告的措辞会在未来的 brew 更新中改变.. 谢谢!经过大量搜索后,这才奏效。【参考方案8】:

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

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

【讨论】:

chown: /usr/local: 不允许操作 @AlxVallejo 在 /usr/local/bin 上为我工作【参考方案9】:

这在 ma​​cOS 10.12

上对我有用

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

我在更新自制软件时遇到了以下错误:

/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

【讨论】:

【参考方案10】:

您需要控制整个/usr/local 才能做到这一点,您需要在/usr/local 下执行递归chown

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

【讨论】:

【参考方案11】:

MacOS 10.13 上同样的错误

/usr/local/include/usr/local/ /usr/lib 未创建。我手动创建,brew link 终于成功了。

【讨论】:

【参考方案12】:

对于高山脉:

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

然后,试试你的 brew 命令。

Issue #3285

【讨论】:

不知道为什么这被否决了,如果您之前安装了 brew 并升级到 High Sierra,重新安装 Homebrew 可以解决问题。这是最简单的方法 具有讽刺意味的是,这是因为脚本完全按照其他答案的建议行事。 这对我有用,但首先我卸载了以前的使用: ruby​​ -e "$(curl -fsSL raw.githubusercontent.com/Homebrew/install/master/uninstall)"【参考方案13】:

什么对我有用,而我的计算机上有多于个用户。

使用终端:

正在运行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 服务器。

【讨论】:

太棒了!谢谢!【参考方案14】:

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

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

【讨论】:

【参考方案15】:

如果您使用 High Sierra 并遇到此问题,请按照以下步骤操作(注意:/usr/local 不能在 High Sierra 中更改):

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

然后尝试使用 brew link 进行链接。我遇到了类似的问题,上面的解决方案都不适用于 High Sierra。希望这对某人有所帮助。

【讨论】:

【参考方案16】:

进入 /bin 目录并输入:

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

【讨论】:

【参考方案17】:
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

这适用于莫哈韦沙漠。

【讨论】:

【参考方案18】:

我只想回应 sam9046 的谦虚评论作为替代方案,并且可能更简单的解决方案适用于我的案例:uninstall 和 install 再次从头开始自制。不需要 sudo 命令。

如果您需要确保它不会影响您之前安装的软件包,您还可以通过上面的链接浏览/修改卸载脚本。就我而言,这只是我的家用机器,所以我才重新开始。

【讨论】:

见github.com/Homebrew/brew/issues/3665#issuecomment-357175220【参考方案19】:

首先你需要创建目录:

sudo mkdir /usr/local/include

第二:

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

【讨论】:

以上是关于Brew Doctor 说:“警告:/usr/local/include 不可写。”的主要内容,如果未能解决你的问题,请参考以下文章

运行 Brew Doctor 时的主要警告

Homebrew brew doctor 关于 /Library/Frameworks/Python.framework 的警告,即使安装了 brew 的 Python

如何修复 brew doctor 警告

appium---MacAppium-Doctor提示WARN:“ ios_webkit_debug_proxy cannot be found”解决方案

Flutter Doctor,Android 许可证状态未知

Flutter Doctor(不正确?)报告未安装 Android Studio Flutter 插件