Issue
I am trying to setup a go dev environment on Ubuntu, and having no luck. Following directions here https://github.com/golang/go/wiki/Ubuntu
sudo apt-get install golang
Then I
mkdir $HOME/golang
export GOPATH=$HOME/golang
No dice. Even doing something simple like go version
throws the following error:
go: cannot find GOROOT directory: /usr/local/opt/go/libexec
Everywhere I look online says simply not to set GOROOT
. Please help, I don't understand where to go from here. This is a fresh install on a fresh VM.
GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/isaac/golang"
GORACE=""
GOROOT="/usr/local/opt/go/libexec"
GOTOOLDIR="/usr/local/opt/go/libexec/pkg/tool/linux_amd64"
TERM="dumb"
CC="gcc"
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread"
CXX="g++"
CGO_ENABLED="1"
Solution
So I eventually figured this out, and boy was it dumb on my part. I had a script that was effecting $GOROOT
, and learned alot. Here are the big lessons:
- Do NOT use
sudo apt-get install golang
it is out of date and doing so means you now have to revert the install.sudo apt-get install golang-go
is also out of date. Just don't useapt-get
. sudo apt-get purge golang
does not reset environment variables or delete all go related folders.unset GOPATH GOHOME GOROOT
is important cleanup before trying another installONLY install via
tar.gz
from the golang website- GOROOT means the folder where go's internal files live, so basically where ever the contents of the
tar.gz
lives on your system. Typically/usr/local/go
- GOHOME does not need to be set. If you set it, use
unset
- GOPATH is the location of your workspace, you need to
mkdir
to create that folder as well as set the GOPATH environment variable. - Your path needs to included
$GOROOT/bin:$GOPATH/bin
for the setup to function.
Usage of custom scripts that effect .zshrc
or bashrc
or profile
should not contain setting of $GOROOT
!!
Answered By - Fresheyeball