CentOS 5.7 ボックスで、mysql2 gem の最新バージョンをインストールできません。errmsg.h が見つかりません:
/usr/bin/ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... no
checking for mysql_query() in -lmysqlclient... yes
checking for mysql.h... no
checking for mysql/mysql.h... yes
checking for errmsg.h... no
-----
errmsg.h is missing. please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
mysql ヘッダー ファイルは /usr/include/mysql にあります。古いバージョンの gem がサーバーに存在するため、ある時点で正常にビルドされている必要があります。
mysql.h のチェックでは失敗しますが、mysql/mysql.h では成功することに注意してください。ただし、errmsg.h についてはこれを繰り返しません。これにより、/usr/include を見ていないと推測していますが、よくわかりません。
extconf.rb のソース コードを調べたところ、このhave_header
メソッドを使用してヘッダー ファイルを見つけていることがわかりました。実行をデバッグして、「mysql/errmsg.h」の相対パスを探していることを確認しました。しかし、それを絶対パスに展開する方法を説明するドキュメントは見つかりませんでした。
have_header はヘッダー ファイルをどこでどのように見つけますか?