macにてrbenv installでOpenSSLのエラーが発生する
2022年7月11日現在、macで rbenv install
しようとするとOpenSSLのインストールでエラーが発生してしまいます。
発生している事象
rbenv install
すると、まずはruby-buildがOpenSSLをインストールしようとします。
しかし、2022年7月11日時点でOpenSSL 1.1系最新の1.1.1qをmacでビルドしようとするとエラーが発生してしまいます。
この問題はすでにOpenSSLのissueが作られています。
test/v3ext.c fails to compile on MacOS11 arm64
なので待っていれば(1.1.1rがリリースされたら)解決します。
待っていられない人向け解決方法
rbenv install
する際に環境変数 RUBY_CONFIGURE_OPTS="--with-openssl-dir=/path/to/openssl"
を設定すれば別途インストールしたOpenSSLを使用できます。
このとき使用するOpenSSLはHomebrewで入れたものや、以前に rbenv install
した際にインストールされたものを使用しても大丈夫です。
今回は新規インストールしたものを使用します。
OpenSSLを独自にビルドし、rbenv installする
私の環境は以下のとおりです。参考にする場合は適宜読み替えてください。
- Intel mac
- rbenvはHomebrew経由で導入
$ rbenv root /Users/fwhy/.rbenv
- 導入しようとしているRubyのバージョンは3.1.2
- OpenSSLのバージョンは1.1.1系のstableを使用
- OpenSSLのインストール先は本来
rbenv install
が成功していれば配置されていたであろう場所
OpenSSLのビルド
$ curl -OL https://github.com/openssl/openssl/article/refs/heads/OpenSSL_1_1_1-stable.zip
$ unzip -qq OpenSSL_1_1_1-stable.zip
$ cd openssl-OpenSSL_1_1_1-stable
$ ./config \
'--prefix=/Users/fwhy/.rbenv/versions/3.1.2/openssl' \
'--openssldir=/Users/fwhy/.rbenv/versions/3.1.2/openssl/ssl' \
'zlib-dynamic' 'no-ssl3' 'shared'
$ /usr/bin/perl "-I." -Mconfigdata "util/dofile.pl" \
"-oMakefile" include/crypto/bn_conf.h.in > include/crypto/bn_conf.h
$ /usr/bin/perl "-I." -Mconfigdata "util/dofile.pl" \
"-oMakefile" include/crypto/dso_conf.h.in > include/crypto/dso_conf.h
$ /usr/bin/perl "-I." -Mconfigdata "util/dofile.pl" \
"-oMakefile" include/openssl/opensslconf.h.in > include/openssl/opensslconf.h
$ make depend && make _all
$ make install
この時点で /Users/fwhy/.rbenv/versions/3.1.2/openssl
というディレクトリが作成されているはずです。
rbenv install
$ RUBY_CONFIGURE_OPTS="--with-openssl-dir=/Users/fwhy/.rbenv/versions/3.1.2/openssl" rbenv install 3.1.2
これでRuby 3.1.2が入るはずです。