gvm icon indicating copy to clipboard operation
gvm copied to clipboard

Go Version Manager (gvm) enables seamless installing and swapping between Go versions with a single command. This tool manages a Go environment for the user by allowing a user to specify which Go vers...

gvm

Go Version Manager

ShellCheck lint License: Apache 2.0 PRs Welcome

Install

curl -o- https://raw.githubusercontent.com/devnw/gvm/main/install.sh | bash
wget -qO- https://raw.githubusercontent.com/devnw/gvm/main/install.sh | bash

Updating gvm

gvm will automatically detect if there is a newer version available for the installed gvm tag and give the user the option to update (NOTE This does NOT work for semver tags). If the user chooses to update, the gvm command will be updated to the latest version and re-run the updated script instead.

Usage

gvm <command> [arguments]

Available Commands

<go version> Install or Change Specific Go Version

  • -s Silent Mode (No Prompts)

  • -r Remove Go Version

ls List Installed Go Versions

clean Remove inactive Go Versions

-h | --help | help Print this help text

Installation Example

To install a released version of Go use the following command.

gvm 1.17.5

If this version of Go has been previously installed, the link will be updated activating that version. If the version is not installed however gvm will install it, then link it.

To remove a version

gvm 1.17.5 -r

Development Version

gvm supports installing the current development version of Go

To install the current development version of Go use the following command.

gvm next

NOTE: If you have previously installed the development version of Go you must pass the --update flag if you want to build the latest development version, otherwise it will keep using the previously compiled development version.

How it works

gvm creates a directory at $HOME/.gvm and stores all of the Go versions in it. It then creates a symlink to the currently active version at $HOME/.gvm/go which is then added to the beginning of the PATH.

Supported OSes and Architectures

  • Linux (ARM64 / AMD64)
  • Mac OS X (ARM64 / AMD64)
  • FreeBSD (ARM64 / AMD64)