💢
SolanaのGet Startedで発生するエラーへの対応(Ubuntu on WSL: 2023-09-30時点)
あらまし
Solanaの開発を学ぶべく、公式のGet Startedを実施していたらRust Program QuickstartのBuild your Rust programで2件もエラーにぶつかった。Linux等UNIX互換の環境が初めての人は面食らうだろう(日本語の情報もなしい)、ということで備忘録。いや、ホントこういうとこだぞ?
環境
- Ubuntu on WSL
- Windows11 Home 22H2
- Ubuntu22.04LTS
openssl1.1がFile Not Found
以下のコマンドでSolana上でHello Worldをビルドすると、openssl1.1のオブジェクトがない、と怒られる。
cargo build-bpf
Ubuntu22.04LTSのopensslは3.0.2、つまりopenssl1.1を導入する必要があるわけだ。しかし、openssl1.1は既にサポート対象外のライブラリだし、ディストロのデフォルトより古いライブラリをdpkgで導入して良いのかどうか私には判断がつかない。しかも将来的に必要になるとも思えないので今回はユーザのホームディレクトリ以下にライブラリを構築・導入することにする。
やることは、
- ホームディレクトリ以下にライブラリを格納するフォルダを作成
- openssl1.1のソースコードをダウンロード
- ビルド&テスト
- 必要なオブジェクトをライブラリを格納するディレクトリに移動
- ライブラリを格納したディレクトリにパスを通す
コマンドは以下の通り。ちなみにmake testで2件のエラーが発生するが無視して良い。
mkdir $HOME/opt
mkdir $HOME/opt/lib
cd $HOME/opt
wget https://www.openssl.org/source/openssl-1.1.1o.tar.gz
tar -zxvf openssl-1.1.1o.tar.gz
cd openssl-1.1.1o
./config
make
make test
mv $HOME/opt/openssl-1.1.1o/libcrypto.so.1.1 $HOME/opt/lib/
mv $HOME/opt/openssl-1.1.1o/libssl.so.1.1 $HOME/opt/lib/
export LD_LIBRARY_PATH=$HOME/opt/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATHは必要に応じて.bashrcに記述する。使用しなくなったら$/opt以下は削除すること推奨。
rustcが古い、と言われる
opensslの問題を解決するとビルドが進むのだが、今度はrustcは1.68.0以降が必要だ、などと言われてしまう。しかし現時点でのrustcは1.72.1。ナンノコッチャ?と思ったら、cargo build-bpfではSolana Tools同梱のrustcを使うらしい。この時点でのSolana Toolsのバージョンは1.16.14、これを1.16.15にアップデートする。
solana-install init 1.16.15
Discussion