eselect version-manager

Use different Portage-installed versions of development tools in different projects without changing the system's default selection.

The project provides an eselect module, a resolver and optional user-local executable shims. It does not download toolchains. See the GitHub repository for its current development status.

Start here

  1. Install app-eselect/eselect-version-manager from the companion Portage overlay when a release is available.
  2. Enable only the shims you want: eselect version-manager shims install go.
  3. Add $HOME/.local/bin/eselect-version-manager/shims before system tool directories in your PATH.
  4. Inside a project, choose a version: eselect version-manager set --project go 1.22.
  5. Check the decision: eselect version-manager resolve go.

Select an installed version

eselect version-manager list go
eselect version-manager set --project go '>=1.22 <1.23'
eselect version-manager resolve go
go version

Use --user for a user-wide default, --system for an administrator default, and --file to write a shared .eselect.conf. A private project selection overrides a shared project file.

latest means the newest installed compatible package. from-file is opt-in; the Go provider reads go.mod/go.work.

Technical reference

  • Scopes and precedence — which selection takes effect.
  • Shims — install, disable and debug command dispatch.
  • Project files — convert between private and checked-in settings.
  • Providers — how commands map to installed Gentoo packages.
  • Project lookup — deterministic private project configuration.
  • Architecture — components, package ownership and cache behaviour.

This website is generated from the Markdown in docs/ by the GitHub Actions Pages workflow. It is not maintained separately.