go get时mkdir permission denied错误
1.问题描述
有可能之前vscode都是好好的突然间就工具就找不到,也有可能重新下载工具还出错,也有可能就算重新下载工具还用不了。
分析
1.直接差生原因
vscode在使用go extension时,会查看$GOPATH/bin下面的基础开发工具是不是完备。如下图:
一旦找不到相应的工具,vscode就会提示install。这是非常正常的现象,出现以上错误就是没有权限写进去文件夹。
但,问题远没那么简单,gopath一般都不会要求很高权限和goroot不一样,所以就算你释放权限也有可能不能解决问题。
2.深层次原因
很有可能gopath的路径就不对。一旦出现mkdir就说明vscode找不到这个路径,需要创建,很明显gopath不对。但你有可能会说,go env就是那个gopath,是对的啊。
不对,vscode可能覆盖了你的配置。可能是你不经意间修改了.vscode文件,或者直接修改了go extension的配置文件。无论是哪一种,你都首先需要找出vscode读到的gopath信息。
查看vscode当前gopath信息:
- 在vscode下边栏找到go x.x的按钮,点击
- 上方出现查看当前vscode加载的go信息,点击第一个
- 在output窗口会展示当前vscode加载的go信息。
在我的机器上,很明显GOMODCACHE的路径很不一样(这种不一样体现在,/home/xxx/go是很明显的linux目录结构,/Uers/xxx是MAC路径),说明有部分配置被覆盖了,这里的gopath是我修正后的,出错时的gopath也是/Uers/xxxx路径,这就是为什么会有mkdir /Users的错误。
我这边的原因是因为我直接将mac vscode的配置直接copy 到linux vscode里面了,gopath覆盖了,删除后vscode没有即使更新。
修正方法
1.增加.vscode配置文件
2.修改vscode tool config.go
也是对gopath或其他做修改,修改后查看一下vscode是不是加载了,方式同上方“方案”-》“2.深层次原因”。