记 macOS 下 Homebrew 的一个权限报错问题
(´;ω;`)
缘起
在收拾 mac 上的环境配置信息的时候,我发现之前我用安装包安装了 nodejs v12
,而现在运行 code-server 的 nodejs 版本为v15
把一堆东西删掉之后,重新用 Homebrew 安装 nodejs,报错如下
1 | Error: Could not symlink share/systemtap/tapset/node.stp |
解决
首先是一些基本信息
1 | $ ls -al /usr/local/share/systemtap/ |
tapset
目录的所有者是 root
,所有组是 wheel
,原始读写权限是 755
网上提供了很多种解决办法,毕竟这只是一个权限问题。不过为了把对系统的影响降到最小,我选择把自己加入 wheel 用户组并修改组的读写权限后执行安装,然后再恢复回来,而不是直接修改目录的所有者
将自己(所用的用户)加入 wheel 组
1
$ sudo dscl . -append /Group/wheel GroupMembership [username]
和其他Unix-like系统不同,macOS 的用户(组)管理使用
dscl
命令username 可以使用
whoami
命令查询利用 root 权限(sudo 执行命令)修改所有组的读写权限
1
$ sudo chmod -R 775 /usr/local/share/systemtap/
执行
brew link node
将自己从所有组删除
1
$ sudo dscl . -delete /Group/wheel GroupMembership [username]
恢复文件夹的原始读写权限
1
$ sudo chmod -R 755 /usr/local/share/systemtap/
把这些执行完问题就解决了,不过我后来才发现,其实我([username]
)本来就在wheel
用户组里,上面的步骤中只要执行第 2、3、5 步即可