Cannot Download, $GOPATH Not Set


Answer :

[Update: as of Go 1.8, GOPATH defaults to $HOME/go, but you may still find this useful if you want to understand the GOPATH layout, customize it, etc.]

The official Go site discusses GOPATH and how to lay out a workspace directory.

export GOPATH="$HOME/your-workspace-dir/" -- run it in your shell, then add it to ~/.bashrc or equivalent so it will be set for you in the future. Go will install packages under src/, bin/, and pkg/, subdirectories there. You'll want to put your own packages somewhere under $GOPATH/src, like $GOPATH/src/github.com/myusername/ if you want to publish to GitHub. You'll also probably want export PATH=$PATH:$GOPATH/bin in your .bashrc so you can run compiled programs under $GOPATH.

Optionally, via Rob Pike, you can also set CDPATH so it's faster to cd to package dirs in bash: export CDPATH=.:$GOPATH/src/github.com:$GOPATH/src/golang.org/x means you can just type cd net/html instead of cd $GOPATH/src/golang.org/x/net/html.

Keith Rarick notes you can set GOPATH=$HOME to put Go's src/, pkg/ and bin/ directories right under your homedir. That can be nice (for instance, you might already have $HOME/bin in your path) but of course some folks use multiple workspaces, etc.


This one worked

Setting up Go development environment on Ubuntu, and how to fix GOPATH/GOPATH / GOROOT

Steps

mkdir ~/go 

Set $GOPATH in .bashrc,

export GOPATH=~/go export PATH=$PATH:$GOPATH/bin 

Using brew

I installed it using brew.

$ brew install go 

When it was done if you run this brew command it'll show the following info:

$ brew info go go: stable 1.4.2 (bottled), HEAD Go programming environment https://golang.org /usr/local/Cellar/go/1.4.2 (4676 files, 158M) *   Poured from bottle From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/go.rb ==> Options --with-cc-all     Build with cross-compilers and runtime support for all supported platforms --with-cc-common     Build with cross-compilers and runtime support for darwin, linux and windows --without-cgo     Build without cgo --without-godoc     godoc will not be installed for you --without-vet     vet will not be installed for you --HEAD     Install HEAD version ==> Caveats As of go 1.2, a valid GOPATH is required to use the `go get` command:   https://golang.org/doc/code.html#GOPATH  You may wish to add the GOROOT-based install location to your PATH:   export PATH=$PATH:/usr/local/opt/go/libexec/bin 

The important pieces there are these lines:

/usr/local/Cellar/go/1.4.2 (4676 files, 158M) *

export PATH=$PATH:/usr/local/opt/go/libexec/bin

Setting up GO's environment

That shows where GO was installed. We need to do the following to setup GO's environment:

$ export PATH=$PATH:/usr/local/opt/go/libexec/bin $ export GOPATH=/usr/local/opt/go/bin 

You can then check using GO to see if it's configured properly:

$ go env GOARCH="amd64" GOBIN="" GOCHAR="6" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/usr/local/opt/go/bin" GORACE="" GOROOT="/usr/local/Cellar/go/1.4.2/libexec" GOTOOLDIR="/usr/local/Cellar/go/1.4.2/libexec/pkg/tool/darwin_amd64" CC="clang" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fno-common" CXX="clang++" CGO_ENABLED="1" 

Setting up json2csv

Looks good, so lets install json2csv:

$ go get github.com/jehiah/json2csv $ 

What just happened? It installed it. You can check like this:

$ $ ls -l $GOPATH/bin total 5248 -rwxr-xr-x  1 sammingolelli  staff  2686320 Jun  9 12:28 json2csv 

OK, so why can't I type json2csv in my shell? That's because the /bin directory under $GOPATH isn't on your $PATH.

$ type -f json2csv -bash: type: json2csv: not found 

So let's temporarily add it:

$ export PATH=$GOPATH/bin:$PATH 

And re-check:

$ type -f json2csv json2csv is hashed (/usr/local/opt/go/bin/bin/json2csv) 

Now it's there:

$ json2csv --help Usage of json2csv:   -d=",": delimiter used for output values   -i="": /path/to/input.json (optional; default is stdin)   -k=[]: fields to output   -o="": /path/to/output.json (optional; default is stdout)   -p=false: prints header to output   -v=false: verbose output (to stderr)   -version=false: print version string 

Add the modifications we've made to $PATH and $GOPATH to your $HOME/.bash_profile to make them persist between reboots.


Comments

Popular posts from this blog

Chemistry - Bond Angles In NH3 And NCl3

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Change The Font Size Of Visual Studio Solution Explorer