In una scatola di CentOS 5.7, ho problemi nell'installare la versione più recente della gemma mysql2; non è trovare errmsg.h: esistonoDove si trova il metodo have_header di Ruby per i file di intestazione?
file 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 in/usr/include/mysql. Sul server esiste una versione precedente della gemma, quindi deve essere stata creata correttamente in un punto.
Si noti che non riesce su un controllo per mysql.h, ma riesce su mysql/mysql.h. Tuttavia, non lo ripete per errmsg.h. Con questo immagino che non stia guardando/usr/include, ma non ne sono sicuro.
Ho scavato nel codice sorgente extconf.rb e ho scoperto che sta usando il metodo have_header
per localizzare i file di intestazione. Ho eseguito il debug dell'esecuzione per scoprire che sta cercando un percorso relativo di "mysql/errmsg.h". Ma non ho trovato alcuna documentazione che spieghi come si espande in un percorso assoluto.
Dove & come fahead_header a localizzare i suoi file di intestazione?
FWIW, ho aggirato il problema reale includendo '--with-mysql-includono =/usr/include/mysql' nel comando gem instal. Sarebbe comunque bello avere una risposta a questa domanda. –