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 Mac con una instalación de brew de mysql, la siguiente solución me solucionó el problema:
Edité el archivo mysql_config en /usr/local/Cellar/mysql/5.6.12/bin y eliminé las opciones W-compiler -Wno-null-conversion y -Wno-unused-private-field para cflags y cxxflags.
Esto resolvió el problema con "gem install mysql2".
Referencia: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html
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.