😽

Rustビルド中にfailed to run custom build command for openssl-sysエラー

2021/07/09に公開

つべこべ言わずbuild-essentialを入れろ

------------------- ↓ 前書はここから ↓-------------------

Rust環境をDocker越しにでもできるように、
公式のDockerをポチポチ弄っていた。

ところが構築中に謎のエラーで進めなくなってしまう。

error: failed to run custom build command for `openssl-sys v0.9.65`
・・・
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }'

(・ω・)ナニコレ

ということで調査開始

結論から言うと

build-essential パッケージを入れれば解決だった。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

cargo install wasm-packが完了しない

Webassemblyを弄ろうとして、
wasm-packをインストールしようとしたところ。
エラーで進めなくなった

docker pull rust:slim
docker run --rm -it -t rust:slim
apt-get update && apt-get install -y git curl ssh ca-certificates libssl-dev pkg-config
cargo install wasm-pack
・・・
error: failed to run custom build command for `openssl-sys v0.9.65`
・・・
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }'

エラー全文はアコーディオンで。

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

Caused by:
  process didn't exit successfully: `/tmp/cargo-install5UxVq8/release/build/openssl-sys-b284ac8b42796184/build-script-main` (exit status: 101)
  --- stdout
  cargo:rustc-cfg=const_fn
  cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_NO_VENDOR
  X86_64_UNKNOWN_LINUX_GNU_OPENSSL_NO_VENDOR unset
  cargo:rerun-if-env-changed=OPENSSL_NO_VENDOR
  OPENSSL_NO_VENDOR unset
  CC_x86_64-unknown-linux-gnu = None
  CC_x86_64_unknown_linux_gnu = None
  HOST_CC = None
  CC = None
  CFLAGS_x86_64-unknown-linux-gnu = None
  CFLAGS_x86_64_unknown_linux_gnu = None
  HOST_CFLAGS = None
  CFLAGS = None
  CRATE_CC_NO_DEFAULTS = None
  DEBUG = Some("false")
  CARGO_CFG_TARGET_FEATURE = Some("fxsr,sse,sse2")
  running "perl" "./Configure" "--prefix=/tmp/cargo-install5UxVq8/release/build/openssl-sys-9631732ecd5b987a/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" "linux-x86_64" "-O2" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64"
  Configuring OpenSSL version 1.1.1k (0x101010bfL) for linux-x86_64
  Using os-specific seed configuration
  Creating configdata.pm
  Creating Makefile

  **********************************************************************
  ***                                                                ***
  ***   OpenSSL has been successfully configured                     ***
  ***                                                                ***
  ***   If you encounter a problem while building, please open an    ***
  ***   issue on GitHub <https://github.com/openssl/openssl/issues>  ***
  ***   and include the output from the following command:           ***
  ***                                                                ***
  ***       perl configdata.pm --dump                                ***
  ***                                                                ***
  ***   (If you are new to OpenSSL, you might want to consult the    ***
  ***   'Troubleshooting' section in the INSTALL file first)         ***
  ***                                                                ***
  **********************************************************************
  running "make" "depend"

  --- stderr
  thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 2, kind: NotFound, message: "No such file or directory" }', /usr/local/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 `/tmp/cargo-install5UxVq8`

Caused by:
  build failed

調べてみるとlibssl-dev, pkg-config, opensslを入れろと言われる。

( ̄_ ̄ )うーん、この違和感は何だろうなぁ。

その後、libssl-devやpkg-configのバージョン、
debianのバージョン、dockerイメージを変更など思いつくことを諸々試した。

最後は最低限のコマンドでも落ちることを確認した。

NG
docker pull rust:slim
docker run --rm -it -t rust:slim
apt-get update && apt-get install -y curl libssl-dev pkg-config
cargo install wasm-pack

debian公式の方のdockerではすんなり通る。

OK
docker pull debian:stable-slim
docker run --rm -it -t debian:buster-slim
apt-get update && apt-get install -y curl libssl-dev pkg-config build-essential
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install wasm-pack

(^_^;) つまり、これ? => build-essential

docker pull rust:slim
docker run --rm -it -t rust:slim
apt-get update && apt-get install -y curl libssl-dev pkg-config build-essential
cargo install wasm-pack
・・・
   Compiling wasm-pack v0.10.0
    Finished release [optimized] target(s) in 10m 06s
  Installing /usr/local/cargo/bin/wasm-pack
   Installed package `wasm-pack v0.10.0` (executable `wasm-pack`)

(・∀・) 通った。

openssl一切関係なくて草
さすがにbuild-essentialの何が影響したかはわからないが、
まぁ、とりあえず入れとくでいいだろ。

Discussion