I'm a newcomer to Go and I think I've messed up the setup somewhere. When trying to install the Buffalo framework, I got the following error:
$ buffalo new todo-api --api
Buffalo version v0.9.5
--> go get -u golang.org/x/tools/cmd/goimports
package golang.org/x/tools/cmd/goimports: cannot find package "golang.org/x/tools/cmd/goimports" in any of:
/usr/local/go/src/golang.org/x/tools/cmd/goimports (from $GOROOT)
/home/ankush/go/src/golang.org/x/tools/cmd/goimports (from $GOPATH)
I remember emptying the $HOME/go directory because I had just upgraded from 1.8 to 1.9, and thought that Go would somehow automatically re-download and populate it. But it didn't, it seems.
So, is the src/golang.org directory supposed to be in $GOPATH? Because I didn't find it in $GOROOT and I had followed the standard setup instructions.
Any suggestions?
== Update 1 ==
The GOPATH is correctly set in my case. Here's the output of go env
:
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/ankush/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build630744714=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
=== Update2 ===
Here's my output of go get
for goimports
:
go$ go get -u -v golang.org/x/tools/cmd/goimports
Fetching https://golang.org/x/tools/cmd/goimports?go-get=1
Parsing meta tags from https://golang.org/x/tools/cmd/goimports?go-get=1 (status code 200)
get "golang.org/x/tools/cmd/goimports": found meta tag get.metaImport{Prefix:"golang.org/x/tools", VCS:"git", RepoRoot:"https://go.googlesource.com/tools"} at https://golang.org/x/tools/cmd/goimports?go-get=1
get "golang.org/x/tools/cmd/goimports": verifying non-authoritative meta tag
Fetching https://golang.org/x/tools?go-get=1
Parsing meta tags from https://golang.org/x/tools?go-get=1 (status code 200)
golang.org/x/tools (download)
package golang.org/x/tools/cmd/goimports: cannot find package "golang.org/x/tools/cmd/goimports" in any of:
/usr/local/go/src/golang.org/x/tools/cmd/goimports (from $GOROOT)
/home/ankush/go/src/golang.org/x/tools/cmd/goimports (from $GOPATH)
I was finally able to solve it. For someone else who gets bitten by this in future, in my case it helped to remove the concerned directory and then install again. Here's what helped:
$ rm -rf /home/ankush/go/src/golang.org/x/tools
$ go get -u -v golang.org/x/tools/cmd/goimports
I'm not sure why this works, but maybe the the git pull had somehow failed earlier (sloppy connection?) as soon as the directory was created.