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
- Install
app-eselect/eselect-version-managerfrom the companion Portage overlay when a release is available. - Enable only the shims you want:
eselect version-manager shims install go. - Add
$HOME/.local/bin/eselect-version-manager/shimsbefore system tool directories in yourPATH. - Inside a project, choose a version:
eselect version-manager set --project go 1.22. - 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.