rust-lang / rust-lang/rustup

Add shared toolchain directories

Open
#4,967 8 comments 0 reactions 1 assignee View on GitHub

@rami3l is already working on this.

Since Sep 3, 2026.

enhancement
Dominant language
Rust
Stars
7k
Forks
1.1k
Avg merge
22h 40m
Merged PRs (30d)
46

Description

Problem you are trying to solve

Hello!

As a package maintainer, I want to package different Rust toolchain distributions, such as stable, nightly, specific stable versions, or custom forks (for example, the ESP toolchain). To make this practical, some kind of toolchain multiplexer is needed. While I could write a minimal multiplexer myself, it would lack many useful features.

On the other hand, I could use rustup, which is widely adopted and well supported. However, its main drawback is poor integration with OS package managers. There is no automatic way to make a system-provided Rust toolchain available through rustup. Although it is possible to manually link a system toolchain, there is no mechanism to keep it synchronized with updates from the package manager.

As a user, I want to be able to use both the system-provided toolchain and the official Rust toolchain. For example, I may use one for day-to-day development and the other for feature testing or validation or in some cases I may want to use local distribution infrastructure. Which is possible but with some extra work.

Solution you'd like

To solve these issues, a separate shared directory managed by external tools could be added.

rustup should automatically discover toolchains from the shared directory.

Toolchains in RUSTUP_HOME should take precedence over toolchains from the shared directory. If a local toolchain shadows a shared toolchain with the same name, this should be clearly indicated. For example:

rustup default alt
info: shared toolchain overridden by `RUSTUP_HOME` toolchain
info: default toolchain set to alt

This feature should be opt-in. It should be possible to enable it through user or system configuration, or with an environment variable.

rustup toolchain list should clearly indicate which toolchains belong to which mechanism. For example:

$ rustup toolchain list
shared toolchains:
alt-1.90 (default)
alt-1.92
alt-nightly-1.95 (shadowed)
esp (shadowed)

local:
stable
alt-nightly-1.95
esp (active)
nightly
$ rustup toolchain list -v
shared toolchains (/usr/lib64/rust-toolchains/):
alt-1.90 (default) /usr/lib64/rust-toolchains/alt-1.90/
alt-1.92 /usr/lib64/rust-toolchains/alt-1.92/
alt-nightly-1.95 (shadowed) /usr/lib64/rust-toolchains/alt-nightly-1.95/
esp (shadowed) /usr/lib64/rust-toolchains/esp

local (/home/user/.rustup):
stable /home/user/.rustup/toolchains/stable
alt-nightly-1.95 /home/user/.rustup/toolchains/alt-nightly-1.95
esp (active) /home/user/RPM/BUILD/rust-esp/build/host/stage1
nightly /home/user/.rustup/toolchains/nightly
Notes

Related to https://github.com/rust-lang/rustup/issues/313, https://github.com/rust-lang/rustup/issues/1085, and https://github.com/rust-lang/rustup/issues/2383.

Unresolved problem:
Should this feature provide a mechanism for specifying multiple shared directories, or should it support only a single shared directory?

I have some initial work in progress, so I would like to implement this feature.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.