rails mysql ruby rubygems mysql2 libmysql

rails - gem mysql2 versions



Ruby gem mysql2 instala falla (11)

Cuando trato de instalar la gema mysql2, falla sin errores aparentes. ¿Alguien sabe qué hacer para evitar esto, así que las instalaciones de mysql2?

Tanner-Smiths-MacBook-Pro:Humans_vs_Zombies_Parse tanner$ sudo gem install mysql2Building native extensions. This could take a while... ERROR: Error installing mysql2: ERROR: Failed to build gem native extension. /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb checking for rb_thread_blocking_region()... no checking for mysql_query() in -lmysqlclient... no checking for main() in -lm... yes checking for mysql_query() in -lmysqlclient... no checking for main() in -lz... yes checking for mysql_query() in -lmysqlclient... no checking for main() in -lsocket... no checking for mysql_query() in -lmysqlclient... no checking for main() in -lnsl... no checking for mysql_query() in -lmysqlclient... no checking for main() in -lmygcc... no checking for mysql_query() in -lmysqlclient... no *** 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=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby --with-mysql-config --without-mysql-config --with-mysql-dir --without-mysql-dir --with-mysql-include --without-mysql-include=${mysql-dir}/include --with-mysql-lib --without-mysql-lib=${mysql-dir}/lib --with-mysqlclientlib --without-mysqlclientlib --with-mlib --without-mlib --with-mysqlclientlib --without-mysqlclientlib --with-zlib --without-zlib --with-mysqlclientlib --without-mysqlclientlib --with-socketlib --without-socketlib --with-mysqlclientlib --without-mysqlclientlib --with-nsllib --without-nsllib --with-mysqlclientlib --without-mysqlclientlib --with-mygcclib --without-mygcclib --with-mysqlclientlib --without-mysqlclientlib Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6 for inspection. Results logged to /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/ext/mysql2/gem_make.out


Cavé durante 2 días en Internet y , y no fue hasta que encontré este enlace y luego comencé a trabajar con este ticket para mysql2 que resolví el problema.

Con mi configuración (como se explica en el ticket), los interruptores del compilador de -Wno-null-conversion -Wno-unused-private-field se romperían y darían un error que no era exactamente correcto, que era:

mysql.h is missing. please check your installation of mysql and try again


Con Brew y MySQL instalados, usé lo siguiente para instalar la gema mysql2

gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.5.10/bin/mysql_config

Si está usando Bundler, puede decirle a bundler sobre esto con el comando:

bundle config build.mysql2 --with-mysql-config=/usr/local//Cellar/mysql/5.5.10/bin/mysql_config

Como se documenta aquí: http://gembundler.com/man/bundle-config.1.html


Debes tener instalado MySQL de 64 bits en tu máquina, además de las herramientas de compilación que obtienes al instalar xcode.


En Centos 6.x (7 debería funcionar) con SCL (colección de software) rh-mysql:

scl enable rh-mysql56 bash gem install mysql2 -v ''0.4.5'' -- --with-mysql-include=/opt/rh/rh-mysql56/root/usr/include --with-mysql-lib=/opt/rh/rh-mysql56/root/usr/lib64



Lo resolví especificando dónde están los directorios, sin necesidad de volver a instalar nada , con brew o macports o lo que sea, simplemente especificando dónde están las cosas (solo una cosa: el ruby ​​en mi mac se instaló con rvm, estoy no usar el predeterminado que viene con os x):

añadiendo a su gem install mysql2 las banderas a continuación

  • --srcdir="..." - incluye
  • --with-mysql-dir="..." - el directorio mysql
  • --with-mysql-config="..." - el archivo mysql_config

como esta gem install mysql2 --srcdir=/usr/local/mysql/include/ --with-mysql-dir=/usr/local/mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config


Necesita compilar los encabezados de desarrollo de MySQL para mysql2. Esto es necesario, porque gran parte de la funcionalidad está escrita en C y posteriormente enlazada con MySQL.

Una solución es apuntar el instalador de gemas a su carpeta de instalación de mysql explícitamente como tal

gem install mysql2 -- --with-mysql-dir=/usr/local/mysql # or where ever you installed your mysql server to

o instalando un servidor mysql en una ubicación conocida (por ejemplo, usando homebrew ) y luego instalando la gema

# install the mysql server locally brew install mysql # install the gem gem install mysql2

Ambos enfoques requieren que tenga XCode instalado para tener el compilador GCC requerido.


Supongo que si escribe rvm use [email protected] --create en su directorio y luego bundle install todo.


Ubuntu 15.04:

sudo apt-get install libmysqlclient-dev sudo gem install mysql2

Ubuntu-16.04:

sudo apt-get install ruby-mysql2 sudo gem install mysql2

Salida:

Building native extensions. This could take a while... Successfully installed mysql2-0.3.19 Parsing documentation for mysql2-0.3.19 Installing ri documentation for mysql2-0.3.19 Done installing documentation for mysql2 after 0 seconds 1 gem installed


Ubuntu:

sudo apt-get install libmysqlclient-dev #(mysql development headers) sudo gem install mysql2 -- --with-mysql-dir=/etc/mysql/

¡Eso es!

Resultado:

Building native extensions. This could take a while... Successfully installed mysql2-0.2.6 1 gem installed Installing ri documentation for mysql2-0.2.6... Enclosing class/module ''mMysql2'' for class Result not known Enclosing class/module ''mMysql2'' for class Client not known Installing RDoc documentation for mysql2-0.2.6... Enclosing class/module ''mMysql2'' for class Result not known Enclosing class/module ''mMysql2'' for class Client not known


en Mac OSX Moutain Lion, debajo del comando funcionó para mí:

gem install mysql2 -- --srcdir=/usr/local/mysql/include