go 学习笔记-安装工具包
- 问题
- 原因
- 解决办法
问题
在使用 VSCode的时候,需要我们去安装一些帮助我们编辑代码的插件,但是这些插件的安装,很磨人啊…
先说正常的安装流程:
我们打开VSCode后,按快捷键:Ctrl+Shift+P可以看到如下界面:
输入 go:install,选择 Go:Install/Update Tools
会出现这个样子,我们全部选中,然后回车,就会自动帮我们安装哪些插件了。
然而,俺眉头一皱,发现事情并不简单:
Installing 14 tools at F:\Softs\GoLang\repository
gocode
gopkgs
go-outline
go-symbols
guru
gorename
gomodifytags
goplay
impl
godef
goreturns
golint
gotests
dlv
Installing github.com/nsf/gocode FAILED
Installing github.com/uudashr/gopkgs/cmd/gopkgs SUCCEEDED
Installing github.com/ramya-rao-a/go-outline FAILED
Installing github.com/acroca/go-symbols FAILED
Installing golang.org/x/tools/cmd/guru FAILED
Installing golang.org/x/tools/cmd/gorename FAILED
Installing github.com/fatih/gomodifytags FAILED
Installing github.com/haya14busa/goplay/cmd/goplay SUCCEEDED
Installing github.com/josharian/impl FAILED
Installing github.com/rogpeppe/godef SUCCEEDED
Installing sourcegraph.com/sqs/goreturns FAILED
Installing github.com/golang/lint/golint FAILED
Installing github.com/cweill/gotests/... FAILED
Installing github.com/derekparker/delve/cmd/dlv SUCCEEDED
啥?部分安装失败了!
原因
发现问题不可怕,解决问题才是咱们程序猿的拿手本事。
当然解决问题不能靠自己凭空想了,于是我找到了我的好朋友“百度君”查找问题出在哪里,怎么解决。
于是找到了下面这段话:
golang.org 在国内由于一些众所周知的原因无法直接访问,而go get在获取gocode、go-def、golint等插件依赖工具的源码时,需要从 golang.org 上拉取部分代码至GOPATH,自然就导致了最后这些依赖于 golang.org 代码的依赖工具安装失败。
解决办法
按照在网上找到的办法是这样:
先通过git clone命令手动将依赖工具的源码拉取至GOPATH的对应路径,再通过go install命令安装依赖工具。
执行步骤是这样:
先进入%GOPATH%/src目录下创建文件夹golang.org\x,然后进入%GOPATH%\src\golang.org\x,执行下面命令:
git clone https://github.com/golang/tools.git tools
最后进入%GOPATH%目录,根据之前的安装失败提示信息安装对应的依赖工具
go install github.com/mdempsky/gocode
go install github.com/ramya-rao-a/go-outline
go install github.com/acroca/go-symbols
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename
go install github.com/stamblerre/gocode
go install github.com/ianthehat/godef
go install github.com/sqs/goreturns
go install golang.org/x/lint/golint
安装 golint
在执行go install命令安装 golint 时,提示信息如下
PS C:\Users\abel1\go> go install golang.org/x/lint/golint
can't load package: package golang.org/x/lint/golint: cannot find package "golang.org/x/lint/golint" in any of:
C:\Go\src\golang.org\x\lint\golint (from $GOROOT)
C:\Users\abel1\go\src\golang.org\x\lint\golint (from $GOPATH)
这是因为 golint 的源码在lint下,而不是tools,需要单独拉取 golint 源码。
进入%GOPATH%\src\golang.org\x,执行下列命令拉取 golint 源码:
git clone https://github.com/golang/lint
最后回到%GOPATH%,通过go install安装 golint:
go install github.com/golang/x/lint/golint
如果你们在执行到这里的时候没有任何问题,那么,你可不用往下看了。
我在这样执行的时候,碰到了意料之外的情况。在我执行下面代码的时候报错了:
go install github.com/acroca/go-symbols
错误是:
$ go install github.com/acroca/go-symbols
can't load package: package github.com/acroca/go-symbols: cannot find package "github.com/acroca/go-symbols" in any of:
E:\software\develop\go\src\github.com\acroca\go-symbols (from $GOROOT)
F:\go-code\src\github.com\acroca\go-symbols (from $GOPATH)
意思是找不到 “github.com/acroca/go-symbols”这个文件夹。对我这个小白来说,百思不得其解。
于是就又向百度君求助,终于,找到了解决办法。
先在%GOPATH%/src文件夹下,创建github.com文件夹,然后对于未找打的文件,在github.com文件夹下执行:
git clone https://github.com/acroca/go-symbols
此时,我的执行情况是直接在github.com文件夹下生成了go-symbols文件夹,但是按照理解应该是生成acroca/go-symbols这个文件夹的,这里我也不明白。但是没关系,我们在github.com文件夹下创建acroca文件夹,将刚生成的go-symbols文件夹复制进去。
此时,再回到%GOPATH%路径下,执行:
go install github.com/acroca/go-symbols
完成!!
其他未安装成功的插件同样方式可安装!!
结束,谢谢百度君!