+
mxnet
dask
+
+
::
+
+
haiku
+
cosmos
+
+
+
toml
keras
+
actix
+
+
spring
saml
macos
fortran
chef
abap
+
postgres
+
+
+
+
apex
+
+
+
+
+
delphi
+
+
+
webstorm
ocaml
gradle
ocaml
eclipse
atom
+
+
+
jasmine
+
redhat
+
yaml
+
matplotlib
+
elementary
+
=>
+
+
+
keras
+
+
+
mxnet
+
+
+
crystal
choo
+
crystal
[]
+
macos
+
&
+
css
npm
ractive
py
Back to Blog
How to Install Go on Alpine Linux: A Complete Guide
Linux Go Alpine Linux

How to Install Go on Alpine Linux: A Complete Guide

Published Mar 14, 2025

Learn multiple methods to install Go on Alpine Linux, from package managers to manual installation. This guide covers verification, environment setup, and troubleshooting common issues for a smooth Go development experience on Alpine.

6 min read
0 views
Table of Contents

How to Install Go on Alpine Linux: A Complete Guide

Introduction

Go (or Golang) is a statically typed, compiled programming language designed at Google. Known for its simplicity, efficient concurrency handling, and strong performance, Go has become increasingly popular for building everything from web servers to cloud infrastructure tools. Alpine Linux, with its lightweight, security-focused design, makes an excellent platform for Go development, especially in containerized environments.

This tutorial will walk you through different methods of installing Go on Alpine Linux, configuring your development environment, and troubleshooting common issues. By the end, you’ll have a fully functional Go development environment ready for building applications.

Prerequisites

Before we begin, make sure you have:

  • A running Alpine Linux system (this guide works on any recent version)
  • Root access or a user with sudo privileges
  • Basic familiarity with the Linux command line
  • A terminal window open
  • Internet connection to download packages

Method 1: Installing Go Using Alpine Package Manager (apk)

The simplest way to install Go on Alpine Linux is using the built-in package manager, apk. This method is quick and ensures compatibility with your Alpine system.

Updating Package Repository

First, update your package repository to ensure you have access to the latest versions:

# Update the package index
sudo apk update

Installing Go Package

Now, install Go using the apk command:

# Install Go
sudo apk add go

Verifying the Installation

After installation completes, verify that Go was installed correctly:

# Check Go version
go version

You should see output similar to:

go version go1.20.7 linux/amd64

Note that the Alpine package repositories might not have the latest Go version. If you need the most recent release, consider the official binary installation method covered in Method 2.

Method 2: Installing Go from Official Binary

If you need a specific version of Go or want the latest release, installing from the official binary distribution is the best approach.

Installing Required Dependencies

First, install some dependencies needed for the installation:

# Install dependencies
sudo apk add wget tar

Downloading the Official Binary

Visit the official Go downloads page or use wget to download the specific version you need. For this example, we’ll install Go 1.21.5:

# Create a temporary directory
mkdir -p /tmp/go-install
cd /tmp/go-install

# Download Go binary (replace with your desired version)
wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz

# Verify the download (optional but recommended)
# You can find the checksum on the Go download page
sha256sum go1.21.5.linux-amd64.tar.gz

Extracting and Installing

Remove any previous Go installation and extract the new one:

# Remove existing Go installation (if any)
sudo rm -rf /usr/local/go

# Extract the archive
sudo tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz

# Clean up
rm go1.21.5.linux-amd64.tar.gz
cd -

Configuring Environment Variables

Unlike the apk installation, manual installation requires setting up environment variables:

# Add Go to PATH for current session
export PATH=$PATH:/usr/local/go/bin

# Make it permanent by adding to your shell profile
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile
echo 'export GOPATH=$HOME/go' >> ~/.profile
echo 'export PATH=$PATH:$GOPATH/bin' >> ~/.profile

# Source the profile
source ~/.profile

Verification

Verify the installation:

# Check Go version
go version

# Check Go environment
go env

Method 3: Installing Go Using Docker (For Development)

If you’re using Alpine Linux in a Docker container or want an isolated Go environment, this method is ideal.

Creating a Dockerfile

Create a Dockerfile with Go pre-installed:

FROM alpine:latest

# Install Go from Alpine repository
RUN apk update && apk add --no-cache go

# Or install specific version from binary
# RUN apk add --no-cache wget tar && \
#     wget https://go.dev/dl/go1.21.5.linux-amd64.tar.gz && \
#     tar -C /usr/local -xzf go1.21.5.linux-amd64.tar.gz && \
#     rm go1.21.5.linux-amd64.tar.gz

# Set Go environment variables
ENV PATH="/usr/local/go/bin:${PATH}"
ENV GOPATH="/go"
ENV PATH="${GOPATH}/bin:${PATH}"

# Create working directory
WORKDIR /app

# Set the entrypoint
CMD ["/bin/sh"]

Building and Running the Container

Build and run your Go development container:

# Build the image
docker build -t alpine-go-dev .

# Run the container
docker run -it --rm -v $(pwd):/app alpine-go-dev

# Inside the container, verify Go
go version

Setting Up Your Go Development Environment

Creating Your Workspace

Go uses a specific workspace structure. Let’s set it up:

# Create Go workspace directories
mkdir -p $HOME/go/{bin,src,pkg}

# Create a test project
mkdir -p $HOME/go/src/hello
cd $HOME/go/src/hello

Writing Your First Go Program

Create a simple Hello World program:

# Create main.go
cat > main.go << 'EOF'
package main

import "fmt"

func main() {
    fmt.Println("Hello from Alpine Linux!")
}
EOF

Building and Running

Test your Go installation:

# Run the program
go run main.go

# Build the program
go build -o hello main.go

# Run the compiled binary
./hello

Installing Essential Go Tools

Go Modules

Go modules are the official dependency management system:

# Initialize a new module
go mod init example.com/hello

# Your go.mod file is created
cat go.mod

Install commonly used Go development tools:

# Install Go lint
go install golang.org/x/lint/golint@latest

# Install Go imports
go install golang.org/x/tools/cmd/goimports@latest

# Install Delve debugger
go install github.com/go-delve/delve/cmd/dlv@latest

# Install Go documentation tool
go install golang.org/x/tools/cmd/godoc@latest

Setting Up Your Editor

For VS Code users, install the Go extension:

# If you have VS Code installed
code --install-extension golang.Go

Troubleshooting Common Issues

Issue 1: “go: command not found”

This usually means Go isn’t in your PATH:

# Check if Go is installed
which go

# If not found, add to PATH
export PATH=$PATH:/usr/local/go/bin

# Make it permanent
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.profile
source ~/.profile

Issue 2: Permission Denied

If you get permission errors when installing Go tools:

# Check GOPATH permissions
ls -la $HOME/go

# Fix permissions if needed
sudo chown -R $(whoami):$(whoami) $HOME/go

Issue 3: Module Errors

If you encounter module-related errors:

# Clear module cache
go clean -modcache

# Update dependencies
go mod download

# Tidy up modules
go mod tidy

Issue 4: Alpine-Specific Build Issues

Alpine uses musl libc instead of glibc, which can cause issues with some packages:

# Install build dependencies
sudo apk add build-base

# For CGO-enabled packages
sudo apk add gcc musl-dev

# Disable CGO if not needed
export CGO_ENABLED=0
go build -o myapp main.go

Issue 5: DNS Resolution Problems

Alpine’s minimal design sometimes causes DNS issues:

# Install ca-certificates
sudo apk add ca-certificates

# Update certificates
sudo update-ca-certificates

Best Practices for Go on Alpine

1. Keep Your Images Minimal

When using Alpine for Go applications:

# Multi-stage build example
FROM golang:alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

FROM alpine:latest
RUN apk --no-cache add ca-certificates
COPY --from=builder /app/myapp /myapp
CMD ["/myapp"]

2. Use Static Binaries

Build static binaries to avoid dependency issues:

# Build a static binary
CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o myapp

3. Version Management

Consider using Go version managers for multiple versions:

# Install g (Go version manager)
wget -O - https://raw.githubusercontent.com/stefanmaric/g/master/bin/install | sh

# Install and use different versions
g install 1.20.7
g use 1.20.7

Useful Go Commands Reference

Here’s a quick reference of essential Go commands:

# Basic commands
go version          # Show Go version
go env             # Show Go environment
go help            # Show help

# Working with code
go run main.go     # Compile and run
go build          # Compile packages
go install        # Compile and install
go fmt            # Format code
go vet            # Examine code

# Modules and dependencies
go mod init       # Initialize module
go mod tidy       # Add/remove dependencies
go mod download   # Download dependencies
go get           # Add dependencies

# Testing
go test          # Run tests
go test -v       # Verbose test output
go test -cover   # Show coverage

# Documentation
go doc fmt       # Show package docs
godoc -http=:6060 # Start doc server

Conclusion

You now have a complete Go development environment on Alpine Linux! Whether you chose the simple apk installation, the flexible binary installation, or the containerized approach, you’re ready to start building Go applications.

Alpine Linux’s minimal footprint combined with Go’s efficiency makes for an excellent development and deployment platform, especially for microservices and containerized applications. Remember to keep your Alpine system updated and follow Go best practices for optimal results.

Next steps:

  • Explore Go’s extensive standard library
  • Build a simple web server using the net/http package
  • Learn about Go’s concurrency features with goroutines
  • Contribute to open-source Go projects

Happy coding with Go on Alpine Linux!