Running sudo apt-get install golang-stable, I get Go version go1.0.3. Is there any way to install go1.1.1?
- 1In the end I had to install from source. Not all tests passed but it seems to be working ok.scc– scc2013-07-05 12:50:06 +00:00Commented Jul 5, 2013 at 12:50
- 1"Not all tests passed but it seems to be working ok." @sofia what version of Ubuntu are you using? I would not expect test failures unless you were running a very old version of Ubuntu or you accidentally installed "tip" vs. "stable".voidlogic– voidlogic2013-07-09 02:41:23 +00:00Commented Jul 9, 2013 at 2:41
- I'm using ubuntu precise. But installing the latest version from the repo duh/golang didn't report any problem, so not sure what the problem was.scc– scc2013-07-10 09:22:20 +00:00Commented Jul 10, 2013 at 9:22
- I am also using precise. Did you run "hg update tip" or "hg update release". If you don't recall look back in your bash history file. Using tip might explain the test failures.voidlogic– voidlogic2013-07-10 13:49:41 +00:00Commented Jul 10, 2013 at 13:49
- 1You can try this blog railskey.wordpress.com/2014/05/31/install-gogolang-on-ubuntuPravin Mishra– Pravin Mishra2014-05-31 05:44:11 +00:00Commented May 31, 2014 at 5:44
20 Answers
[Updated (previous answer no longer applied)]
For fetching the latest version:
sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Also see the wiki
12 Comments
ppa:evarlast/golang1.4I like to use GVM for managing my Go versions in my Ubuntu box. Pretty simple to use, and if you're familiar with RVM, it's a nobrainer. It allows you to have multiple versions of Go installed in your system and switch between whichever version you want at any point in time.
Install GVM with:
sudo apt-get install bison mercurial bash < <(curl -LSs 'https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer') . "$HOME/.gvm/scripts/gvm" and then it's as easy as doing this:
gvm install go1.1.1 gvm use go1.1.1 --default The default flag at the end of the second command will set go1.1.1 to be your default Go version whenever you start a new terminal session.
5 Comments
https://github.com/moovweb/gvmt is 404 not found. And I'm reluctant to install anything that doesn't seem to have its own security update procedureI used following commands from GoLang official repository, it installed GoLang version 1.6 on my Ubuntu 14.04
sudo add-apt-repository ppa:ubuntu-lxc/lxd-stable sudo apt-get update sudo apt-get install golang However, since this answer was created, the instructions have been updated to these, for Ubuntu 18.04, 20.04 or 22.04 (amd64, arm64 or armhf):
sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Reference official GoLang Repo https://github.com/golang/go/wiki/Ubuntu it seems this ppa will always be updated in future.
2 Comments
The team named '~ubuntu-lxc' has no PPA named 'ubuntu/lxd-stable'sudo add-apt-repository ppa:longsleep/golang-backports sudo apt-get update sudo apt-get install golang-go[October 2015] Answer because the current accepted answersudo apt-get install golang isn't uptodate and if you don't want to install GVM follow these steps.
Step by step installation:
- Download the latest version here (OS: Linux).
- Open your terminal and go to your Downloads directory
sudo tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz- Add
goto your pathexport PATH=$PATH:/usr/local/go/bin go versionto check the current version installed- Start programming.
Possible errors + fixes: (to be updated)
If you get a go version xgcc (Ubuntu 4.9.1-0ubuntu1) 4.9.1 linux/amd64 then you did something wrong, so check out this post: Go is printing xgcc version but not go installed version
1 Comment
i installed from source. there is a step-by-step tutorial here: http://golang.org/doc/install/source
4 Comments
I use this instruction to install the latest version of 
Remove the existing Go version:
sudo apt-get purge golang*Install the latest version of Go:
sudo add-apt-repository ppa:longsleep/golang-backports sudo apt-get update sudo apt-get install golang-goCreate the
.profilefile in the home path with this content:# ~/.profile: executed by the command interpreter for login shells. # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login # exists. # see /usr/share/doc/bash/examples/startup-files for examples. # the files are located in the bash-doc package. # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. #umask 022 # if running bash if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi # set PATH so it includes user's private bin directories PATH="$HOME/bin:$HOME/.local/bin:$PATH"Set Go workspace to the environment variable:
GOPATH=~/.goApply the
.profileconfiguration:source ~/.profile
Test:
$ go version go version go1.11.1 linux/amd64 Comments
Here is the most straight forward and simple method I found to install go on Ubuntu 14.04 without any ppa or any other tool.
As of now, The version of GO is 1.7
Get the Go 1.7.tar.gz using wget
wget https://storage.googleapis.com/golang/go1.7.linux-amd64.tar.gz
Extract it and copy it to /usr/local/
sudo tar -C /usr/local -xzvf go1.7.linux-amd64.tar.gz
You have now successfully installed GO. Now You have to set Environment Variables so you can use the go command from anywhere.
To achieve this we need to add a line to .bashrc So,
sudo nano ~/.bashrc
and add the following line to the end of file.
export PATH="/usr/local/go/bin:$PATH"
Now, All the commands in go/bin will work.
Check if the install was successful by doing
go version
For offline Documentation you can do
godoc -http=:6060
Offline documentation will be available at http://localhost:6060
NOTE:
Some people here are suggesting to change the PATH variable.
It is not a good choice.
Changing that to
/usr/local/go/binis temporary and it'll reset once you close terminal.gocommand will only work in terminal in which you changed the value of PATH.You'll not be able to use any other command like
ls, nanoor just about everything because everything else is in/usr/binor in other locations. All those things will stop working and it'll start giving you error.
However, this is permanent and does not disturbs anything else.
8 Comments
If someone is looking for installing Go 1.8 the follow this:
sudo add-apt-repository ppa:longsleep/golang-backports sudo apt-get update sudo apt-get install golang-go And then install go
sudo apt-get install golang-1.8-go 5 Comments
golang-1.8-go, it's already installed when installing golang-go. Actually as of end April 2017, go 1.8.1 is installed, the latest version. github.com/golang/go/wiki/Ubuntuexport GOROOT=/usr/local/bin/goFor the current release of Go:
Click the link above to visit the Go project's downloads page and select the binary distribution that matches your operating system and processor architecture.
Official binary distributions are available for the FreeBSD, Linux, macOS, and Windows operating systems and the 32-bit (386) and 64-bit (amd64) x86 processor architectures.
If a binary distribution is not available for your combination of operating system and architecture you may want to try installing from source or installing gccgo instead of gc.
1 Comment
- Download say,
go1.6beta1.linux-amd64.tar.gzfrom https://golang.org/dl/ into/tmp
wget https://storage.googleapis.com/golang/go1.6beta1.linux-amd64.tar.gz -o /tmp/go1.6beta1.linux-amd64.tar.gz
- un-tar into
/usr/local/bin
sudo tar -zxvf go1.6beta1.linux-amd64.tar.gz -C /usr/local/bin/
- Set GOROOT, GOPATH, [on ubuntu add following to ~/.bashrc]
mkdir ~/go export GOPATH=~/go export PATH=$PATH:$GOPATH/bin export GOROOT=/usr/local/bin/go export PATH=$PATH:$GOROOT/bin
- Verify
go version should show be
go version go1.6beta1 linux/amd64
go env should show be
GOARCH="amd64" GOBIN="" GOEXE="" GOHOSTARCH="amd64" GOHOSTOS="linux" GOOS="linux" GOPATH="/home/vats/go" GORACE="" GOROOT="/usr/local/bin/go" GOTOOLDIR="/usr/local/bin/go/pkg/tool/linux_amd64" GO15VENDOREXPERIMENT="1" CC="gcc" GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0" CXX="g++" CGO_ENABLED="1"
1 Comment
These days according to the golang github with for Ubuntu, it's possible to install the latest version of Go easily via a snap:
Using snaps also works quite well:
# This will give you the latest version of go $ sudo snap install --classic go Potentially preferable to fussing with outdated and/or 3rd party PPAs
Comments
This is an old question in 2022 it is almost more that 9 years. But I think it is important to automatize this installation.
Requirements:
- This was tested on Ubuntu 18 and 20.
- Sudoer user, you must be able to use
sudo.
Installation:
- Create a new file using this command:
touch ~/go-installer.sh - Edit the file using any of editor available i.e., vi, vim, or nano.
nano ~/go-installer.sh - Past this script:
#!/bin/bash ## Define version and build VERSION=1.19 BUILD=4 ## Define package name PKG_NAME='go' ## Define go official url GO_URL='https://golang.org/dl/' ## Define local path LOCAL_PATH='/usr/local' ## Define system library path LIB_PATH='/usr/lib' ## Define system binary path BIN_PATH='/usr/bin' ## Define EV script filename EV_FILE='/etc/profile.d/go-bin-path.sh' ## Defile export path command EXPORT_CMD='export PATH=$PATH:/usr/local/go/bin' ## Define script content SCRIPT='#!/bin/sh\n'${EXPORT_CMD} ## Define user home dir USER_HOME_DIR=$(getent passwd ${SUDO_USER:-$USER} | cut -d: -f6) check_command() { [ -x "$(command -v $PKG_NAME)" ] && echo 0 || echo 1 } test_package() { echo code=$(check_command) [ $code -eq 0 ] && go version || echo "Error: $PKG_NAME is not installed." >&2 exit $code } is_sudoer() { ## Define error code E_NOTROOT=87 # Non-root exit error. ## check if is sudoer if ! $(sudo -l &>/dev/null); then echo 'Error: root privileges are needed to run this script' return $E_NOTROOT fi return 0 } if is_sudoer; then ## Remove previous package versions status="$(dpkg-query -W --showformat='${db:Status-Status}' ${PKG_NAME} 2>&1)" if [ $? = 0 ] || [ "${status}" = installed ]; then sudo apt remove --purge --auto-remove -y "${PKG_NAME}" fi pkg_path="${LOCAL_PATH}/go" pkg_lib_path="${LIB_PATH}/go" ## Download the latest version available. [ "$BUILD" -eq "0" ] && version_build="${VERSION}" || version_build="${VERSION}.${BUILD}" mkdir "${USER_HOME_DIR}/tmp" cd "${USER_HOME_DIR}/tmp" wget "${GO_URL}go${version_build}.linux-amd64.tar.gz" ## Extract and install the downloaded version if [ -f "go${version_build}.linux-amd64.tar.gz" ]; then sudo rm -rf "${pkg_path}" && sudo tar -xzvf "go${version_build}.linux-amd64.tar.gz" -C "${LOCAL_PATH}" ## Add symbolic link binary files to system binary and library directories if [ ! -h "${pkg_lib_path}" ]; then sudo ln -sv "${pkg_path}" "${pkg_lib_path}" fi binaries='go gofmt' for i in $binaries; do if [ ! -h "${BIN_PATH}/${i}" ]; then sudo ln -sv "${pkg_lib_path}/bin/${i}" "${BIN_PATH}/${i}" fi done ## Test your new version. test_package else echo "Error: tar file does not exits." >&2 exit 1 fi else exit $? fi - Give running permission to the file:
sudo chmod -v u+x ~/go-installer.sh - Run the script:
./go-installer.sh It will return something like this:
... go/test/used.go go/test/utf.go go/test/varerr.go go/test/varinit.go go/test/winbatch.go go/test/writebarrier.go go/test/zerodivide.go '/usr/lib/go' -> '/usr/local/go' '/usr/bin/go' -> '/usr/lib/go/bin/go' '/usr/bin/gofmt' -> '/usr/lib/go/bin/gofmt' go version go1.19.4 linux/amd64 teocci@ubuntu:~$ - Test your installation:
go version Now Go will be global and can run from anywhere.
Comments
sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go
After above commands and go environment setup You tried to run a go program it will show you go: no such tool "compile" if you are facing a same then follow below link https://stackoverflow.com/a/76550511/22128545
1 Comment
You can also use the update-golang script:
update-golang is a script to easily fetch and install new Golang releases with minimum system intrusion
git clone https://github.com/udhos/update-golang cd update-golang sudo ./update-golang.sh Comments
Or maybe you could use this script to install Go and LiteIDE?
If you are unhappy with the answer provided, please comment instead of blindly down voting. I have used this setup for the last 4 years without any issue.
Comments
Go to https://go.dev/doc/install site. Click on the “Download 1.21.3” (whatever the latest version you want to install) button. Download the version using go1.21.3.linux-amd64.tar.gz the link. Type sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.21.3.linux-amd64.tar.gz Set your environment variables
export GOROOT=/usr/local/go export GOPATH=${HOME%}/go export PATH=$PATH:$GOROOT/bin:$GOPATH/bin export PATH = $PATH:$HOME Now type go version you will get your go version
Comments
If you have ubuntu-mate, you can install latest go by:
umake go
I have a script to download and install the last go from official website
# Change these varialbe to where ever you feel comfortable DOWNLOAD_DIR=${HOME}/Downloads/GoLang INSTALL_DIR=${HOME}/App function install { mkdir -p ${DOWNLOAD_DIR} cd ${DOWNLOAD_DIR} echo "Fetching latest Go version..." typeset VER=`curl -s https://golang.org/dl/ | grep -m 1 -o 'go\([0-9]\)\+\(\.[0-9]\)\+'` if uname -m | grep 64 > /dev/null; then typeset ARCH=amd64 else typeset ARCH=386 fi typeset FILE=$VER.linux-$ARCH if [[ ! -e ${FILE}.tar.gz ]]; then echo "Downloading '$FILE' ..." wget https://storage.googleapis.com/golang/${FILE}.tar.gz fi echo "Installing ${FILE} ..." tar zxfC ${FILE}.tar.gz ${INSTALL_DIR} echo "Go is installed" } install
Setup your GOROOT, GOPATH and PATH:
export GOROOT=${INSTALL_DIR}/go export GOPATH=<your go path> export PATH=${PATH}:${GOROOT}/bin:${GOPATH}/bin Comments
Best way to install Go on Ubuntu is to download required version from here. Here you could have all stable and releases, along with archived versions.
after downloading you selected version you can follow further steps, i will suggest you to download tar.gz format for ubuntu machine:
- first of all fully remove the older version from your local by doing this
sudo rm -rf /usr/local/go /usr/local/gocache
this will remove all the local go code base but wait something more we have to do to remove fully from local, i was missing this step and it took so much time until I understood what i am missing so here is the purge stuff to remove from list
sudo apt-get purge golang
or
sudo apt remove golang-go
- Now install / extract your downloaded version of go inside /usr/local/go, by hitting terminal with this
tar -C /usr/local -xzf go1.10.8.linux-amd64.tar.gz
- after doing all above stuff , don't forget or check to
GOROOTvariable value you can check the value bygo envif not set thenexport PATH=$PATH:/usr/local/go - Better to test a small go program to make sure. write this inside
/home/yourusername/go/test.phpif you haven't changed setGOPATHvalue:
package main import "fmt" func main() { fmt.Println("hello world") }
- run this by
go run test.go
i hope it works for you!!
Comments
You can use a script from udhos/update-golang.
Here is a two-liner as example (run as root):
bash <(curl -s https://raw.githubusercontent.com/udhos/update-golang/master/update-golang.sh) ln -vs /usr/local/go/bin/go* /usr/local/bin/