2010-11-06 37 views
66

Lorsque j'essaie d'installer la gemme mysql2, elle échoue sans erreurs apparentes. Est-ce que quelqu'un sait quoi faire pour contourner ce problème si mysql2 installe?Ruby gem mysql2 installation échouant

 
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 

Répondre

25

Vous devez avoir MySQL 64 bits installé sur votre machine, plus les outils de construction que vous obtenez lorsque vous installez xcode.

+2

Cela a résolu le problème. Installé 64 bits MySQL sur mon ordinateur via le lien ci-dessous et tout a bien fonctionné. Merci! – Tanner

+1

http://hivelogic.com/articles/compiling-mysql-on-snow-leopard – Tanner

+15

yep - 'infusez installez mysql' et puis' gem installez mysql' ** sans ** problèmes - thx! – froderik

37

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

Une solution consiste à indiquer à l'installateur de pierres précieuses à votre mysql dossier d'installation explicitement comme si

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

ou en installant un serveur MySQL à un emplacement connu (par exemple en utilisant homebrew.), Puis d'installer la pierre précieuse

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

Les deux approches nécessitent que vous ayez installé XCode pour avoir le compilateur GCC requis.

+0

La solution de brassage a fonctionné le meilleur pour moi. Si vous installez le binaire MySQL Mac OS X, assurez-vous d'utiliser la version 64 bits. – Jason

+0

Merci, l'option '--with-mysql-dir =' était exactement ce dont j'avais besoin pour résoudre mon problème. –

+0

Pour moi, le '--with-mysql-dir' provoquait un problème. Je l'ai juste laissé et je l'ai laissé installer dans un répertoire par défaut. Je viens d'installer directement une version spécifique avec 'gem install mysql2 -v '0.3.18'' – user2490003

143

Ubuntu:

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

Ca y est!

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 
+3

Malheureusement, apt n'est pas encore disponible sur OSX. Mais votre approche fonctionne en effet sur Debian/Ubuntu. –

+6

Je ne comprends pas comment cela a autant de votes upvotes quand ça ne correspond pas à la question. – WattsInABox

+19

Il a tellement de votes parce que d'autres (comme moi) l'ont trouvé utile. Cela a résolu mon problème. – John

14

Avec Brew et MySQL installé, j'ai utilisé ce qui suit pour installer la gemme mysql2

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

Si vous utilisez Bundler, vous pouvez dire Bundler à ce sujet avec commande :

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

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

+1

merci de signaler 'bundle config' – mikezter

+1

Cela fonctionne également si vous utilisez des versions de brassage pour installer les anciennes versions, par exemple. infuser installer mysql51, gem installer mysql2 -v '0.3.13 '- - avec-mysql-config =/usr/local/Cellier/mysql51/5.1.71/bin/mysql_config (sur le lion de montagne) – nruth

4

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

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

Ubuntu 14.01 aussi bien! –

1

Je fouilla dans 2 jours d'une valeur de l'Internet et le débordement de pile, et il a fallu que je trouve this link puis commencé à travailler à travers this ticket for mysql2 que j'ai effectivement résolu le problème.

Avec ma configuration (comme expliqué dans le ticket), les commutateurs du compilateur de -Wno-null-conversion -Wno-unused-private-field se casseraient et me donneraient une erreur qui n'était pas exactement correcte, qui était:

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

Bingo. Merci .. –

0

Je suppose que si vous tapez dans rvm use [email protected] --create vous répertoire, bundle install cela fonctionne.

5

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 
+0

Merci pour ça! – Lewis

0

Je résolu ce problème en étant spécifique sur où sont les répertoires, pas besoin de réinstaller quoi que ce soit, avec infusion ou macports ou autre, juste par spécifieri ng où sont les choses (une seule chose: le rubis sur mon mac a été installé avec RVM, je n'utilise pas celui par défaut qui vient avec os x):

ajouter à vos gem install mysql2 les drapeaux ci-dessous

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

l ike ce gem install mysql2 --srcdir=/usr/local/mysql/include/ --with-mysql-dir=/usr/local/mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

0

Dans 6.x Centos (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