使用go mod出现permission denied的问题,查找资料后发现是因为没有权限修改GOPATH链接的地址(module存储的地方),按常规 *** 作直接在命令前加了sudo,此时不再出现权限问题(不当 *** 作,请勿模仿) 。
命令行执行go env展示go相关的环境变量,其中GOROOT表示安装路径,GOPATH路径存放sdk以外的第三方类库
以为没问题了但在下载module时出现time out问题,进一步查资料发现是GOPROXY指向的网址ping不通,网上建议是改成中国的镜像网站(https://goproxy.cn等)
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
GOPROXY也在go env列出的环境变量之中,默认为https://proxy.golang.org,direct,可以通过go env -w更改为中国镜像网站
注意需要保证go module已开启,可通过go env -w GO111MODULE=on进行设置
关于GOPROXY和国内镜像网站的具体信息可以查看干货满满的 Go Modules 和 goproxy.cn
但是通过go env -w修改后发现修改未生效,go仍旧按原网址下载module,之后尝试过export甚至直接修改~./profile文件均无效。后发现是因为sudo的问题,我修改的代理地址(GOPROXY)是user环境,但sudo是在root环境下运行的,导致修改未生效。所以解决permission denied的正确做法应该是修改GOPATH到一个用户目录(用户有权限修改)。同样可以通过go env -w
进行修改。
具体可参考问题:设置了GOPROXY还是出现i/o timeout #93
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)