Skip to main content

Command Palette

Search for a command to run...

Installing Go on Debian 12

Install Go on Debian 12 via APT, verify it with a sample app, and manage multiple Go versions from source or with GVM.

Updated
5 min readView as Markdown
Installing Go on Debian 12
S
A Developer Advocate with a focus on improving the developer experience through clear communication, technical enablement, and community engagement.
A
DevOps Engineer with experience in Kubernetes, automation, cloud infrastructure, and observability. I work in Developer Relations, contribute to technical documentation, and collaborate on engineering-focused projects.

Go (Golang) is an open-source programming language designed for simplicity, reliability, and efficiency — a fast, statically typed compiled language suited to scalable web servers, cloud-native applications, and command-line tools. This guide installs Go on Debian 12 using APT, verifies the installation with a sample application, and manages multiple Go versions with both a manual source install and the Go Version Manager (GVM). By the end, you'll have a working Go installation with the ability to switch between multiple Go versions on demand, following Go environment setup practices documented in Vultr Docs.

Prerequisites: a Debian 12 server, SSH access, and a non-root user with sudo privileges.


Install Go on Debian 12

Go is available in the default APT package repositories on Debian 12.

1. Update the server's package information index:

sudo apt update

2. Install Go:

sudo apt install golang -y

3. View the installed Go version:

go version

Output:

go version go1.19.8 linux/amd64

Test the Go Installation

Create a sample application to verify that Go runs correctly on the server.

1. Create a new go-sample project directory:

mkdir go-sample

2. Switch to the go-sample directory:

cd go-sample

3. Initialize a new example.com/hello Go module in the directory:

go mod init example.com/hello

4. Create a new main.go application file using a text editor like nano:

nano main.go

5. Add the following contents to the main.go file:

package main

import "fmt"

func main() {
    fmt.Println("Hello from Go")
}

Save and close the file. The application prints a greeting message when you run it.

6. Run the main.go application file:

go run main.go

Output:

Hello from Go

Install Multiple Go Versions

Maintaining multiple Go versions on your system lets you meet different project requirements. You can install specific versions manually from source, or use the Go Version Manager (GVM).

Install Multiple Go Versions From Source

1. Visit the Go releases webpage and download a specific Go version's archive file. For example, Go version 1.23.0:

wget https://go.dev/dl/go1.23.0.linux-amd64.tar.gz

2. Download another Go version, such as 1.21.0:

wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz

3. Create a new /usr/local/go1.23.0 directory to store the 1.23.0 Go version files:

sudo mkdir -p /usr/local/go1.23.0

4. Create another /usr/local/go1.21.0 directory to store the 1.21.0 Go version files:

sudo mkdir -p /usr/local/go1.21.0

5. Extract the 1.23.0 Go archive files to the /usr/local/go1.23.0 directory:

sudo tar -C /usr/local/go1.23.0 -xzf go1.23.0.linux-amd64.tar.gz

6. Extract the 1.21.0 Go archive files to the /usr/local/go1.21.0 directory:

sudo tar -C /usr/local/go1.21.0 -xzf go1.21.0.linux-amd64.tar.gz

7. Create a new PATH environment variable and set the 1.23.0 Go version to activate it as the default on the server:

export PATH=/usr/local/go1.23.0/go/bin:$PATH

8. Verify the active Go version:

go version

Output:

go version go1.23.0 linux/amd64

9. Create a new go123 alias for the 1.23.0 Go version to access it using a single command:

echo "alias go123='/usr/local/go1.23.0/go/bin/go'" >> ~/.bashrc

10. Create another go121 alias for the 1.21.0 Go version to access it using a single command:

echo "alias go121='/usr/local/go1.21.0/go/bin/go'" >> ~/.bashrc

11. Reload your shell configuration to apply the changes:

source ~/.bashrc

12. Run the alias command associated with the installed Go version. For example, run main.go using the 1.23.0 Go version:

go123 run main.go

Output:

Hello from Go

13. Run the main.go application file using the go121 alias command:

go121 run main.go

Output:

Hello from Go

Repeat this process for each Go version you want to install and run on the server.

Install Multiple Go Versions Using GVM

The Go Version Manager (GVM) lets you install and use specific Go versions without manually setting up a PATH variable or downloading binary packages.

1. Update the server's package information index:

sudo apt update

2. Install all required GVM dependency packages:

sudo apt install -y curl git make binutils bison gcc

3. Download and install GVM using the latest installation script:

bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)

4. Reload your shell configuration to apply the changes:

source ~/.gvm/scripts/gvm

5. Use GVM to install a specific Go version. For example, Go version 1.20.8:

gvm install go1.20.8

Output:

go1.20.8 successfully installed!

6. Set the 1.20.8 Go version as the default:

gvm use go1.20.8 --default

Output:

Now using version go1.20.8

7. View the active Go version:

go version

Output:

go version go1.20.8 linux/amd64

8. Install another Go version. For example, Go version 1.21.5:

gvm install go1.21.5

9. List all installed Go versions:

gvm list

Output:

gvm gos (installed)

    go1.20.8
    go1.21.5
    system

10. Switch to a specific Go version, such as go1.21.5, in your shell environment:

gvm use go1.21.5

Next Steps

  • Explore Go modules and popular frameworks like Gin or Echo for building web services

  • Set up a CI pipeline that builds and tests your Go application on every commit

  • Cross-compile your Go application for other operating systems and architectures

  • Package your Go binary as a systemd service for production deployment

For the full guide with additional tips, visit the original article on Vultr Docs.