【问题标题】:can't install cargo wasm-pack无法安装货物 wasm-pack
【发布时间】:2021-10-09 06:54:56
【问题描述】:

当我在 Windows 10 64 位上运行 cargo install wasm-pack 时,我收到此错误:

error: failed to run custom build command for `openssl-sys v0.9.65`

Caused by:
  process didn't exit successfully: `C:\Users\vilgo\AppData\Local\Temp\cargo-install2J8ZNz\release\build\openssl-sys-932395a164949059\build-script-main` (exit code: 101)
  --- stdout
  cargo:rustc-cfg=const_fn
  cargo:rerun-if-env-changed=X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR
  X86_64_PC_WINDOWS_MSVC_OPENSSL_NO_VENDOR unset
  cargo:rerun-if-env-changed=OPENSSL_NO_VENDOR
  OPENSSL_NO_VENDOR unset
  openssl-src: Enable the assembly language routines in building OpenSSL.
  running "perl" "./Configure" "--prefix=C:\\Users\\vilgo\\AppData\\Local\\Temp\\cargo-install2J8ZNz\\release\\build\\openssl-sys-a51d272dcebf1fc5\\out\\openssl-build\\install" "no-dso" "no-shared" "no-ssl3" "no-unit-test" "no-comp" "no-zlib" "no-zlib-dynamic" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "no-engine" "VC-WIN64A"

  --- stderr
  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "Det går inte att hitta filen." }', C:\Users\vilgo\.cargo\registry\src\github.com-1ecc6299db9ec823\openssl-src-111.15.0+1.1.1k\src\lib.rs:469:39
  note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
warning: build failed, waiting for other jobs to finish...
error: failed to compile `wasm-pack v0.10.0`, intermediate artifacts can be found at `C:\Users\vilgo\AppData\Local\Temp\cargo-install2J8ZNz`

Caused by:
  build failed

我该如何解决? 我在常规 cmd 中运行它。

【问题讨论】:

  • 我通过直接从github pages page下载wasm-pack来修复它
  • 对我来说,今天刚刚安装了 rust,运行二进制文件只会导致错误,说在路径上找不到 rustup,即使 rustup 肯定在我的路径上。就像this issue,目前还没有解决方案……

标签: rust openssl webassembly rust-cargo wasm-pack


【解决方案1】:

确保您已安装 Open SSL 的开发包。 例如,Ubuntu 上的 libssl-dev 或 Fedora 上的 openssl-devel。如果 OpenSSL 已经安装并且 crate 仍然无法找到它,您可以设置 OPENSSL_DIR 环境变量来指定您的 Open SSL 安装路径。如果您使用的是 windows,您可以使用Win32/Win64 OpenSSL Installation Project 在 windows 上提供简单的 OpenSSL 安装。

【讨论】:

    【解决方案2】:

    问题

    我认为你的问题发生是因为这三件事都发生了:

    1. 您可能已经启动了 wasm-pack 构建 from an msys shell
    2. wasm-pack 依赖于 Rust 的 OpenSSL 绑定,默认情况下尝试通过源代码构建 OpenSSL。
    3. OpenSSL 的构建脚本是用 Perl 编写的。 msys Perl 不会创建以\ 作为目录分隔符的 Windows 路径,这会导致 OpenSSL 构建失败。

    解决方案

    这三种解决方案中的任何一种都可以解决您的问题:

    修复步骤 #3:使用本机 Windows Perl 编译 OpenSSL

    确保您的默认 Perl 安装是“本机”Windows Perl,例如 Strawberry Perl。确保您的构建环境不默认为 msys perl。然后,重新尝试从源代码编译 wasm-pack 和 OpenSSL。

    修复步骤 #2:使用预编译的 OpenSSL 库

    您可以从源代码构建 wasm-pack,但指示 Rust OpenSSL 绑定查找预编译的 OpenSSL。

    如果您还没有,请下载并安装vcpkg,我们将使用它来安装 OpenSSL:

    git clone https://github.com/Microsoft/vcpkg.git
    .\vcpkg\bootstrap-vcpkg.bat
    

    然后使用vcpkg安装OpenSSL:

    vcpkg install openssl:x64-windows-static-md
    

    (如果这不起作用,请尝试vcpkg install openssl:x64-windows。)

    然后尝试编译 wasm-pack。设置VCPKG_ROOT 告诉Rust OpenSSL 构建脚本在哪里查找,并设置OPENSSL_NO_VENDOR=1 阻止构建脚本从源代码编译OpenSSL。

    set VCPKG_ROOT=c:\path\to\vcpkg\installation
    set OPENSSL_NO_VENDOR=1
    cargo install wasm-pack
    

    修复步骤 #1:在 Windows 上使用预编译的 wasm-pack 二进制文件。

    如果您不想编译 wasm-pack 或 OpenSSL,您可以使用 rustwasm downloads page 上的 Windows 安装程序 (wasm-pack-init.exe)。或者,您也可以在 Windows Subsystem for Linux (WSL) 中运行您的 wasm-pack 构建。

    【讨论】:

    • 这些解决方案都不太适合关注this的初学者学习wasm。嗯,直接下载没问题...但仍然...特别是因为以前版本的wasm-pack (0.9.1) 安装没有问题。
    • @Elias 我同意。不过,问题在于 openssl-sys,而不是 wasm-pack。也许这可以改进。
    • 我相信 openssl-sys 正在寻找 openssl:x64-windows-static-md 目标,而不是 openssl:x64-windows 目标。
    • @Jay 谢谢!我更新了我的答案
    猜你喜欢
    • 2020-08-29
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-16
    相关资源
    最近更新 更多