with rails mac kali for actualizar mysql ruby-on-rails ruby rubygems bundler

mysql - rails - ruby kali linux



Errores al instalar la gema mysql2 a través del Bundler (9)

Estoy tratando de instalar la gema mysql2 través del Bundler, pero sigue muriendo con el siguiente error:

** executing command /home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems/installer.rb:483:in ''rescue in block in build_extensions'': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) /home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb --with-mysql-config=/usr/bin/mysql_config checking for rb_thread_blocking_region()... yes checking for mysql.h... no checking for mysql/mysql.h... no ----- mysql.h is missing. please check your installation of mysql and try again. ----- *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/home/cc_rails/.rvm/rubies/ruby-1.9.2-p0/bin/ruby --with-mysql-config Gem files will remain installed for inspection.

La mayoría de las cosas que encontré a través de Google recomendaban pasar el --with-mysql-config para arreglarlo. Entonces, basado en:

$ which mysql_config /usr/bin/mysql_config

Agregué lo siguiente a la configuración del Bundler:

$ bundle config build.mysql2 --with-mysql-config=''/usr/bin/mysql_config''

Sin embargo, todavía no hay suerte, el mismo accidente que el anterior.

Como se está muriendo con el error mysql.h is missing , lo verifiqué, y supuestamente está cerca, simplemente no lo puedo encontrar en el Bundler.

$ find / -name mysql.h /usr/include/mysql5/mysql/mysql.h

¿Alguna idea?


El problema anterior se producirá porque el paquete mysql-devel no está instalado correctamente en su sistema. Se me explicará lo mismo en Centos sobre cómo solucionarlo. Cuando intenta instalar ese paquete usando,

yum install mysql-devel

a veces se producirá algún conflicto con los paquetes existentes que se instalan si instala la herramienta MySQL-Administrative y el buscador de consultas MySQL.

En ese caso, debe desinstalar todos los paquetes mysql2 existentes e instalarlos nuevamente.

rpm -qa -last | grep -i mysql yum remove MySQL-server-5.5.27-1.rhel5 yum remove MySQL-client-5.5.27-1.rhel5 yum remove mysql-gui-tools-5.0r12-1rhel4 yum remove mysql-query-browser-5.0r12-1rhel4-a

Por lo tanto, puede desinstalar cualquier cosa mysql que se muestre con rpm -qa como arriba.

Luego puede instalar mysql-server y mysql-client.

yum install mysql-server yum install mysql-client

Ahora haces la instalación del paquete mysql-devel.

yum install mysql-devel

Ahora no hay conflictos de paquetes y puede instalar la gema mysql2.

gem install mysql2 -v ''0.3.11''

Ahora su gema mysql2 se instalará con éxito y estará listo.


En mi Ubuntu 16.04.4 LTS ejecutando mysql Ver 15.1 Distrib 10.0.34-MariaDB, para debian-linux-gnu (x86_64) usando readline 5.2 , funcionó lo siguiente:

sudo apt-get install libmariadb-client-lgpl-dev

Vi que el mensaje de error del instalador actual sugiere ejecutar

apt-get install libmysqlclient-dev

Esto podría funcionar también.


En mi caso, el problema era una secuencia de comandos mysql_config que funcionaba mal. Cuando se invoca mediante la línea de comando con la opción --cflags, devuelve una cadena de opciones que contiene:

-Xclang -target-feature -Xclang -aes -Qunused-arguments

Por alguna razón, la llamada a have_header (''mysql.h'') en el script extconf.rb fallaría si se incluyeran esas opciones.

Lo que funcionó para mí fue editar manualmente el archivo mysql_config quitando la referencia a esas opciones de la línea:

cflags="-I$pkgincludedir -Os -w -pipe -march=native -Xclang -target-feature -Xclang -aes -Qunused-arguments -O2 -g -DDBUG_OFF " #note: end space!

el cual reescribí como:

cflags="-I$pkgincludedir -Os -w -pipe -march=native -O2 -g -DDBUG_OFF " #note: end space!


La respuesta fue similar a la publicada por Wrikken: esto es lo que hice para solucionarlo por el bien de los futuros lectores.

(Esto es para RHEL 5.5 - se aplican comandos similares pero diferentes para Ubuntu / Debian / etc.)

Al hacer sudo yum list installed se imprimirán todos los paquetes instalados en su máquina (nota: yum en RHEL requiere que agregue un repositorio de Red Hat Network [Yo uso EPEL ] y lo ejecute a través de sudo ).

Tenía mysql y mysql-server , lo que explicaba por qué MySQL funcionaba bien para todas las aplicaciones preexistentes, pero no para mysql-devel , que es necesario para corregir que mysql.h is missing errores y otros errores de compilación similares.

Para mysqldump -u root -ppassword --all-databases > full-dump.sql , después de un mysqldump -u root -ppassword --all-databases > full-dump.sql por seguridad, se solucionó con un simple

sudo yum install mysql-devel


Me encontré con este problema mientras instalaba el paquete para redmine en fedora 23. La solución que encontré fue emitir este comando: sudo dnf install redhat-rpm-config .

Esto no solo solucionó mi problema al instalar mysql2, sino también para nokogiri y redcarpet.



Para Ubuntu tienes que instalar lo siguiente. libmysqlclient-dev libmysqlclient16


Sé que esto es antiguo, pero si alguien sigue teniendo este error de zlib, asegúrese de haber tipeado: uso de rvm

(Cualquiera que sea la versión que estés usando)

Podría haber jurado que hice eso. Solo publique en caso de que alguien se quite el pelo y esto ayuda. Si no es buena suerte. :)


Tengo el mismo error. y para ubuntu 16. Tuve que escribir debajo del comando:

sudo apt-get install libmysqlclient-dev

y funciona de regreso.