在mac下使用go.mod去管理应用包的时候,执行go mod init 应用名时报错Permission denied,go mod默认使用的是/usr/local/go,而这个目录是没有权限进行操作的,就算是使用管理员模式也无法成功。
原因是mac用户在升级系统之后,电脑启用了SIP(System Integrity Protection)保护机制,增加了rootless机制,导致即使在root权限下依然无法修改文件,在必要时候为了能够修改下面的文件,我们只能关闭该保护机制。我选择的是关闭该保护机制。步骤如下:
1)重启,过程中按住 command+R,进入保护模式
2)打开terminal终端,输入
csrutil disable
显示Successfully就表示设置成功。
3)再次重启,即可对 usr/bin 目录下文件进行修改
此时执行go mod init 应用名
PS:如果要恢复保护机制,重新进入保护模式,输入
csrutil enable