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
MySQL 64 bits doit être installé sur votre machine, ainsi que les outils de construction fournis lors de l’installation de xcode.
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
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.
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
sur Mac OS X Mountain Lion, la commande ci-dessous a fonctionné pour moi:
gem install mysql2 -- --srcdir=/usr/local/mysql/include
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
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é.
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
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.
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_configcomme ça gem install mysql2 --srcdir=/usr/local/mysql/include/ --with-mysql-dir=/usr/local/mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config