En una caja de CentOS 5.7, tengo problemas para instalar la versión más nueva de la gema mysql2; no es la búsqueda de errmsg.h: existen¿Dónde el método have_header de Ruby busca archivos de encabezado?
archivos de cabecera/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 en/usr/include/mysql. Existe una versión anterior de la gema en el servidor, por lo que debe haberse construido con éxito en un punto.
Tenga en cuenta que falla en una comprobación de mysql.h, pero tiene éxito en mysql/mysql.h. Sin embargo, no repite esto para errmsg.h. Con esto, supongo que no está mirando/usr/include, pero no estoy seguro.
He buscado en el código fuente extconf.rb y descubrí que está utilizando el método have_header
para localizar los archivos de encabezado. Depuré la ejecución para descubrir que está buscando una ruta relativa de "mysql/errmsg.h". Pero no he encontrado ninguna documentación que explique cómo se expande en una ruta absoluta.
Donde & ¿cómo has_header encuentra sus archivos de cabecera?
Fwiw, que pasa por alto el problema real mediante la inclusión de '--with-mysql-include =/usr/include/mysql' en el comando gem instal. Sin embargo, sería bueno tener una respuesta a esta pregunta. –