Installing the Latest Version of Golang on Your Raspberry Pi

📆 · ⏳ 3 min read · · 👀

Introduction

Golang, or Go, is a modern and efficient programming language used for a variety of applications, including web development, system programming, and network programming. With its simple syntax and high-performance runtime, it’s no wonder that it has become a popular choice for developers.

If you have a Raspberry Pi and want to start developing in Go, you’ll need to install the latest version of the Golang runtime. In this article, we’ll guide you through the installation process, step by step.

Instructions

The first step is to update your Raspberry Pi’s package index and install the dependencies required for the Golang runtime:

Terminal window
sudo apt update && sudo apt install -y wget git build-essential

Next, download the latest version of Golang:

Terminal window
wget https://dl.google.com/go/go[version].linux-armv6l.tar.gz

Replace [version] with the latest version number of Golang. You can find that on their downloads ↗️ page.

Note: Recently Raspberry Pi have started support for 64-bit OS. If you are using 64-bit OS, then you need to download the linux-arm64.tar.gz file instead of linux-armv6l.tar.gz. So make sure you replace the file name in the above command.

Then, extract the archive:

Terminal window
tar -xvf go[version].linux-armv6l.tar.gz

Move the extracted folder to ~/.local/share:

Terminal window
mv go ~/.local/share

Set up the environment variables for Golang:

This depends based on the shell you are using, you can verify it using basename $SHELL command, it will output zsh, bash or fish.

Based on your shell, you need to update the correct config file for it. Let’s see the example of updating for zsh

Terminal window
echo 'export GOPATH=$HOME/.local/share/go' >> ~/.zshrc
echo 'export PATH=$HOME/.local/share/go/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

For bash, the default config file would be .bashrc and for fish it would be .config/fish/config.fish.

One Script for Everything

To summarise, we can put all of this into a single shell script to download and setup golang on armhf architecture.

#!/bin/bash
VERSION=1.21.1 # pick the latest version from https://golang.org/dl/
ARCH=armv6l # arm64 for 64-bit OS
## Download the latest version of Golang
echo "Downloading Go $VERSION"
wget https://dl.google.com/go/go$VERSION.linux-$ARCH.tar.gz
echo "Downloading Go $VERSION completed"
## Extract the archive
echo "Extracting..."
tar -C ~/.local/share -xzf go$VERSION.linux-$ARCH.tar.gz
echo "Extraction complete"
## Detect the user's shell and add the appropriate path variables
SHELL_TYPE=$(basename "$SHELL")
if [ "$SHELL_TYPE" = "zsh" ]; then
echo "Found ZSH shell"
SHELL_RC="$HOME/.zshrc"
elif [ "$SHELL_TYPE" = "bash" ]; then
echo "Found Bash shell"
SHELL_RC="$HOME/.bashrc"
elif [ "$SHELL_TYPE" = "fish" ]; then
echo "Found Fish shell"
SHELL_RC="$HOME/.config/fish/config.fish"
else
echo "Unsupported shell: $SHELL_TYPE"
exit 1
fi
echo 'export GOPATH=$HOME/.local/share/go' >> "$SHELL_RC"
echo 'export PATH=$HOME/.local/share/go/bin:$PATH' >> "$SHELL_RC"
## Verify the installation
if [ -x "$(command -v go)" ]; then
INSTALLED_VERSION=$(go version | awk '{print $3}')
if [ "$INSTALLED_VERSION" == "go$VERSION" ]; then
echo "Go $VERSION is installed successfully."
else
echo "Installed Go version ($INSTALLED_VERSION) doesn't match the expected version (go$VERSION)."
fi
else
echo "Go is not found in the PATH. Make sure to add Go's bin directory to your PATH."
fi
## Clean up
rm go$VERSION.linux-$ARCH.tar.gz

Before running the script, make sure you make it executable.

You can do it like this chmod +x install-go.sh. Replace install-go.sh with whatever name you gave to the file.

That’s it, now run the file with ./install-go.sh and it will install and setup golang on your system.

Conclusion

By following these simple steps, you should now have the latest version of Golang installed on your Raspberry Pi. Whether you’re a seasoned Go developer or just starting out, the Raspberry Pi is a great platform for developing in Golang.

With its low cost, small form factor, and powerful hardware, it provides a great way to learn and experiment with the Go programming language.

You may also like

  • # raspberrypi

    Fix Sudo not asking Password on Raspberry Pi

    If you have installed a fresh copy of Debian or Raspbian on your Raspberry Pi you might notice that sudo does not ask for a password. This is a security risk and should be fixed. Let's see how to fix it.

  • # raspberrypi

    Increase Swap Memory on Raspberry Pi

    There can be multiple scenarios where you need to increase the swap memory size on your Raspberry Pi. This post will show you how to do it.

  • # raspberrypi

    Update Wifi Password on Raspberry Pi in Headless Mode

    Changing the wifi password after the first installation can be tricky sometimes. Here is a quick guide on how to do it quickly and easily.