# moovweb/gvm

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/moovweb-gvm).**

11,645 stars · 579 forks · Shell · MIT

## Links

- GitHub: https://github.com/moovweb/gvm
- Homepage: http://github.com/moovweb/gvm
- awesome-repositories: https://awesome-repositories.com/repository/moovweb-gvm.md

## Topics

`dependency-manager` `golang`

## Description

Gvm is a Go version manager, environment orchestrator, and dependency isolator. It provides a system for installing, removing, and switching between different versions of the Go programming language on a single machine.

The tool manages native dependencies and creates isolated package sets to prevent version conflicts between different project environments. It uses environment variable overlays and directory isolation to link native code without modifying the host operating system.

The software covers the full language lifecycle, including remote version cataloging, active version switching, and the ability to compare installation files across different software versions. It also includes utilities for specific version uninstallation and full system cleanup.

## Tags

### Programming Languages & Runtimes

- [Version Managers](https://awesome-repositories.com/f/programming-languages-runtimes/language-ecosystems-tooling/version-managers.md) — Enables installing, removing, and switching between different versions of the Go programming language on a single system.
- [Environment Orchestration](https://awesome-repositories.com/f/programming-languages-runtimes/language-ecosystems-tooling/programming-environments-tooling/go-environments/environment-orchestration.md) — Updates shell paths and environment variables to target specific Go releases and native library hierarchies.
- [Multi-Version Installations](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-execution-environments/runtime-environments/runtime-management-utilities/pre-release-runtime-installers/multi-version-installations.md) — Downloads and installs specific Go language versions using binaries for rapid runtime bootstrapping. ([source](https://github.com/moovweb/gvm/blob/master/README.md))
- [Go Development Workflows](https://awesome-repositories.com/f/programming-languages-runtimes/go-development-workflows.md) — Facilitates rapid bootstrapping and testing across different Go release targets using specific binaries.

### Development Tools & Productivity

- [Dependency Isolation Tools](https://awesome-repositories.com/f/development-tools-productivity/dependency-isolation-tools.md) — Utilizes custom path configurations to isolate Go-specific dependencies and prevent conflicts between projects.
- [Binary Dependency Bootstrapping](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/installation-resolution-utilities/dependency-installers/binary-dependency-bootstrapping.md) — Provides automated installation of pre-compiled Go binaries to quickly establish functional runtime environments.
- [Package Dependency Managers](https://awesome-repositories.com/f/development-tools-productivity/package-dependency-managers.md) — Provides capabilities to create, delete, and switch between isolated dependency environments for project-specific libraries. ([source](https://github.com/moovweb/gvm#readme))
- [Runtime Version Switching](https://awesome-repositories.com/f/development-tools-productivity/runtime-version-detectors/runtime-version-switching.md) — Updates current environment paths and root variables to switch the active Go language version instantly. ([source](https://github.com/moovweb/gvm#readme))
- [Shell Environment Managers](https://awesome-repositories.com/f/development-tools-productivity/shell-environment-managers.md) — Modifies current shell process memory and environment variables to switch active Go versions without rebooting.
- [Environment-Mapped Vendoring](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/installation-resolution-utilities/dependency-installers/dependency-download-optimizers/dependency-vendors/environment-mapped-vendoring.md) — Isolates native code dependencies by mapping specific directory structures to active environment variables.
- [Remote Version Discovery](https://awesome-repositories.com/f/development-tools-productivity/development-environment-management/environment-provisioning-configuration/developer-environment-tooling/runtime-version-managers/remote-version-discovery.md) — Queries remote API manifests to discover and list available Go releases for local installation.
- [Runtime Version Removal](https://awesome-repositories.com/f/development-tools-productivity/version-managers/runtime-version-removal.md) — Provides the ability to remove specific Go language installations from the system to reclaim disk space. ([source](https://github.com/moovweb/gvm/blob/master/VERSION))

### DevOps & Infrastructure

- [Shell Path Overlays](https://awesome-repositories.com/f/devops-infrastructure/environment-variables/shell-path-overlays.md) — Updates shell environment variables to prioritize specific Go version directories over the global system path.
- [Linked Dependency Management](https://awesome-repositories.com/f/devops-infrastructure/dependency-management/environment-scoping-controls/linked-dependency-management.md) — Manages local references and environment variables to link native code dependencies without altering the host OS. ([source](https://github.com/moovweb/gvm#readme))

### Software Engineering & Architecture

- [Isolated Runtime Directories](https://awesome-repositories.com/f/software-engineering-architecture/isolated-runtime-directories.md) — Stores different Go versions in separate directory hierarchies to prevent binary and package conflicts.
