web-dev-qa-db-fra.com

Ruby gem mysql2 échec de l'installation

Lorsque j'essaie d'installer la gem mysql2, celle-ci échoue sans erreur apparente. Est-ce que quelqu'un sait ce qu'il faut faire pour contourner ce problème, donc mysql2 est installé?

$ Sudo gem install mysql2
Building 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
70
Tanner

MySQL 64 bits doit être installé sur votre machine, ainsi que les outils de construction fournis lors de l’installation de xcode.

26
coreyward

Ubuntu:

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

C'est ça!

Résultat:

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
145
tunelko

Vous avez besoin des en-têtes de développement MySQL pour que mysql2 soit correctement compilé. Cela est nécessaire, car une grande partie de la fonctionnalité est écrite en C et ensuite liée à MySQL.

Une solution consiste à pointer explicitement l'installateur gem dans votre dossier d'installation mysql,

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

ou en installant un serveur mysql dans un emplacement connu (par exemple, en utilisant homebrew .), puis en installant la gem

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

Les deux approches nécessitent l'installation de XCode pour disposer du compilateur GCC requis.

40
Holger Just

Avec Brew et MySQL installés, j’ai utilisé ce qui suit pour installer le gem mysql2

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

Si vous utilisez Bundler, vous pouvez en informer Bundler à l'aide de la commande suivante:

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

Comme documenté ici: http://gembundler.com/man/bundle-config.1.html

21
dkam

sur Mac OS X Mountain Lion, la commande ci-dessous a fonctionné pour moi:

gem install mysql2 -- --srcdir=/usr/local/mysql/include
8
Sushma Satish

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

Sortie:

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
6
shilovk

Vous pouvez consulter ce fil sur le site Web MySQL: http://forums.mysql.com/read.php?116,178217,178217 , en particulier la réponse de Scott Derrick: http://forums.mysql.com/read.php?116,178217,189357#msg-189357

Pour être plus précis, essayez d'utiliser

Sudo gem install mysql2 -- --with-mysql-dir=/usr/local/mysql

J'espère que ça t'as aidé.

2
rleber

J'ai creusé 2 jours d'Internet et de Stack Overflow, et ce n'est que lorsque j'ai trouvé ce lien , puis j'ai commencé à travailler ce ticket pour mysql2 que j'ai résolu. le problème.

Avec ma configuration (comme expliqué dans le ticket), les commutateurs du commutateur -Wno-null-conversion -Wno-inutilisé-private-field se briseraient et me donneraient une erreur inexacte, à savoir:

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

Dans Centos 6.x (7 devrait fonctionner) avec SCL (collection de logiciels) 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

Je suppose que si vous tapez rvm use [email protected] --create dans votre répertoire puis bundle install Ça marche.

0
user2888062

J'ai résolu ce problème en précisant l'emplacement des répertoires, inutile de réinstaller quoi que ce soit, avec brassage ou macports, ou autre chose, en spécifiant simplement où sont les objets (une seule chose: le Ruby sur mon mac a été installé avec rvm, je n’utilise pas celui par défaut fourni avec os x):

ajouter à votre gem install mysql2 les drapeaux ci-dessous

  • --srcdir="..." - l'inclus
  • --with-mysql-dir="..." - le répertoire mysql
  • --with-mysql-config="..." - le fichier mysql_config

comme ça gem install mysql2 --srcdir=/usr/local/mysql/include/ --with-mysql-dir=/usr/local/mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

0
vic