Rust安装在Windows子系统Linux上失败:无法重命名组件文件

6
我正在尝试在Windows子系统Linux(WSL)上安装Rust,通过运行官方提供的以下命令(链接)

curl https://sh.rustup.rs -sSf | sh

我已经从Microsoft Store安装了Ubuntu。
问题是安装失败,并报告了5个类似的错误:

error: could not rename component file from '/home/thesdev/.rustup/tmp/glf5z1z643ehld0x_dir/bk' to '/home/thesdev/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/share/man'

...

error: failed to install component: 'rust-docs-x86_64-unknown-linux-gnu', detected conflict: '"share/doc/rust/html"'

屏幕截图来自VS Code。 在Ubuntu应用程序中尝试会导致相同的错误。

尝试使用 strace 并查看哪个系统调用失败。 - the8472
请勿将您的代码作为图像发布。我投了反对票,因为与终端输出图像相同的原则适用于此。 - Stargateur
@Stargateur 我这样做是因为它很冗长。但我在问题中将输出的更重要部分作为文本包含了进去。 - thesdev
没有问题,问题可以有很多字符。图片无法复制,移动用户和低连接用户会更喜欢下载5ko而不是大小为5Mo的图片。 - Stargateur
@the8472 我不确定我应该发布哪一部分,但这是输出的最后一部分:[![wsl-error.png](https://i.postimg.cc/9fTKQmTG/Untitled.png)](https://postimg.cc/hJDpCq2j) - thesdev
@the8472 或许这更有用:strace-log。我猜测 stat("/home/thesdev/.terminfo", 0x7fffd10d32c0) = -1 ENOENT (No such file or directory) 是问题开始的地方。 - thesdev
5个回答

5

4

在多次安装失败并出现相同错误后,我不得不清空我的 .rustup 目录。然后我使用 sudo 运行了 Rust 安装程序。我建议您暂时关闭防病毒保护,因为那似乎会引起问题。

完整的命令序列:

$ sudo rm -rf ./home/<your_username>/.rustup
$ curl 'https://sh.rustup.rs' -sSf > rustinstall.sh
$ chmod +x rustinstall.sh
$ sudo ./rustinstall.sh -y

1
^是唯一对我有效的解决方案。 我执行了以下操作: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustinstall.shsudo chmod +x ./rustinstall.sh - Caruso33
确实,chmod +x 是必要的! - jaques-sam

1

可能的解决方案 - 在安装过程中禁用实时防病毒保护

我遇到了非常类似的问题:

“信息: 正在同步‘stable-x86_64-unknown-linux-gnu’的频道更新” “信息: 最新更新于2019年7月4日,Rust版本为1.36.0(a53f9df32 2019-07-03)” “信息: 正在下载组件‘rustc’,91.1 MiB / 91.1 MiB(100%),777.6 KiB/s,预计时间:1分钟30秒” “信息: 正在下载组件‘rust-std’,61.3 MiB / 61.3 MiB(100%),269.1 KiB/s,预计时间:6分钟2秒” “信息: 正在下载组件‘cargo’,4.6 MiB / 4.6 MiB(100%),499.2 KiB/s,预计时间:10秒” “信息: 正在下载组件‘rust-docs’,11.0 MiB / 11.0 MiB(100%),128.8 KiB/s,预计时间:1分钟24秒” “信息: 正在安装组件‘rustc’,91.1 MiB / 91.1 MiB(100%),8.7 MiB/s,预计时间:9秒” “信息: 正在安装组件‘rust-std’,61.3 MiB / 61.3 MiB(100%),11.4 MiB/s,预计时间:5秒” “信息: 正在安装组件‘cargo’” “信息: 正在安装组件‘rust-docs’,11.0 MiB / 11.0 MiB(100%),537.6 KiB/s,预计时间:44秒” “信息: 回滚更改,错误:无法将组件文件从‘/home/dg/.rustup/tmp/k_625bkits6oph6j_dir/rust-docs/share/doc/rust/html’重命名为‘/home/dg/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/share/doc/rust/html’” “信息: 原因:权限被拒绝(操作系统错误13)”

我阅读了关于在Windows上解压文档速度缓慢的问题(此线程-在Windows 10上安装rust-docs组件非常缓慢)。他们提到反病毒软件会影响速度。

我关闭了实时保护功能,然后再次运行安装脚本,这次没有出现任何问题。

"信息:正在为 'stable-x86_64-unknown-linux-gnu' 同步频道更新" "信息:最新更新于2019年07月04日,Rust版本为1.36.0(a53f9df32 2019-07-03)" "信息:正在下载组件 'rustc'" "信息:正在下载组件 'rust-std'" "信息:正在下载组件 'cargo'" "信息:正在下载组件 'rust-docs'" "信息:正在安装组件 'rustc',91.1 MiB / 91.1 MiB (100 %),速度为 9.1 MiB/s,剩余时间 8 秒" "信息:正在安装组件 'rust-std',61.3 MiB / 61.3 MiB (100 %),速度为 12.2 MiB/s,剩余时间 5 秒" "信息:正在安装组件 'cargo'" "信息:正在安装组件 'rust-docs',11.0 MiB / 11.0 MiB (100 %),速度为 299.2 KiB/s,剩余时间 27 秒" "信息:默认工具链设置为 'stable'" "已成功安装稳定版 - rustc 1.36.0 (a53f9df32 2019-07-03)" "Rust现在已安装。太棒了!"

1
似乎在命令开头添加sudo就可以解决问题。

是的,这个简单的技巧在普通的Windows 8上为我完成了工作 :) - Sergey Ushakov

0

对于任何使用WSL 2的人,请尝试以下操作:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接