Rust:如何在 Windows 的 Linux 子系统(WSL)下安装

一、安装步骤

在Windows Subsystem for Linux (WSL)下安装Rust,可以按照以下步骤进行:

  1. 打开WSL终端
    首先,确保你的WSL已经安装并正常运行。你可以在Windows搜索栏中输入“WSL”并选择你安装的Linux发行版(如Ubuntu)来打开它。

  2. 更新包管理器
    在开始安装之前,建议更新你的包管理器。如果你使用的是基于Debian的发行版(如Ubuntu),可以运行以下命令来更新apt

    sudo apt update && sudo apt upgrade -y
    

    这将确保所有现有的软件包都是最新的,同时更新包管理器的索引。

  3. 安装Rust和Cargo
    Rust语言和其包管理工具Cargo可以通过Rust的安装脚本来安装。在WSL终端中运行以下命令:

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

    这个命令会下载一个脚本并执行,该脚本将自动安装Rust编译器和Cargo。

  4. 配置环境变量
    安装完成后,你需要将Cargo的安装目录添加到你的PATH环境变量中。通常,安装脚本会提示你如何操作。如果你使用的是bash,可以添加如下命令到你的~/.bashrc~/.bash_profile文件中:

    source $HOME/.cargo/env
    

    然后重新加载配置文件或重新打开终端,以确保环境变量生效。

  5. 验证安装
    安装完成后,你可以通过运行以下命令来验证Cargo是否正确安装:

    cargo --version
    

    如果安装成功,你应该会看到Cargo的版本号输出。

  6. 使用Rust
    现在你已经成功在WSL下安装了Rust,可以开始编写和运行Rust程序了。

请注意,这些步骤可能因你使用的Linux发行版和WSL的版本而略有不同。如果遇到任何问题,建议查阅Rust的官方文档或寻求社区的帮助。

二、curl --proto ‘=https’ --tlsv1.2 -sSf https://sh.rustup.rs | sh 这个命令停留很久也没反应

如果你执行 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 命令后很长时间没有反应,这可能是由于多种原因造成的。以下是一些建议的解决步骤:

  1. 检查网络连接
    确保你的网络连接是稳定的,并且WSL可以访问外部网络。你可以尝试在WSL终端中ping一个常见的网站,比如 ping google.com,来检查网络连通性。

  2. 代理或VPN
    如果你在使用代理服务器或VPN,请确保它们配置正确,并且允许WSL通过它们进行连接。有时候,代理或VPN的设置可能会阻止或减慢脚本的下载速度。

  3. 尝试手动下载
    如果通过curl直接运行脚本没有反应,你可以尝试手动下载rustup安装脚本。在浏览器中访问 https://sh.rustup.rs ,然后将页面上的脚本内容保存为一个文件(比如 rustup-init.sh),之后在WSL中运行这个脚本:

    chmod +x rustup-init.sh
    ./rustup-init.sh
    
  4. 查看curl的进度
    如果可能的话,你可以尝试去掉-sSf参数来查看curl的下载进度,这样可以帮助你确定是否真的有数据在传输。命令如下:

    curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -o rustup-init.sh
    chmod +x rustup-init.sh
    ./rustup-init.sh
    
  5. 检查防火墙和安全软件
    确保你的防火墙或安全软件没有阻止curl或WSL的网络访问。

  6. 更新WSL和Linux发行版
    有时候,WSL或其Linux发行版可能存在bug或兼容性问题。确保你的WSL和Linux发行版都是最新版本。

  7. 查看日志和错误信息
    如果上述方法都不行,尝试查看curl或WSL的日志,看是否有任何错误信息可以帮助你诊断问题。

如果尝试了上述所有方法仍然无法解决问题,你可能需要更深入地调查网络设置,或者寻求社区或专业人士的帮助。在论坛、Stack Overflow或Rust社区中提问时,请提供尽可能多的信息,以便他人能够帮助你解决问题。

三、Warning: Failed to create the file rustup-init.sh: Permission denied

当你遇到 “Warning: Failed to create the file rustup-init.sh: Permission denied” 错误时,这通常意味着当前用户没有足够的权限来在指定的目录下创建文件。为了解决这个问题,你可以尝试以下几个步骤:

  1. 检查当前目录的权限
    确认你当前所在的目录是否允许你创建文件。你可以使用 ls -ld . 命令来查看当前目录的权限。

  2. 更改目录
    如果你没有在当前目录的写入权限,尝试切换到一个你有写入权限的目录,比如你的家目录(~$HOME),然后再执行下载命令。

  3. 使用sudo(不推荐)
    虽然使用 sudo 可以提供必要的权限来创建文件,但是在这种情况下并不推荐,因为 rustup-init.sh 脚本将在你的用户环境下运行,并不需要超级用户权限。

  4. 修改文件夹权限
    如果你确实需要在当前目录下创建文件,而且你有足够的权限去修改文件夹的权限,你可以使用 chmod 命令来更改文件夹的权限。但是,请谨慎操作,因为这可能会影响其他用户和应用程序对该文件夹的访问。

建议的解决方法是切换到你的家目录或其他你有写入权限的目录,然后再次尝试下载 rustup-init.sh 脚本。例如:

cd ~
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init.sh
chmod +x rustup-init.sh
./rustup-init.sh

这将确保你有足够的权限来创建和执行脚本文件。记得在执行脚本之前先给它执行权限(chmod +x rustup-init.sh)。

四、查看自己的权限

ls -ld
dr-xr-xr-x 1 xuyeping xuyeping 512 May 20 19:58 .

从给出的目录权限 dr-xr-xr-x 可以看出,当前用户(在这个例子中是 xuyeping)只有读取(r)和执行(x)权限,而没有写入(w)权限。这就是为什么你无法在当前目录下创建 rustup-init.sh 文件的原因。

为了解决这个问题,你需要改变目录的权限或者更改到一个有写入权限的目录。由于更改目录权限可能会影响系统的安全性和稳定性,因此建议的做法是切换到用户有写入权限的目录,比如用户的家目录。

请按照以下步骤操作:

  1. 切换到家目录:
cd ~

或者

cd $HOME
  1. 在家目录中下载 rustup-init.sh
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o rustup-init.sh
  1. 赋予脚本执行权限:
chmod +x rustup-init.sh
  1. 运行安装脚本:
./rustup-init.sh

这样你就应该能够在不遇到权限问题的情况下安装 Rust 了。如果你需要在家目录以外的其他地方创建文件,并且有足够的理由要这么做,你可能需要联系系统管理员来调整文件夹的权限。但请注意,随意更改系统文件夹的权限可能会导致安全问题或系统不稳定。

五、安装过程详细内容

~$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  /home/xuyeping/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory is located at:

  /home/xuyeping/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

  /home/xuyeping/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /home/xuyeping/.profile
  /home/xuyeping/.bashrc

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with standard installation (default - just press enter)
2) Customize installation
3) Cancel installation
>

info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
730.9 KiB / 730.9 KiB (100 %) 127.4 KiB/s in  2s ETA:  0s
info: latest update on 2024-05-02, rust version 1.78.0 (9b00956e5 2024-04-29)
info: downloading component 'cargo'
  8.0 MiB /   8.0 MiB (100 %)   4.2 MiB/s in  2s ETA:  0s
info: downloading component 'clippy'
info: downloading component 'rust-docs'
 15.1 MiB /  15.1 MiB (100 %)   4.4 MiB/s in  4s ETA:  0s
info: downloading component 'rust-std'
 24.3 MiB /  24.3 MiB (100 %)   4.2 MiB/s in  6s ETA:  0s
info: downloading component 'rustc'
 63.7 MiB /  63.7 MiB (100 %)   4.1 MiB/s in 18s ETA:  0s
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
 15.1 MiB /  15.1 MiB (100 %)  11.5 MiB/s in  1s ETA:  0s
info: installing component 'rust-std'
 24.3 MiB /  24.3 MiB (100 %)  18.3 MiB/s in  1s ETA:  0s
info: installing component 'rustc'
 63.7 MiB /  63.7 MiB (100 %)  19.8 MiB/s in  3s ETA:  0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'

  stable-x86_64-unknown-linux-gnu installed - rustc 1.78.0 (9b00956e5 2024-04-29)


Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, you need to source
the corresponding env file under $HOME/.cargo.

This is usually done by running one of the following (note the leading DOT):
. "$HOME/.cargo/env"            # For sh/bash/zsh/ash/dash/pdksh
source "$HOME/.cargo/env.fish"  # For fish

英文提示翻译如下:

看起来你已经成功地开始安装Rust和Cargo了!安装程序已经给出了它将要做的事情的详细说明,包括安装位置和一些环境变量的修改。这里是安装过程中所提供信息的中文解释:

欢迎来到Rust世界!

安装程序将下载并安装Rust编程语言的官方编译器及其包管理器Cargo。

Rustup的元数据和工具链将被安装到Rustup的主目录中,该目录位于:

/home/xuyeping/.rustup

你可以通过设置RUSTUP_HOME环境变量来修改这个目录位置。

Cargo的主目录位于:

/home/xuyeping/.cargo

这个目录也可以通过设置CARGO_HOME环境变量来修改。

cargo, rustc, rustup等命令将被添加到Cargo的bin目录中,该目录位于:

/home/xuyeping/.cargo/bin

安装程序将通过修改以下配置文件来将这个路径添加到你的PATH环境变量中:

/home/xuyeping/.profile
/home/xuyeping/.bashrc

这样做的目的是让你能够在任何位置直接通过命令行运行Rust相关的命令。

你可以随时卸载:如果你在未来任何时候想要卸载Rust和Cargo,只需运行rustup self uninstall命令,安装程序所做的所有更改都将被撤销。

现在,你应该已经准备好开始使用Rust进行编程了!如果你想要验证安装是否成功,可以打开一个新的终端窗口,并尝试运行rustc --versioncargo --version命令来查看Rust编译器和Cargo的版本信息。

很好,你已经成功安装了Rust!现在,为了让Rust和Cargo的命令在任何地方都能被识别和执行,你需要将这些命令的路径添加到你的环境变量PATH中。安装过程中已经提到了这一点,并为你准备了一个环境脚本文件,在$HOME/.cargo目录下。

根据你的shell类型,你需要运行相应的命令来使这个环境脚本生效。以下是具体的步骤:

  1. 对于sh/bash/zsh/ash/dash/pdksh用户
    打开你的终端,并执行以下命令:

    . "$HOME/.cargo/env"
    

    注意命令前面的点(.)是必需的,它表示在当前shell中执行脚本,而不是启动一个新的shell来执行。

  2. 对于fish用户
    如果你使用的是fish shell,你需要执行以下命令:

    source "$HOME/.cargo/env.fish"
    

    source命令在fish中与在其他shell中的行为略有不同,但效果是相同的,即在当前shell环境中执行脚本。

执行完上述命令后,你的PATH环境变量就会被更新,以包含Cargo的bin目录($HOME/.cargo/bin),这样你就可以在任何位置直接运行rustc, cargo等命令了。

如果你想要这些变更在每次打开新的终端窗口时都自动生效,你可以将上述命令添加到你的shell配置文件中(如.bashrc, .zshrc, config.fish等),具体取决于你使用的shell类型。

最后,为了验证安装和配置是否正确,你可以尝试在新的终端窗口中运行rustc --versioncargo --version,看看是否能正确显示出Rust编译器和Cargo的版本信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

许野平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值