Difference between revisions of "Golang/Install"
| Line 13: | Line 13: | ||
sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz | sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz | ||
</source> | </source> | ||
Add <code>/usr/local/go/bin</code> to the <code>PATH</code> environment variable. You can do this by adding this line to your <tt>/etc/profile</tt> (for a system-wide installation) or <tt>$HOME/.profile</tt>: | Add <code>/usr/local/go/bin</code> to the <code>PATH</code> environment variable. You can do this by adding this line to your <tt>/etc/profile</tt> (for a system-wide installation) or <tt>$HOME/.profile</tt>: | ||
<source lang="bash"> | <source lang="bash"> | ||
sudo update-alternatives --install "/usr/bin/go" "go" "/usr/local/go/bin/go" 2 #adds to the $PATH | sudo update-alternatives --install "/usr/bin/go" "go" "/usr/local/go/bin/go" 2 #adds to the $PATH | ||
export PATH=$PATH:/usr/local/go/bin #optional | export PATH=$PATH:/usr/local/go/bin #optional | ||
# Set $GOPATH | |||
export GOPATH=$HOME/go | |||
export PATH=$PATH:$GOPATH/bin | |||
</source> | </source> | ||
Revision as of 00:33, 22 August 2019
Ubuntu Install
- Ubuntu 18.04 inc. WSL
sudo apt install golang-go
- Ubuntu LTS 16.04, also WSL Ubuntu 16.04
These steps allow to install more modern version of Golang than comes from official Ubuntu repositories. There was major changes between in 1.7 but default version seems to be 1.6.2. At the time of writing this I installed version go1.12.9.
Download from https://golang.org/dl/ and extract it into /usr/local, creating a Go tree in /usr/local/go
sudo tar -C /usr/local -xzvf go$VERSION.$OS-$ARCH.tar.gz
Add /usr/local/go/bin to the PATH environment variable. You can do this by adding this line to your /etc/profile (for a system-wide installation) or $HOME/.profile:
sudo update-alternatives --install "/usr/bin/go" "go" "/usr/local/go/bin/go" 2 #adds to the $PATH export PATH=$PATH:/usr/local/go/bin #optional # Set $GOPATH export GOPATH=$HOME/go export PATH=$PATH:$GOPATH/bin
Multiple versions
You can have multiple versions fo Golang installed in your system. The way to manage the current version in use is to use update-alternatives
Display best options
sudo update-alternatives --display go go - auto mode link best version is /usr/local/go/bin/go link currently points to /usr/local/go/bin/go link go is /usr/bin/go /usr/local/go/bin/go - priority 2
Before
Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/golang-go 10 auto mode 1 /usr/bin/gccgo-go 5 manual mode 2 /usr/bin/golang-go 10 manual mode
Action: Installed manually unzipped GoLang into /usr/local/go but was not added to alternatives. Use command below to add it on:
sudo update-alternatives --install "/usr/bin/go" "go" "/usr/local/go/bin/go" 2
After
Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/bin/golang-go 10 auto mode 1 /usr/bin/gccgo-go 5 manual mode 2 /usr/bin/golang-go 10 manual mode 3 /usr/local/go/bin/go 2 manual mode
Then run command to change go binary available in your shell
sudo update-alternatives --config go #then select ''3''
When you run
$ go version #the version of ''go'' will be the one from <tt>/usr/local/go</tt> location.
Troubleshooting
What is GOPATH?
- environment variable lists places to look for Go code, on Unix it's colon-separated string
- usually
GOPATHis$HOME/gowherebinandsrcdirectories exists. Each time you executego get -u <url>, the binaries will be placed in$HOME/go/binand code in$HOME/go/src - therefore
$HOME/go/binneeds to be in the$PATH - default go directory:
/usr/local/gois calledGOROOT - default go bin directory:
/usr/local/go/binthat needs to be in$PATH
Allow 'sudo go <subcommand>'
sudo visudo # then add to'secure_path' '.../go/bin' directory Defaults secure_path=".../bin:/usr/local/go/bin"
Get go environment variables
$ go env GOARCH="amd64" GOBIN="" GOCACHE="/home/ubuntu/.cache/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/home/ubuntu/go" GOPROXY="" GORACE="" GOROOT="/usr/local/go" GOTMPDIR="" GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64" GCCGO="gccgo" CC="gcc" CXX="g++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build629810470=/tmp/go-build -gno-record-gcc-switches"