CentOS 5.7のボックスで、mysql2 gemの最新バージョンをインストールするのに問題があります。それはerrmsg.hを見つけていない:Rubyのhave_headerメソッドはどこでヘッダファイルを探しますか?
/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 /含める/ mysqlので存在します。古いバージョンのgemがサーバー上に存在するため、ある時点で正常に構築されている必要があります。
mysql.hのチェックで失敗しますが、mysql/mysql.hで成功します。ただし、errmsg.hではこれを繰り返さない。これで私は/ usr/includeを見ていないと推測していますが、わかりません。
私はextconf.rbソースコードを掘り下げて、ヘッダファイルを見つけるのにhave_header
メソッドを使っていることを発見しました。実行をデバッグして、 "mysql/errmsg.h"という相対パスを探していることを確認しました。しかし、絶対パスに展開する方法を説明するドキュメントは見つかりませんでした。
&どのようにhave_headerがヘッダファイルを探しますか?
FWIW、私は= --with-mysqlの-含ま '含めることにより、実際の問題をバイパス/ usr/include/mysql'をgem instalコマンドに追加します。しかし、この質問に答えるのはまだ素晴らしいです。 –