dans mon mac OSX 10.6 32 bits, je peux installer mysql2 gem assez facilement, mais pas dans le serveur mini mac 10.6 64 bits.
J'ai installé MySQL 5.5.11 sur un serveur gênant, alors que, dans mon ordinateur personnel, MySQL 5.5.0.m2 Lorsque j'exécute une installation groupée, il essaie d'installer mysql2.0.3.2 à la maison, mysql2.0.2. 6
S'il te plaît ne me dis pas de
env ARCHFLAGS = "- Arch x86_64" Sudo gem installe mysql2 --version '= 0.2.6' - --with-mysql-config =/usr/local/mysql/bin/mysql_config
J'ai essayé ça, ça ne marche pas.
Le fichier/usr/local/mysql/bin inclus dans $ PATH n’aide pas aussi bien.
Code d'erreur:
Installing mysql2 (0.3.2) with native extensions /Users/administrator/.rvm/rubies/Ruby-1.9.2-p180/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:533:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
/Users/administrator/.rvm/rubies/Ruby-1.9.2-p180/bin/Ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing. please check your installation of mysql and try again.
-----
*** 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=/Users/administrator/.rvm/rubies/Ruby-1.9.2-p180/bin/Ruby
--with-mysql-config
--without-mysql-config
Gem files will remain installed in /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/mysql2-0.3.2 for inspection.
Results logged to /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/mysql2-0.3.2/ext/mysql2/gem_make.out
from /Users/administrator/.rvm/rubies/Ruby-1.9.2-p180/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:511:in `block in build_extensions'
from /Users/administrator/.rvm/rubies/Ruby-1.9.2-p180/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:486:in `each'
from /Users/administrator/.rvm/rubies/Ruby-1.9.2-p180/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:486:in `build_extensions'
from /Users/administrator/.rvm/rubies/Ruby-1.9.2-p180/lib/Ruby/site_Ruby/1.9.1/rubygems/installer.rb:159:in `install'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/source.rb:96:in `install'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/installer.rb:55:in `block in run'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/spec_set.rb:12:in `block in each'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/spec_set.rb:12:in `each'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/spec_set.rb:12:in `each'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/installer.rb:44:in `run'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/installer.rb:8:in `install'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/cli.rb:225:in `install'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor/task.rb:22:in `run'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor.rb:246:in `dispatch'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/lib/bundler/vendor/thor/base.rb:389:in `start'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/gems/bundler-1.0.12/bin/bundle:13:in `<top (required)>'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/bin/bundle:19:in `load'
from /Users/administrator/.rvm/gems/Ruby-1.9.2-p180/bin/bundle:19:in `<main>'
J'ai essayé toutes les solutions affichées ici, mais je n'ai pas eu de chance. J'ai réinstallé mysql avec l'homebrew plusieurs fois et toujours pas de chance. Ensuite, je suis tombé sur un article de blog avec une solution.
J'ai édité le fichier mysql_config dans /usr/local/Cellar/mysql/5.6.12/bin
et supprimé Les options du compilateur W -Wno-null-conversion
et -Wno-unused-private-field
Pour cflags et cxxflags.
Cela a résolu le problème avec gem install mysql2
et bundle install
Référence: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html
J'ai fait une installation groupée sur un dépôt Redmine et j'ai reçu le même message d'erreur:
mysql.h est manquant. veuillez vérifier votre installation de mysql et réessayer.
En exécutant Fedora 16 64 bits, je n’ai fait qu’installer mysql-devel
(paquet de développement) à partir de la distribution et le problème a été résolu!
Donc je pense que tu pourrais juste
yum install mysql-devel
ou apt-get le paquet devel manquant.
pour les personnes n'ayant pas utilisé Brew pour installer mysql et utiliser mysql 5.6 et supérieur:
selon cette réponse
vous devez éditer mysql_config
qui a été placé dans mon cas ici: /usr/local/mysql-5.6.12-osx10.7-x86_64/bin
et remplacez cflags
et cxxflags
par:
cflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
cxxflags="-I$pkgincludedir -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
après ces manipulations
$ gem install mysql2 -v '0.3.13'
va parfaitement
Ok les gars pour moi la solution était:
$ Sudo brew install mysql
$ Sudo env ARCHFLAGS="-Arch i386" gem install mysql -- \
--with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
--with-mysql-include=/usr/local/mysql/include
source: http://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard
OU :
$Sudo env ARCHFLAGS="-Arch x86_64" gem install mysql -- \
--with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \
--with-mysql-include=/usr/local/mysql/include
Si votre version de mysql est 64bits
Après cela, j'ai eu beaucoup de problèmes parce que si je veux créer la base de données:
$: bundle exec rake db:reset
je recevais cette erreur:
dyld: lazy symbol binding failed: Symbol not found: _mysql_init
Referenced from: /Users/workdreamer/Sites/cavortify/implementation/cavortify/mysql/Ruby/1.8/gems/mysql-2.8.1/lib/mysql_api.bundle
Expected in: flat namespace
dyld: Symbol not found: _mysql_init
Referenced from: /Users/workdreamer/Sites/cavortify/implementation/cavortify/mysql/Ruby/1.8/gems/mysql-2.8.1/lib/mysql_api.bundle
Expected in: flat namespace
La solution est: Sur votre fichier gem ajoutez: gem "Ruby-mysql"
Ok, un jour et demi pour trouver la solution.
Bonne journée!
Cette méthode concerne Rails 3.1.0 (et, espérons-le, active) sur une machine 64 bits. Je l'ai utilisé sur Ruby-1.9.2-p180.
Ce blog y répondait: http://www.tatvartha.com/2010/10/installing-mysql-gem-with-bundler-on-snow-leopard/
En gros, la méthode ci-dessus: $ Sudo env ARCHFLAGS = "- Arch x86_64" gem installer mysql - --with-mysql-config =/usr/local/mysql/bin/mysql_config
peut fonctionner, mais sans bundler.
Pour le faire avec bundler, vous devez d’abord exécuter ceci sur le terminal:
bundle config build.mysql2 --with-mysql-config=/usr/local/mysql/bin/mysql_config
Notez "mysql2" pas "mysql" comme indiqué dans ce blog.
Cela ajoute une configuration au fichier ~/.bundle/config
Ajoutez ensuite ceci à ~/.bash_profile:
export ARCHFLAGS="-Arch x86_64"
C'est la même chose pour dire à bundler d'exécuter la commande par dessus ce post.
Cela a fonctionné pour moi sur mon Mac OSX Lion:
Sudo env ARCHFLAGS="-I/usr/local/include/mysql/mysql -pipe -fPIC -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT -DDONT_DECLARE_CXA_PURE_VIRTUAL" gem install mysql -- --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/lib/mysql/mysql --with-mysql-include=/usr/local/include/mysql/mysql --with-mysql-config=/usr/local/bin/mysql_config
La seule façon pour que cela fonctionne est d'installer la version x64 de mysql. Je viens d'utiliser le fichier .dmg situé ici http://dev.mysql.com/downloads/mysql/ et cela a fonctionné à merveille. Si seulement je pouvais récupérer les 4 heures qu'il a fallu pour comprendre cela.
Vérifiez que gcc est installé. Si ce n'est pas le cas, vous obtiendrez le même message d'erreur.
Vous pouvez consulter le fichier de résultats/journal qu'il mentionne pour plus d'indices sur la cause.
Pour ceux sur Fedora 21, et vous avez déjà installé mysql-devel:
yum install redhat-rpm-config
résolu le problème pour moi. voir: redhat docs
Mon problème était le résultat de la première installation de MySql via le binaire téléchargeable. Il a été installé à la version 5.5.28. J'ai ensuite essayé d'installer via homebrew. Brew installé la version 5.6.x. Cependant, dans le processus d'installation via homebrew, le lien symbolique pour/usr/local/mysql était toujours pointé à 5.5.28.
Mettez à jour votre lien symbolique avec la version installée via homebrew.
ex:/usr/local/mysql -> /usr/local/Cellar/mysql/5.6.13/
Cela pourrait être juste une partie de la solution.
Afficher cela partout où je peux - j'espère que cela aidera quelqu'un et lui fera gagner beaucoup de temps.
J'ai creusé 2 jours d'Internet et de Stack Overflow, et ce n'est que lorsque j'ai trouvé ce lien que je commence à travailler avec ce ticket pour mysql2 que j'ai réellement 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
Pour mariadb:
Sudo apt-get install libmariadbclient18 libmariadbclient-dev
Ensuite
gem install mysql2
pourrait être installé avec succès.