web-dev-qa-db-fra.com

ERREUR: impossible de créer l'extension native de gem (mysql2 sur Rails 3.2.3)

J'essaie d'installer la gem mysql2 avec Rails 3.2.3 et ça échoue:

★  bundle install
Fetching gem metadata from https://rubygems.org/.........
Using rake (0.9.2.2) 
Using i18n (0.6.0) 
Using multi_json (1.2.0) 
Using activesupport (3.2.3) 
Using builder (3.0.0) 
Using activemodel (3.2.3) 
Using erubis (2.7.0) 
Using journey (1.0.3) 
Using rack (1.4.1) 
Using rack-cache (1.2) 
Using rack-test (0.6.1) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.2) 
Using actionpack (3.2.3) 
Using mime-types (1.18) 
Using polyglot (0.3.3) 
Using treetop (1.4.10) 
Using mail (2.4.4) 
Using actionmailer (3.2.3) 
Using arel (3.0.2) 
Using tzinfo (0.3.32) 
Using activerecord (3.2.3) 
Using activeresource (3.2.3) 
Using bundler (1.1.3) 
Using coffee-script-source (1.2.0) 
Using execjs (1.3.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.6.6) 
Using rdoc (3.12) 
Using thor (0.14.6) 
Using railties (3.2.3) 
Using coffee-Rails (3.2.2) 
Using jquery-Rails (2.0.2) 
Installing mysql2 (0.3.11) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/rarneson/.rvm/rubies/Ruby-1.9.3-p125/bin/Ruby extconf.rb 
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
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
    --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=/Users/rarneson/.rvm/rubies/Ruby-1.9.3-p125/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 /Users/rarneson/.rvm/gems/Ruby-1.9.3-p125/gems/mysql2-0.3.11 for inspection.
Results logged to /Users/rarneson/.rvm/gems/Ruby-1.9.3-p125/gems/mysql2-0.3.11/ext/mysql2/gem_make.out
An error occured while installing mysql2 (0.3.11), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.11'` succeeds before bundling.

J'exécute bundle install et cela se trouve dans mon Gemfile:

gem 'mysql2', '~> 0.3.11' 

Actuellement, MySQL fonctionne sous MAMP. Je ne suis pas sûr que ce soit une mauvaise idée et je devrais utiliser un MySQL Vanilla, mais il semble que mon problème actuel consiste simplement à installer la gemme. J'ai rencontré pas mal de problèmes de ce type ici sur stackoverflow, mais ils semblent tous un peu différents ou ont des solutions très compliquées. Y a-t-il quelque chose qui me manque? Quelque chose de simple? Quelque chose de stupide? Je peux fournir des informations supplémentaires à partir du fichier de sortie si nécessaire. J'ai lu que certaines personnes utilisent SQLite pour dev et testent ensuite MySQL en prod, mais cela semble être une idée assez horrible.

47
Ryan Arneson

J'ai fini par installer une nouvelle copie de MySQL sans utiliser MAMP et c'est ce qui a fait l'affaire. Il fallait également veiller à installer la version 64 bits et non 32 bits.

1
Ryan Arneson

De https://github.com/brianmario/mysql2/issues/8

vient de copier ceci dans la console

Sudo apt-get install mysql-client libmysqlclient-dev

et a travaillé !!

127
juanpastas

J'ai utilisé Homebrew pour Mac pour installer mysql:

brew install mysql

Ensuite, j'ai utilisé une commande gem pour installer le gem mysql2:

Sudo gem install mysql2
40
Jarrett Coggin

Ceci est principalement dû au manque d’en-têtes mysql. Essayez d’installer les packages pour les développeurs mysql (mysql-devel).

Normalement, cette erreur survient lorsque le paquet 'libmysqlclient-dev' est manquant.

17
sameera207

Je viens de rencontrer le même problème, en utilisant OS X Sierra et MAMP et Rails 5. J'ai installé avec succès la gemme via

gem install mysql2 -- --with-mysql-config=/Applications/MAMP/Library/bin/mysql_config

Après cela, l'installation en bundle a bien fonctionné.

2
hpcodecraft

Ajoutez simplement MAMP mysql à PATH, vous pourrez alors lancer l’installation en bundle comme à l’habitude.

$/Applications/MAMP/Bibliothèque/bin/mysql --Host = localhost -uroot -proot

source: http://blog-en.mamp.info/2009/08/using-mysql-command-line-with-mamp.html

0
Greg Benner

Lorsque j'ai eu cette erreur, j'ai pu résoudre ce problème en exécutant:

gem install devtools
0
John Langford

Vous pouvez suivre ce fil Erreurs lors de l’installation de mysql2 gem via le Bundler qui explique la solution pour Centos et ce problème sera corrigé si vous ajustez les commandes avec votre système d’exploitation et vous pourrez installer le gem mysql2.

0
maniempire