/awesome-version-managers

A curated list of awesome Version Managers

Creative Commons Attribution 4.0 InternationalCC-BY-4.0

Awesome Version Managers Awesome

A curated list of Version Managers

Contents

Version Managers

Generic

  • anyenv - A version manager wrapper allowing maintenance of multiple version managers.
  • asdf-vm - An extendable version manager using a plugin structure to handle new version managers.

Python

  • pyenv - A tool that allows you to switch between multiple versions of Python.
  • pyenv-win - A porting of pyenv for Windows.
  • pyflow - A multipurpose Python environment manager.
  • pythonz - A program to automate the building and installation of Python versions.

Node.js

  • nvm - A version manager for Node.js, designed to be installed per user, and invoked per shell.
  • nvm-windows - Same of nvm, but for Windows.
  • n - An interactive manager that has no subshells and no profile setup.
  • nodenv - A tool that can automatically select the appropriate node version for a given project and doesn't require shell integration or overriding of builtin commands.
  • nvs - A cross-platform utility for switching between different versions and forks of Node.js.
  • nodebrew - A simple Node.js version manager.
  • nve - Run any command on specific Node.js versions.

Ruby

  • rbenv - A manager that focus on switching Ruby versions.
  • rbenv-win - A porting of rbenv to Windows.
  • rvm - A tool that is loaded into the shell, overrides some commands and also manages gemsets.
  • uru - A lightweight, multi-platform command line tool that helps you use the multiple rubies, like MRI, JRuby and Rubinius.
  • chruby - A Ruby version switcher that allows for auto-switching, updates PATH and has around 100 lines of code.

Go

  • gvm - An interface to manage Go versions.

Rust

  • rustup - A manager that installs Rust from official release channels and allows to switch between stable, beta, and nightly compilers.

Java

  • jenv - A cross-platform tool for managing parallel Versions of JDKs which allows for installing, switching, removing and listing candidates.
  • jEnv - A version switcher for Java that does not handle installation.
  • jabba - A cross-platform Java manager that allows for installation and switching of JDKs.

Swift

  • swiftenv - A Swift manager that changes version per user, set a per-project version and allows you to override the version with an environmental variable.

PHP

  • phpbrew - A utility that builds and installs multiple version of PHP in your HOME directory allowing of switching between them.
  • phpenv - A version manager that operates binaries on the user directory and utilizes shims.

Perl

  • perlbrew - A tool that manages multiple Perl environments and allows switching between them.
  • plenv - A manager that installs multiple versions on the home directory, uses shims and allows to set local version per directory.

Lua

  • luaver - A helper to manage and switch between different versions of Lua, LuaJIT and Luarocks.
  • lenv - A Lua version manager that allows installation and switching between multiple versions.

Elixir

  • kiex - A utility that allows build and switch between different Elixir versions.
  • exenv - A Elixir version manager based on rbenv.

Erlang

  • evm - A tool that allows you to install multiple versions of erlang on your system and switch between them.

Julia

  • juliavm - A CLI tool which allows you to install, manage, and work with Julia environments and switch between them.
  • jlenv - A Julia version manager based on rbenv.

Crystal

  • crenv - A Crystal version manager based on rbenv.

Flutter

  • fvm - A version manager allowing to reference Flutter SDK version on a per-project basis, allows you to have multiple versions installed.

Scala

  • svm - A version manager that switches and installs multiple Scala versions.

Terraform

  • tfenv - A Terraform version manager inspired by rbenv.

Contributing

Contributions welcome! Read the contribution guidelines first.