GVM
github.com
What it is
GVM is a free tool for managing Go versions on Linux and macOS. It installs and removes versions by tag, including releases and the tip version; `gvm listall` shows available release tags and can include weekly builds. Install options allow a source or name to be selected, along with settings for protobufs, build tools, and whether binaries are preferred or required. The `gvm diff` command reports 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. The project supports version pinning, lockfiles, automatic switching, shell integration, and CI/CD use. Installation requires Bison; platform instructions also list tools such as Git, Mercurial, Make, and GCC. Compiling Go 1.5 or later requires an existing Go installation for bootstrapping, with Go 1.4 offered as an example. The repository includes an MIT license.
Spec sheet
- Purpose
- GVM provides an interface to manage Go versions.Read 4 Oct 2026 · github.com
- Platforms
- The README provides requirements and setup instructions for macOS and Linux, and also lists FreeBSD requirements.Read 4 Oct 2026 · github.com
- Security
- The GitHub security page opened for the repository displays no security details in the accessible page content.Read 4 Oct 2026 · github.com
- 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.Read 4 Oct 2026 · github.com
- Available releases
- The `gvm listall` command lists available release tags, with an option to include weekly builds.Read 4 Oct 2026 · github.com
- GOROOT changes
- The `gvm diff` command lists added and removed files in GOROOT.Read 4 Oct 2026 · github.com
- Install options
- Install options include choosing a source or name, installing protobufs or build tools, and preferring or requiring binaries.Read 4 Oct 2026 · github.com
- Install versions
- It installs and uninstalls Go versions by tag, including releases and the tip version.Read 4 Oct 2026 · github.com
- 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.Read 4 Oct 2026 · github.com
- Maintainer
- The README says the project is lovingly maintained by Benjamin Knigge and welcomes contributions.Read 4 Oct 2026 · github.com
- Native dependencies
- GVM supports package set-specific native code and dependencies using an overlay prefix and related environment variables.Read 4 Oct 2026 · github.com
- Package sets
- It manages GOPATH package sets and can keep a package set local to a repository.Read 4 Oct 2026 · github.com
- Prerequisites
- The installation instructions require Bison, and the platform-specific sections list additional tools such as Git, Mercurial, Make, and GCC.Read 4 Oct 2026 · github.com
- Project linking
- GVM can link project directories into GOPATH.Read 4 Oct 2026 · github.com
Plans and prices
Strong points and limits
Strong points
- Installs and uninstalls Go versions by tag.
- Lists release tags, optionally including weekly builds.
- Can keep GOPATH package sets local to a repository.
- Supports version pinning, lockfiles, and automatic switching.
- MIT license permits use, modification, and distribution under its conditions.
Limits
- Installation requires Bison and may require additional tools.
- Compiling Go 1.5 or later requires an existing Go installation.
- Listed platforms are Linux and macOS.
Who it suits
GVM suits developers who need to manage Go versions and GOPATH package sets on Linux or macOS. Its repository-local package sets and CI/CD support may also fit projects with distinct Go environments.
Verdict
GVM covers Go version installation, package sets, and shell or CI/CD workflows. Before adopting it, account for its build prerequisites and the existing Go installation needed to compile Go 1.5 or later.
Where Specifiction places it
- Runtime Version Managers#11 of 307.7
- Development Environment Managers#25 of 507.7