Wednesday, October 4, 2023

Install specific Go version on Linux

A bash script for installing a specific Go version on Linux (AMD64).

  • Expects a numeric version as a parameter (e.g. 1.21.1).
  • Downloads & extracts the Go archive under /usr/local/lib/go$VERSION
  • Creates a symlink for ./bin/go under /usr/local/bin/go

#!/usr/bin/env bash

declare VERSION="${1}"
declare PROGRAM="go${VERSION}"
declare ARCHIVE="${PROGRAM}.linux-amd64.tar.gz"
declare LIB_DIR="/usr/local/lib"
declare BIN_DIR="/usr/local/bin"
declare INSTALL="${LIB_DIR}/${PROGRAM}"
declare SYMLINK="${BIN_DIR}/go"

if [[ ! -d "${INSTALL}" ]]; then
  wget --timestamping "https://go.dev/dl/${ARCHIVE}"

  if [[ ! -f "${ARCHIVE}" ]]; then
    echo "File not found: ${ARCHIVE}"
    exit 1
  fi

  sudo tar -xvf "${ARCHIVE}"
  sudo mv -f go "${PROGRAM}"
  sudo mv -f "${PROGRAM}" "${LIB_DIR}"
else
  echo "${INSTALL} already exists"
fi

sudo rm -f "${SYMLINK}"
sudo ln -s "${LIB_DIR}/${PROGRAM}/bin/go" "${SYMLINK}"

No comments: