Avatar ·

После установки rustup пишет "No default toolchain configured": что делать?

Привет, коллеги! Я новичок в Rust и пытаюсь настроить окружение. Установил rustup на Ubuntu через команду: ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` После установки перезагрузил терминал, проверил версию: ```bash rustc --version ``` И получил ошибку: ``` error: no default toolchain configured; run `rustup default stable` ``` Пробовал выполнить `rustup default stable`, но получаю: ``` error: no default toolchain configured ``` Вот вывод `rustup show`: ``` Default host: x86_64-unknown-linux-gnu rustup home: /home/user/.rustup installed toolchains -------------------- active toolchain ---------------- ``` Пусто! Ничего не установлено. Я уже проверял пути в `~/.bashrc` — там есть `source $HOME/.cargo/env`. Пробовал переустанавливать rustup через `rustup-init` — без изменений. Что я делаю не так? Почему rustup не устанавливает тулчейн по умолчанию? Может, проблема в правах доступа или в старой версии? Помогите, пожалуйста, уже второй день мучаюсь. <<>>

Причина проблемы и её решение

Ошибка "no default toolchain configured" возникает, когда rustup установлен, но не скачал ни одной версии компилятора Rust. Это может случиться из-за:

  • Прерванной установки (например, сбой сети или закрытие терминала)
  • Проблем с правами доступа к директории ~/.rustup
  • Конфликта с предыдущей установкой Rust (не через rustup)

Пошаговое решение

Шаг 1: Проверьте целостность rustup
Выполните команду для проверки и восстановления установки:

rustup self repair

Эта команда проверит все файлы rustup и исправит повреждённые.

Шаг 2: Установите тулчейн вручную
Если repair не помог, установите стабильную версию Rust напрямую:

rustup toolchain install stable

Вы должны увидеть процесс загрузки и установки. Если загрузка не начинается, проверьте интернет-соединение или попробуйте:

rustup toolchain install stable --verbose

Это покажет подробный лог, где может быть указана причина (например, SSL-сертификаты).

Шаг 3: Назначьте установленный тулчейн по умолчанию
После успешной установки выполните:

rustup default stable

Проверьте результат:

rustc --version
# Должно вывести: rustc 1.XX.X (XXXX-XX-XX)

Если ничего не помогает — чистая переустановка

Иногда проще удалить всё и начать заново. Удалите rustup и все его файлы:

rustup self uninstall

Затем вручную удалите остатки:

rm -rf ~/.rustup ~/.cargo

После этого установите rustup заново:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

Важно: Во время установки выберите опцию 1 (Proceed with installation). После завершения перезагрузите терминал или выполните:

source ~/.cargo/env

Дополнительные советы

  • Убедитесь, что у вас есть права на запись в ~/.rustup и ~/.cargo: ls -la ~ | grep -E '\.rustup|\.cargo'
  • Если вы используете прокси или корпоративный firewall, настройте переменные окружения: export https_proxy=http://proxy:port
  • Проверьте, не блокирует ли антивирус загрузку исполняемых файлов

<<>>

Альтернативный подход: использование офлайн-установщика

Если проблема связана с сетевыми ограничениями (например, вы в изолированной среде или за строгим прокси), можно установить Rust через офлайн-установщик.

Шаг 1: Скачайте установочный пакет
На другом компьютере с доступом в интернет скачайте архив с тулчейном:

wget https://static.rust-lang.org/dist/rust-1.XX.X-x86_64-unknown-linux-gnu.tar.gz

Замените 1.XX.X на актуальную версию (можно узнать на официальном сайте).

Шаг 2: Перенесите архив на целевую машину
Используйте USB-накопитель или внутреннюю сеть.

Шаг 3: Распакуйте и установите
Выполните:

tar -xzf rust-1.XX.X-x86_64-unknown-linux-gnu.tar.gz
cd rust-1.XX.X-x86_64-unknown-linux-gnu
./install.sh --prefix=$HOME/.rustup/toolchains/stable-x86_64-unknown-linux-gnu

После этого назначьте тулчейн по умолчанию:

rustup default stable

Примечание: Этот метод подходит для случаев, когда rustup toolchain install не может скачать файлы из-за сетевых проблем. После установки тулчейна офлайн, rustup будет работать как обычно для обновлений, если сеть появится.