货物:使用不稳定库特征'scoped_threads'



我在我的Ubuntu 22.04实例上克隆了这个repo: https://gitlab.conclusive.pl/devices/ubuntu-build

and I'm try run:

git submodule update --init --recursive
sudo make image PROFILE=kstr-sama5d27

我收到以下错误:

error[E0658]:使用不稳定的库特性'scoped_threads'——>/root/.cargo/registry/src/github.com-1ecc6299db9ec823/cargo-deb-1.41.3/src/data.rs: 128:5| 128 | std::thread::scope(移动|s| {)| ^^^^^^^^^^^^^^^^^^|=注意:请参阅问题#93203 https://github.com/rust-lang/rust/issues/93203获取更多信息

error[E0658]:使用不稳定的库特性'scoped_threads'——>/root/.cargo/registry/src/github.com-1ecc6299db9ec823/cargo-deb-1.41.3/src/data.rs: 130:29| 130 | let hash_thread = s.spawn(移动|| {| ^^^^^|=注意:请参阅问题#93203 https://github.com/rust-lang/rust/issues/93203获取更多信息

error[E0658]:使用不稳定的库特性'scoped_threads'——>/root/.cargo/registry/src/github.com-1ecc6299db9ec823/cargo-deb-1.41.3/src/data.rs: 162:24| 162 | Ok(hash_thread.join().unwrap())| ^^^^|=注意:请参阅问题#93203 https://github.com/rust-lang/rust/issues/93203获取更多信息

有关此错误的更多信息,请尝试rustc --explain E0658。由于之前的3个错误警告,无法编译cargo-deb。构建失败,等待其他作业完成…错误:failed to编译gpt-manipulator v0.1.0 (/home/davidg/kstr-ubuntu-build/build-kstr-sama5d27/gpt-manipulator);中间工件可以在/home/davidg/kstr-ubuntu-build/build-kstr-sama5d27/gpt-manipulator/targetmake: *** [Makefile:106: gpt-manipulator] Error 101

自从上次工作以来,源代码没有变化,所以我怀疑是外部的东西发生了变化。我在repo中执行了grep -r "thread::scope" .,没有发现这个不稳定特性的使用。

有构建错误的gpt-manipulator子模块repo是https://gitlab.conclusive.pl/devices/gpt-manipulator,我可以从这个repocargo build没有问题。

注意,我的环境是使用sudo apt-get install bc libssl-dev cargo gdisk mtools准备的。这将在系统范围内安装rust&cargo,并允许sudo访问它(sudo make image需要)。我读到使用rustup安装方法,我可以切换到夜间并允许不稳定功能,但安装这种方式sudo无法找到二进制文件。

cargo --versionrustc --version都报告1.61.0

我怎样才能成功地构建这个?

作用域线程在1.63中已经稳定,所以一些依赖项现在可能正在使用它。如果你运行的是一个早期的编译器,它会报错这种用法。一个rustup update或者你用来更新Rust的等价代码应该可以解决这个问题。

失败的命令实际上是cargo install cargo-deb。最新版本似乎使用了有作用域的线程。

作为一种解决方法,您可以安装一个特定的旧版本:

cargo install cargo-deb --version 1.28.2

可能想使用1.28.2来匹配你说的Cargo.toml中的版本,否则看起来1.40.5是最后一个不使用std::thread::scope的版本。

根据@cafce25的回答,有作用域的线程在1.63.0中是稳定的,但是目前apt仅限于提供1.61.0。

使用sudo命令获取可运行的版本>= 1.63.0:

  1. curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sudo sh
  2. 在/etc/sudoers中添加:/root/.cargo/bin

相关内容

  • 没有找到相关文章

最新更新