web-dev-qa-db-fra.com

problème d'installation du paquet: mysql.h est manquant

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>'
30
jaycode

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

91
guido

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.

29
db365

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

8
okliv

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!

4
workdreamer

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.

2
jaycode

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

Ce blog a répondu .

1
user2382793

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.

1
rtremaine

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.

0
David Schmidt

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

0

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.

0
Kevin Boedigheimer

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

Pour mariadb:

Sudo apt-get install libmariadbclient18 libmariadbclient-dev

Ensuite 

gem install mysql2

pourrait être installé avec succès.

0
Sebastian Piech