解决使用 NPM 全局安装(npm install -g xxx) 相关 Package 时提示 EACCES error 的权限问题。
错误的原因,通常是因为当前用户没有相关安装目录的写入权限。
对于大多数 *nix 系统来说,npm 的安装目录是在 /usr/local 中,具体可以通过 npm config get prefix
加以验证,如果不是在 /usr/local 下的话,以下方法将不适用。
Step 1:
首先更改 /usr/local 中如下目录的所有者为当前用户:
1 | sudo chown -R username /usr/local/lib/node_modules |
(username 可以通过 whoami
查看,具体示当前用户而定)
Step 2
更改完成后正常 npm install -g xxx
相关 Package。如果仍然无法安装,继续出现 .npm
目录的权限错误,将其更改即可。
1 | sudo chown -R $USER:$GROUP ~/.npm |
Step 3
如果安装过 ZSH,恰好在 /usr/local/share/ 目录中存在 zsh 的相关文件。由于递归更改了 /usr/local/share/ 目录中的所有文件的拥有者,那么每次登入 Terminal 后都会出现:
zsh compinit: insecure directories, run compaudit for list. Ignore
insecure directories and continue [y] or abort compinit [n]?
的提示,ZSH 会提示不安全目录的问题。
此时可以通过 compaudit
查看相关目录,之后将其拥有者改为 root 即可:
1 | sudo chmod -R 755 /usr/local/share/zsh/site-functions |
相关参考资料:Fixing npm permissions