新しい Mac(M1/M2)で Ruby というプログラミング言語を使おうとした時、
「OpenSSL が見つかりません」というエラーが出ました。
この記事では、その問題を解決した方法を紹介します
前提条件
- Macを使用していること
- Homebrewが導入していること(パソコンにプログラムをインストールするためのツール)
- rbenvがインストールされていること(Ruby のバージョンを管理するためのツール)
- ターミナルを使用(もしくはiTerm)
今回のエラー
環境構築でruby-3.3.4をインストールしようとしたらエラーになった。
rbenv install 3.3.4 //バージョンを指定してRubyをインストール
「OpenSSLライブラリが見つかりません。」とエラー
OpenSSL library could not be found.
You might want to use --with-openssl-dir=<dir> option to
specify the prefix where OpenSSL is installed.
解決方法
1. 古いOpenSSLをアンインストール
OpenSSLとは、インターネットで安全に通信するためのツール。
分かりやすく説明すると、インターネットで手紙を送るようなもの。
普通の手紙だと、鍵が掛かっていないため、誰かに中身を見られる可能性が
でもOpenSSLを使うと、手紙を「秘密の箱」に入れて、鍵をかけて送信。
正しい鍵を持っている受信者だけが箱を開けられるので、安全
まず、古い OpenSSLをアンインストールして、新しくインストールし直す。
ターミナルで以下のコマンドを順番に実行
# 古い OpenSSL をアンインストール
brew uninstall --ignore-dependencies openssl@3
# 設定ファイルも消す(※パスワードを聞かれたらPC立ち上げ時のパスワードを入力)
sudo rm -rf /usr/local/etc/openssl@3
# 新しい OpenSSL をインストールする
arch -arm64 brew install openssl@3
2. 環境変数を設定
環境変数とは、コンピュータへの「道案内」のようなもの。
コンピュータが動くときに「どこに必要なファイルがあるか」や「どう動いてほしいか」を教えるもの。
今回は、コンピュータに「OpenSSLがどこにあるか」を教えるために設定する!
これがないと、コンピュータはOpenSSLを見つけられず、Rubyが正しく動かない。
以下の設定を ~/.zshrc というファイルの最後に追記
# Ruby が OpenSSL を見つけられるようにする設定
export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/opt/openssl@3"
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig"
export PATH="/usr/local/opt/openssl@3/bin:$PATH"
設定を追加したら、以下のコマンドで設定を有効化
source ~/.zshrc
3. Ruby をインストールしよう
最後に、Ruby をインストール
以下のコマンドを実行:
RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/opt/openssl@3" arch -x86_64 rbenv install 3.3.4
うまくいかないときは?
以下のコマンドを実行して確認してみよう
- Homebrew が最新か
brew update
- rbenv が最新か
brew upgrade rbenv ruby-build
- 環境変数で設定がした内容が正しく読み込まれているか
source ~/.zshrc
覚えておくと便利なこと
- Rubyをインストールする時に、「arch -x86_64」をつけて実行するといい!
「arch -x86_64」とは・・新しいMac(M1/M2チップ)でも、古いIntel用のソフトウェアを動かすための命令。RubyやOpenSSLのようなツールは、もともとIntelチップ用に作られている。新しいMac(M1/M2チップ)でそのまま動かそうとすると、うまく動かないことがあるため「arch -x86_64」をつけてインストールすると
- インストールが終わったら、以下のコマンドで使いたいRubyのバージョンを指定できます:
rbenv global 3.3.4 # コンピュータ全体で使うバージョンを設定 # または rbenv local 3.3.4 # 今いるフォルダだけで使うバージョンを設定
最後に
自分用に記事を作成してみた。
エラーが出た時に「何が原因かわからない」と焦るのではなく、仮説を立ててとにかく手を動かすことが
大切だと学んだ。chatgptを活用すればある程度解決できると感じた。