在CentOS 5.7中,我無法安裝最新版本的mysql2 gem;它沒有找到errmsg.h:Ruby的has_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/include/mysql。服務器上存在較早版本的gem,因此它必須在某一時刻成功構建。
請注意,它在檢查mysql.h時失敗,但在mysql/mysql.h中成功。但是,它不會對errmsg.h重複此操作。通過這個我猜測它沒有看/ usr/include,但我不確定。
我挖掘了extconf.rb源代碼,發現它使用have_header
方法來查找頭文件。我調試了執行,發現它正在尋找一個「mysql/errmsg.h」的相對路徑。但是我還沒有找到任何解釋它如何將其擴展到絕對路徑的文檔。
Where & have_header如何找到它的頭文件?
FWIW,我通過包含繞過實際問題'--with-mysql的,包括=/usr/include/mysql'中的gem instal命令。儘管有這個問題的答案仍然很好。 –