在多用户Mac上,Watchman的Homebrew权限问题

13

我在我的Macbook Pro上有两个用户,一个用于工作,另一个用于个人使用。

我在两个用户上都安装了React Native,并安装了react native cli和watchman:

brew install watchman

sudo npm install -g react-native-cli

这个过程很顺利,我能够使用npm start启动本地服务器。

但是,在另一个用户上操作时,由于权限问题无法使用homebrew安装watchman。我输入了以下命令:

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

问题解决了。我可以再次启动本地开发服务器。


但是,当我回到之前的用户时,我再也无法启动服务器了。当我运行npm start时,出现以下错误:

Loading dependency graph...libc++abi.dylib: terminating with uncaught exception of type std::__1::system_error: open: /usr/local/var/run/watchman/yev-state: Permission denied

Watchman: watchman --no-pretty get-sockname returned with exit code=null, signal=SIGABRT, stderr= libc++abi.dylib: terminating with uncaught exception of type std::__1::system_error: open: /usr/local/var/run/watchman/yev-state: Permission denied

我尝试再次运行sudo chown -R $(whoami):admin $(brew --prefix)/*,但这次并没有解决问题。

我还查阅了如何为多用户mac配置Homebrew并找到了这篇简短的文章

我创建了一个名为“brew”的用户组,将我的工作和个人用户都加入其中,并运行了以下命令:

sudo chgrp -R brew $(brew --prefix)/*

sudo chmod -R g+w $(brew --prefix)/*

但是仍然不行。

我无法自由地使用Homebrew或在两个用户上运行开发服务器(由于watchman权限错误)。每次更改用户时,我都必须“修复”权限问题。

1个回答

56

/usr/local/var/run/watchman 目录需要具备 2777 权限,以便任何用户都可以在其中创建自己的状态目录:

sudo chmod 2777 /usr/local/var/run/watchman

此外,Watchman会执行一些检查,以确定状态目录的权限是否具有潜在的危险性;我怀疑您非常宽泛的递归 chmod chown 调用正在触发该操作,因此我建议这是一种非常安全但具有破坏性的操作,假设其他用户已经拥有可用的Watchman:

sudo rm -rf /usr/local/var/run/watchman/*

做到了!感谢您的帮助和解释。 - yevg
你救了我的命。我已经卡了好几天了,哈哈。 - Antonio Labra
也帮我救一下。 我用brew更新了mongodb,但它也更新了watchman... 在计算机重新启动后,新版本出现了故障,并产生了这个问题。 - j0nd0n7
谢谢 现在它正在工作。 - Meiki Neumann
第一条命令出现“找不到该文件或目录”的错误。 - Walter Monecke
11
上述路径对我来说不存在,但这个命令修复了它:sudo chmod 2777 /opt/homebrew/var/run/watchman/ && sudo rm -rf /opt/homebrew/var/run/watchman/* - Alan

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