Go is an open source programming language developed by a team at Google. It provides easy-to-build simple, reliable, and efficient software. This language is designed for writing servers, that’s why it is used widely these days. Go has released the latest version 1.20 recently.
This tutorial will help you to install Go 1.20 on your CentOS and RHEL 9/8/7 systems. You can also use tutorials to install Go lang on Ubuntu and Debian systems.
Prerequisites
Log in to your Red Hat or its derivative system using ssh and upgrade to apply the latest security updates there. Execute the following command on the terminal.
yum update
Step 1 – Installing Go
Now download the Go language binary archive file using the following link. To find and download latest version available or 32 bit version go to official download page.
wget https://go.dev/dl/go1.20.5.linux-amd64.tar.gz
Now extract the downloaded archive and install it to the desired location on your system. For this tutorial, I am installing it under the /usr/local
directory. You can also put this under the home directory (for shared hosting) or other locations.
tar -xzf go1.20.5.linux-amd64.tar.gz
mv go /usr/local
Step 2 – Setup Go Environment
Now you need to set up Go language environment variables for your project. Commonly you need to set 3 environment variables as GOROOT, GOPATH and PATH.
- GOROOT is the location where Go package is installed on your system.
export GOROOT=/usr/local/go
- GOPATH is the location of your work directory. For example my project directory is ~/Projects/Proj1 .
export GOPATH=$HOME/Projects/Proj1
- Now set the PATH variable to access go binary system wide.
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
All the above environments will be set for your current session only. To make it permanent add the above commands in ~/.bash_profile file.
Step 3 – Verify Installation
At this step, you have successfully installed and configured go language on your system. First, use the following command to check the Go version.
go version
go version go1.20 linux/amd64
Now also verify all configured environment variables using the following command.
go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/Projects/Proj1"
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-build764105058=/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"
Conclusion
In this tutorial, you have learned to install Golang on CentOS/RHEL Linux systems.
12 Comments
Worked for me. Cool !! Thanks
Is there a good reason to not use the package manager for your system and install the packages provided by the vendor? e.g. RedHat/CentOS, after enabling the appropriate repos, “yum install golang”.
I’m not trying to stir up some debate that may have already been hashed out elsewhere, I’m honestly curious about any potential drawbacks.
Hi Tom,
There is no issue with the installation of packages from yum repos. But most of the time you did not get the latest or required version. In this way you can install any version you required.
Many thanks for the clear instructions
Thanks. Worked for me.
There is a typo in the link
# wget ttps://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz
Thanks Cheprus, I have updated tutorial.
yes, you have a typo when you export GOPATH (which you don’t actually do) instead you export GOROOT again which pooches the other steps. Also, you shouldn’t normally need $GOPATH/bin in your PATH. Only $GOROOT/bin.
Thanks, George. Updated tutorial.
Thanks for the tutorial!
Hi – I think you meant:
export GOROOT=/usr/local/go
should be
export GOPATH=/usr/local/go
doesn’t work for me, im sure i follow every step right
go command not found
Try changing “# export GOROOT=$HOME/Projects/Proj1” to “# export GOPATH=$HOME/Projects/Proj1”. I had the same problem running “go version” until I did that.