Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. GVM

GVM

MITShell

A command-line tool to manage multiple Go versions and isolate project dependencies via GOPATH workspaces.

Visit WebsiteGitHubGitHub
11.6k stars580 forks0 contributors

What is GVM?

GVM is a Go Version Manager that provides a streamlined interface for installing, switching between, and managing multiple Go versions on a single system. It addresses dependency conflicts and API changes that can disrupt development workflows by enabling isolated environments and separate GOPATH workspaces.

Target Audience

Go developers who need to work on multiple projects requiring different Go versions or isolated dependency sets, such as those maintaining legacy systems while adopting new releases.

Value Proposition

Developers choose GVM for its ability to manage both Go versions and project-specific package sets, offering dependency isolation and native code vendoring to maintain reproducible and conflict-free development environments.

Overview

Go Version Manager

Use Cases

Best For

  • Managing multiple Go versions on a single development machine to test compatibility across releases.
  • Isolating project dependencies to prevent conflicts between different Go projects using separate GOPATH workspaces.
  • Bootstrapping newer Go versions (1.5+) by easily installing and using Go 1.4 as a compiler base.
  • Vendoring platform-specific native code and dependencies within isolated package sets for consistent builds.
  • Quickly switching between Go weekly builds, release versions, or the latest tip for experimentation or testing.
  • Linking project directories into GOPATH for convenient development within managed Go environments.

Not Ideal For

  • Teams using Docker or containerized development environments, as GVM's local version management is redundant with container isolation.
  • Projects exclusively built with Go modules (1.11+), since GVM's dependency isolation is based on the older GOPATH model.
  • Developers on locked-down systems with strict security policies, due to GVM's reliance on script-based installation and external tooling.
  • Simple setups where only one Go version is needed, as GVM adds unnecessary complexity for single-version workflows.

Pros & Cons

Pros

Flexible Version Installation

Supports installing specific releases, weekly builds, and tip versions with commands like `gvm install go1.4` or `gvm listall`, offering broad compatibility testing.

Isolated Dependency Management

Creates separate GOPATH workspaces using `gvm pkgset create/use/delete` to prevent conflicts between projects, ensuring reproducible environments.

Native Code Vendoring Support

Provides environment variables like `GVM_OVERLAY_PREFIX` to vendor platform-specific native code and dependencies, aiding in consistent builds for CGO projects.

Source Caching Efficiency

Caches a clean copy of Go source code to speed up installation of multiple versions, reducing download times and network usage.

Cons

Complex Bootstrap Process

Installing Go 1.5+ requires a multi-step process with Go 1.4 and environment variable setup, as detailed in the 'A Note on Compiling Go 1.5+' section, which can be error-prone.

OS-Specific Dependency Hassles

Requires installing additional tools like Bison, Mercurial, and build tools that vary by operating system, complicating initial setup and maintenance.

GOPATH-Centric Legacy Model

Built around GOPATH workspaces, it may not seamlessly integrate with Go modules, potentially causing confusion or extra configuration in modern Go development.

Fragile State Management

The troubleshooting note admits that file states can get mixed up during upgrades, sometimes necessitating a complete removal of `~/.gvm`, indicating instability.

Frequently Asked Questions

Quick Stats

Stars11,638
Forks580
Contributors0
Open Issues204
Last commit1 year ago
CreatedSince 2011

Tags

#dependency-manager#environment-management#developer-tools#dependency-management#golang#cli#workspace#version-manager#go

Built With

B
Bash
z
zsh

Links & Resources

Website

Included in

Go169.1k
Auto-fetched 1 day ago

Related Projects

KubernetesKubernetes

Production-Grade Container Scheduling and Management

Stars122,869
Forks43,267
Last commit1 day ago
MobyMoby

The Moby Project - a collaborative project for the container ecosystem to assemble container-based systems

Stars71,637
Forks18,960
Last commit3 days ago
traefiktraefik

The Cloud Native Application Proxy

Stars63,596
Forks6,040
Last commit3 days ago
GiteaGitea

Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD

Stars56,177
Forks6,781
Last commit1 day ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub