久しぶりにローカル環境でRailsを構築した際にエラーが出たので対処法をまとめます。
使用環境
- Apple M1
- ruby 3.1.2
エラー文
bundle install
をするとmysql2のビルドエラーが出ました。
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Installing mysql2 0.5.6 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
...
中略
...
Using mysql_config at /opt/homebrew/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for SSL_MODE_DISABLED in mysql.h... yes
checking for SSL_MODE_PREFERRED in mysql.h... yes
checking for SSL_MODE_REQUIRED in mysql.h... yes
checking for SSL_MODE_VERIFY_CA in mysql.h... yes
checking for SSL_MODE_VERIFY_IDENTITY in mysql.h... yes
checking for MYSQL.net.vio in mysql.h... yes
checking for MYSQL.net.pvio in mysql.h... no
checking for MYSQL_DEFAULT_AUTH in mysql.h... yes
checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes
checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes
checking for my_bool in mysql.h... no
checking for mysql_ssl_set() in mysql.h... no
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /opt/homebrew/Cellar/mysql/8.3.0_1/lib
-----
creating Makefile
...
中略
...
An error occurred while installing mysql2 (0.5.6), and Bundler cannot continue.
In Gemfile:
mysql2
原因
MySQLのヘッダーファイルとライブラリの環境変数が設定できていなかったため。
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
というメッセージは、システム上でMySQLのライブラリへのパスを設定する方法が不明であるとのことです。
対処法
mysqlの正しいパスを設定します。
MySQLのパスを確認
正しい場合は次のように出てきます。
$ which mysql
/opt/homebrew/bin/mysql
MySQLのヘッダーファイルとライブラリの環境変数を確認
正しい場合は次のように出てきます。
自分はここが設定できていませんでした。
$ echo $LIBRARY_PATH
/opt/homebrew/lib
$ echo $CPATH
/opt/homebrew/include
環境変数を更新する
もしパスが含まれていない場合は、以下のコマンドを実行して環境変数を更新しましょう。
$ echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.bash_profile
$ echo 'export LIBRARY_PATH="/opt/homebrew/lib:$LIBRARY_PATH"' >> ~/.bash_profile
$ echo 'export CPATH="/opt/homebrew/include:$CPATH"' >> ~/.bash_profile
bash_profileを読み込む
$ source ~/.bash_profile
以上により、解決しました。
参考
こちらは事前にやった対応です。
今回の原因とは違いますが、こちらを事前に行いました。