GVM
What it is
GVM is a free Go version manager for Linux and macOS. It installs and uninstalls Go versions by tag, including release versions and tip, and can list available release tags with an option to include weekly builds. The `gvm diff` command shows files added to or removed from GOROOT. GVM also manages GOPATH package sets, including sets kept local to a repository, and can link project directories into GOPATH. Package sets can use their own native code and dependencies through an overlay prefix and related environment variables. Install options include choosing a source or name, installing protobufs or build tools, and preferring or requiring binaries. The project supports version pinning, lockfiles, automatic switching, shell integration, and CI/CD use. Installation requires Bison, and platform-specific instructions list tools such as Git, Mercurial, Make, and GCC. Building Go 1.5 or later requires an existing Go installation for bootstrapping; Go 1.4 is given as an example. The software is MIT-licensed.
For and against
For
- Installs and removes Go versions by tag.
- Manages repository-local GOPATH package sets.
- Can link project directories into GOPATH.
- Supports shell integration and CI/CD use.
- MIT-licensed and free.
Against
- Installation requires Bison.
- Additional platform tools may be required.
- Building Go 1.5 or later needs an existing Go installation.
The verdict
GVM brings Go version installation and package-set management together, with repository linking and shell integration. Check the listed build prerequisites before adopting it, especially when compiling newer Go versions.
Who it suits
GVM suits Go developers on Linux or macOS who need to manage Go versions and GOPATH package sets. It may also fit projects using repository-local package sets or CI/CD workflows.
Plans and prices
gvm
Go version management · MIT-licensed software
Read 4 Oct 2026 · github.com
On the record
- Available releases
- The `gvm listall` command lists available release tags, with an option to include weekly builds.github.com · read 4 Oct 2026
- GOROOT changes
- The `gvm diff` command lists added and removed files in GOROOT.github.com · read 4 Oct 2026
- Install options
- Install options include choosing a source or name, installing protobufs or build tools, and preferring or requiring binaries.github.com · read 4 Oct 2026
- Install versions
- It installs and uninstalls Go versions by tag, including releases and the tip version.github.com · read 4 Oct 2026
- License
- The repository includes an MIT license granting permission to use, copy, modify, distribute, sublicense, and sell copies of the software subject to its conditions.github.com · read 4 Oct 2026
- Limitations
- The README says compiling Go 1.5 and later requires an existing Go installation for bootstrapping, and gives Go 1.4 as an example.github.com · read 4 Oct 2026
- Maintainer
- The README says the project is lovingly maintained by Benjamin Knigge and welcomes contributions.github.com · read 4 Oct 2026
- Native dependencies
- GVM supports package set-specific native code and dependencies using an overlay prefix and related environment variables.github.com · read 4 Oct 2026
- Package sets
- It manages GOPATH package sets and can keep a package set local to a repository.github.com · read 4 Oct 2026
- Prerequisites
- The installation instructions require Bison, and the platform-specific sections list additional tools such as Git, Mercurial, Make, and GCC.github.com · read 4 Oct 2026
- Project linking
- GVM can link project directories into GOPATH.github.com · read 4 Oct 2026
- Purpose
- GVM provides an interface to manage Go versions.github.com · read 4 Oct 2026
- Security
- The GitHub security page opened for the repository displays no security details in the accessible page content.github.com · read 4 Oct 2026