系统升级后,执行npm指令时,终端突然报错如下 ,
周转了一大圈,发现使用解除SIP的方式对我并不适用(sudo也是毫无用武之地),兜兜转转了一大圈,发现与系统大版本也是有一定关系的。总结如下(以我当前遇到的path为例):
根据mac 的系统版本,来选择解决办法
如果是Cataline ,也就是11之前的:
解决办法(关闭SIP,然后输入sudo mount -uw /
,创建文件夹添加权限,最后启用SIP),具体步骤如下:
1、重启mac,黑屏后,按住Command+R
,等到系统进入安全模式。
2、选择一个账户,输入密码,然后点击屏幕上方的工具栏找到命令行工具。
3、执行,命令 csrutil disable
4、重启电脑后,不要进入安全模式,执行命令sudo mount -uw /
5、执行命令sudo mkdir /path
6、执行命令sudo chmod 777 /path
7、重启电脑,进入安全模式,执行命令csrutil enable
(开启SIP) (!!!!该步骤可以不执行)
mac的版本 11.0 之后的用下面,尤其是MacOS升级到Mac Big Sur(11.01)版本后,关闭SIP重新挂载根分区也是行不通的
方法2:
无法创建目录
最近小伙伴经常反馈Mac根目录下创建文件或目录一直失败,并且尝试了各种姿势。 常见错误如下:
常见错误1, 直接创建目录
mkdir -p /path
mkdir: /path: Read-only file system
常见错误2。 进入安全模式,关闭 authenticated-root 和SIP后,重新挂载根分区
sudo mount -uw /
mount_apfs: volume could not be mounted: Permission denied
mount: / failed with 66
解决方案 (以我当前遇到的path为例):
- 创建可用目录(不在根目录下),如
mkdir -p ~/path
- 增加关联
sudo vi /etc/synthetic.conf
内容:
path /Users/xxxx/path # 注意,这里data前面没有/; 并且data与后面内容使用tab分割
pwd 查看当前路径,如上方的 /Users/xxxx
- 重启系统
sudo reboot