rustでopensslをbuildうまくできないときの対処法
みなさんこんにちは、エルゴヒューマンの椅子をかって腰の調子がすこぶる良い今日この頃です。
さて本題に入りましょう。 現在、統計的機械学習を学ぶためにRustでPRMLに乗っている手法を実装しているのですが、そこではもちろん行列計算や線形代数のツールを使う必要があります。私はrust-ndarrayを利用しています。線形代数を扱うndarray-linalgでは、intel-mklやopenblasなどを用いています。
そこで私のlinuxのマシンでbuildを行ったところ、
--- stderr thread 'main' panicked at ' Could not find directory of OpenSSL installation, and this `-sys` crate cannot proceed without this knowledge. If OpenSSL is installed and this crate had trouble finding it, you can set the `OPENSSL_DIR` environment variable for the compilation process. Make sure you also have the development packages of openssl installed. For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora. If you're in a situation where you think the directory *should* be found automatically, please open a bug at https://github.com/sfackler/rust-openssl and include information about your system as well as this message. $HOST = x86_64-unknown-linux-gnu $TARGET = x86_64-unknown-linux-gnu openssl-sys = 0.9.60
このようなエラーを吐いてとまりました。 そこで、エラーの中身を見てみると、opensslがうまく入っていないようです。
OPENSSL_DIR
がうまく設定されていない可能性- libssl-devが入っていない可能性
があるように感じました。 そこで最初に
openssl version -a
してopensslの状態を調べます。 その結果
OpenSSL 1.1.1f 31 Mar 2020 built on: Mon Apr 20 11:53:50 2020 UTC platform: debian-amd64 options: bn(64,64) rc4(16x,int) des(int) blowfish(ptr) compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -fdebug-prefix-map=/build/openssl-P_ODHM/openssl-1.1.1f=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_TLS_SECURITY_LEVEL=2 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2 OPENSSLDIR: "/usr/lib/ssl" ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-1.1" Seeding source: os-specific
と出てきたので、このパスを~/.zshrc
に書き加えました。
でも解決しませんでした。
そこで、libssl-devがうまく入っていない可能性があると思い、
sudo apt-get install libssl
しました。
Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package libssl-dev
ですが、うまく入らず。
となりうまく入らず... そこでいろいろ調べてみた結果、
/etc/apt/sources.list
に問題がありそうなことがわかりました。
で、sources.listとは何かといいますと、
に詳しく書いてあります。 これを、
に従って改変し、
sudo apt update sudo apt upgrade
したらうまく入りました。