Avatar ·

Как полностью удалить Rust, установленный через rustup?

Всем привет! Я новичок в Rust и установил его через официальный инструмент `rustup`. Теперь мне нужно полностью удалить Rust с моей системы (Windows 10), но я не могу найти простой и понятной инструкции. Проблема в том, что я не просто хочу удалить компилятор `rustc`, но и все связанные компоненты: саму утилиту `rustup`, менеджер пакетов `cargo`, стандартную библиотеку, загруженные таргеты (например, `x86_64-pc-windows-msvc`) и все установленные крейты. Я пробовал просто удалить папку `.rustup` и `.cargo` вручную, но после этого у меня остались записи в PATH и реестре Windows, и при попытке переустановить Rust возникли конфликты. Можете подсказать правильный способ полного удаления? Я пробовал запустить `rustup self uninstall` в командной строке, но получил ошибку: ``` error: could not execute 'self uninstall': The system cannot find the path specified. ``` Вот как я устанавливал Rust (стандартная команда с официального сайта): ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` После этого я добавил пути вручную в `.bashrc` (сейчас использую PowerShell). Подскажите, как аккуратно всё почистить, чтобы система стала «чистой» и я мог установить Rust заново без проблем? Заранее спасибо! <<>>

Полное удаление Rust через rustup (правильный способ)

Ошибка «could not execute 'self uninstall'» возникает, когда rustup повреждён или его исполняемый файл отсутствует. Однако есть надёжный метод, который гарантированно удалит все компоненты. Ниже — пошаговая инструкция для Windows, Linux и macOS.

Шаг 1: Используйте встроенную команду (если rustup работает)

Если rustup всё ещё доступен в PATH, выполните:

rustup self uninstall

Эта команда удалит:

  • Директорию ~/.rustup (или %USERPROFILE%\.rustup на Windows) — все тулчейны, компоненты и таргеты.
  • Директорию ~/.cargo (или %USERPROFILE%\.cargo) — сам cargo, установленные крейты и бинарники.
  • Записи в PATH, добавленные установщиком.

После выполнения команды подтвердите действие нажатием y. Это самый чистый метод.

Шаг 2: Ручное удаление (если rustup не работает)

Если вы получили ошибку, как в вопросе, удалите вручную:

  • Windows: %USERPROFILE%\.rustup и %USERPROFILE%\.cargo.
  • Linux/macOS: ~/.rustup и ~/.cargo.

Затем удалите из переменной окружения PATH строки, содержащие .cargo/bin (например, C:\Users\ВашеИмя\.cargo\bin на Windows или /home/user/.cargo/bin на Linux).

Шаг 3: Очистка реестра Windows (только для Windows)

Если вы устанавливали Rust через официальный установщик rustup-init.exe, он мог добавить записи в реестр. Откройте regedit и проверьте:

  • HKEY_CURRENT_USER\Environment — удалите строку CARGO_HOME и RUSTUP_HOME, если они есть.
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment — аналогично.

После правки реестра перезагрузите компьютер или выполните refreshenv (если используете PowerShell с модулем pscx).

Шаг 4: Проверка остатков

Убедитесь, что удаление прошло успешно:

rustc --version
# Должна быть ошибка: 'rustc' is not recognized...
cargo --version
# Аналогичная ошибка

Также проверьте, что папки .rustup и .cargo больше не существуют:

# Linux/macOS
ls -la ~/ | grep -E '\.rustup|\.cargo'

# Windows (PowerShell)
Get-ChildItem $env:USERPROFILE -Hidden | Where-Object { $_.Name -match '\.rustup|\.cargo' }

Шаг 5: Переустановка Rust

После полной очистки можно установить Rust заново:

# Windows (скачайте rustup-init.exe с https://rustup.rs)
rustup-init.exe

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

Важно: Никогда не удаляйте .rustup и .cargo вручную, если rustup self uninstall работает — это может повредить конфигурацию. Всегда сначала пробуйте встроенную команду.

<<>>

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

Если вы не уверены, что удалили все остатки, или хотите автоматизировать процесс, можно написать простой скрипт. Например, для Windows PowerShell:

# Удаление директорий
Remove-Item -Recurse -Force "$env:USERPROFILE\.rustup"
Remove-Item -Recurse -Force "$env:USERPROFILE\.cargo"

# Удаление переменных окружения из реестра (текущий пользователь)
$envPath = [Environment]::GetEnvironmentVariable("Path", "User")
$newPath = ($envPath -split ';' | Where-Object { $_ -notmatch '\.cargo\\bin' }) -join ';'
[Environment]::SetEnvironmentVariable("Path", $newPath, "User")

# Удаление CARGO_HOME и RUSTUP_HOME
[Environment]::SetEnvironmentVariable("CARGO_HOME", $null, "User")
[Environment]::SetEnvironmentVariable("RUSTUP_HOME", $null, "User")

Write-Host "Rust полностью удалён. Перезапустите терминал."

Для Linux/macOS можно использовать:

#!/bin/bash
rm -rf ~/.rustup ~/.cargo
# Удаление из PATH в .bashrc/.zshrc
sed -i '/\.cargo\/bin/d' ~/.bashrc
source ~/.bashrc
echo "Rust удалён."

Этот метод полезен, если вы хотите гарантированно очистить всё за один запуск, особенно при массовом удалении на нескольких машинах. Однако помните, что скрипт удаляет все установленные крейты и проекты в .cargo — предварительно сохраните важные данные.