Skip to content

rustup toolchain install <toolchain> reports unchanged for toolchains missing their manifest #4825

@Inconnu08

Description

@Inconnu08

Verification

Problem

If an installed toolchain is missing its manifest, running:

rustup toolchain install <toolchain>

does not repair the toolchain.

Instead, rustup reports the toolchain as unchanged, and commands that rely on the manifest continue to fail.

This leaves the toolchain in an unusable state without any clear recovery path.

Steps

Using a dated nightly toolchain to avoid channel updates:

  1. Install the toolchain:

    rustup toolchain install nightly-2026-01-01

  2. Remove the manifest file from the installed toolchain:

    rm ~/.rustup/toolchains/nightly-2026-01-01-*/lib/rustlib/multirust-channel-manifest.toml

  3. Verify the toolchain is broken:

    rustup component list --toolchain nightly-2026-01-01

    Output:

    error: Missing manifest in toolchain 'nightly-2026-01-01-x86_64-unknown-linux-gnu'

  4. Attempt to recover:

    rustup toolchain install nightly-2026-01-01

    Output:

    nightly-2026-01-01-x86_64-unknown-linux-gnu unchanged - rustc ...

  5. Check again:

    rustup component list --toolchain nightly-2026-01-01

    The same Missing manifest error is still reported.

Expected behavior

rustup toolchain install <toolchain> should detect that the existing toolchain is incomplete and reinstall or repair it.


Actual behavior

Rustup reports the toolchain as unchanged and leaves it in a broken state.


Possible Solution(s)

No response

Notes

Notes


Context

Discovered while working on improving error messaging for incomplete toolchains.

Related to #4724.

Rustup version

rustup 1.29.0 (28d1352db 2026-03-05)

Installed toolchains

Default host: x86_64-unknown-linux-gnu

installed toolchains
--------------------
stable-x86_64-unknown-linux-gnu (active, default)
nightly-x86_64-unknown-linux-gnu
nightly-2026-01-01-x86_64-unknown-linux-gnu

active toolchain
----------------
name: stable-x86_64-unknown-linux-gnu
active because: it's the default toolchain
installed targets:
  x86_64-unknown-linux-gnu

OS version

Pop!_OS 24.04

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions