31

私のMac OSX 10.6 32ビットでは、mysql2 gemを非常に簡単にインストールできますが、ミニMac 10.6 64ビットサーバーにはインストールできません。

厄介なサーバーにMySQL 5.5.11をインストールしましたが、自宅のmac MySQL 5.5.0.m2ではどういうわけか、バンドルインストールを実行すると、サーバーでは自宅のmysql2.0.2.6でmysql2.0.3.2をインストールしようとします

言わないでください

env ARCHFLAGS="-arch x86_64" sudo gem install mysql2 --version '= 0.2.6' -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

私はそれを試しましたが、うまくいきません。

$PATH に /usr/local/mysql/bin を含めても、同様に役に立ちません。

エラーコード:

    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>'
4

13 に答える 13

92

ここに投稿されたすべての解決策を試しましたが、うまくいきませんでした。mysql を自作で数回再インストールしましたが、まだ運がありません。その後、解決策が記載されたブログ投稿に出くわしました。

mysql_config ファイルを編集し/usr/local/Cellar/mysql/5.6.12/bin、W コンパイラ オプション -Wno-null-conversion-Wno-unused-private-field cflags および cxxflags を削除しました。

これにより、問題が解決されgem install mysql2bundle install

参照: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html

于 2013-06-23T11:54:02.257 に答える
28

Redmine リポジトリにバンドル インストールを行ったところ、同じエラー メッセージが表示されました。

mysql.h がありません。mysql のインストールを確認して、再試行してください。

Fedora 16 64 ビットを実行していmysql-develて、ディストリビューション rpm からインストール (開発パッケージ) するだけで、問題は解決しました!

だから私はあなたができると思います

yum install mysql-devel

または不足している devel パッケージを apt-get します。

于 2012-06-10T12:24:41.490 に答える
8

brew を使用して mysql をインストールせず、mysql 5.6 以降を使用している場合:

この答えによると

私の場合、ここに配置されたものを編集する必要がありmysql_configます:/usr/local/mysql-5.6.12-osx10.7-x86_64/bin

および次のように変更cflagscxxflagsます。

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!

この操作の後

$ gem install mysql2 -v '0.3.13'

完璧に行きます

于 2013-07-24T09:47:12.440 に答える
4

私にとっての解決策は次のとおりです。

$ 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

ソース: http://wonko.com/post/how-to-install-the-mysqlruby-gem-on-mac-os-x-leopard

また :

$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

mysql のバージョンが 64 ビットの場合

その後、データベースを作成したい場合、多くの問題が発生しました。

$: bundle exec rake db:reset

私はこのエラーを受け取っていました:

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

解決策は次のとおりです。gemfileに次を追加します:gem "ruby-mysql"

わかりました、解決策を見つけるのに1日半。

良い1日を!

于 2011-09-27T16:47:27.270 に答える
2

この方法は、64 ビット マシン上の Rails 3.1.0 (およびできればアップ) 用です。Ruby-1.9.2-p180で使用しました。

このブログはそれに答えました: http://www.tatvartha.com/2010/10/installing-mysql-gem-with-bundler-on-snow-leopard/

基本的には上記の方法: $ sudo env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

動作する可能性がありますが、バンドラーがありません。

バンドラーでこれを行うには、まず端末でこれを実行する必要があります。

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

そのブログに示されているように、「mysql」ではなく「mysql2」に注意してください。

~/.bundle/config ファイルに設定を追加します

次に、これを ~/.bash_profile に追加します。

export ARCHFLAGS="-arch x86_64"

これは、この投稿の上でコマンドを実行するようバンドラーに指示することと同じです。

于 2012-02-20T11:10:51.893 に答える
1

これを機能させる唯一の方法は、x64 バージョンの mysql をインストールすることでした。ここhttp://dev.mysql.com/downloads/mysql/にある .dmg を使用したところ、魅力的に機能しました。これを理解するのにかかった4時間を取り戻せたらいいのにと思います。

于 2012-04-24T02:17:47.740 に答える
1

これは私の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

このブログはそれに答えました

于 2013-05-14T17:26:39.667 に答える
1

私の問題は、最初にダウンロード可能なバイナリを介して MySql をインストールした結果です。最初はバージョン 5.5.28 でインストールされました。次に、自作でインストールしようとしました。Brew はバージョン 5.6.x をインストールしました。ただし、homebrew によるインストールの過程で、/usr/local/mysql のシンボリック リンクはまだ 5.5.28 を指していました。

自作経由でインストールされたバージョンにシンボリックリンクを更新します。

例: /usr/local/mysql -> /usr/local/Cellar/mysql/5.6.13/

これはソリューションの一部にすぎない可能性があります。

于 2013-10-17T20:01:57.600 に答える
1

マリアドブの場合:

sudo apt-get install libmariadbclient18 libmariadbclient-dev

それで

gem install mysql2

正常にインストールできました。

于 2015-05-18T22:37:42.010 に答える
0

gcc がインストールされていることを確認します。そうでない場合は、同じエラー メッセージが表示されます。

原因に関するより多くの手がかりについて、言及されている結果/ログ ファイルを確認できます。

于 2011-05-28T15:48:31.327 に答える
0

これをできる限り投稿することで、誰かの役に立ち、多くの時間を節約できることを願っています。

私は 2 日分のインターネットとスタック オーバーフローを掘り下げましたが、実際に問題を解決したのは、このリンクを見つけて mysql2 のこのチケットの作業を開始するまでではありませんでした。

私のセットアップでは (チケットで説明されているように)、 -Wno-null-conversion -Wno-unused-private-field のコンパイラ スイッチが機能しなくなり、正しくないエラーが表示されます。

mysql.h is missing. please check your installation of mysql and try again
于 2013-06-25T17:10:16.517 に答える
0

Fedora 21 を使用していて、既に mysql-devel をインストールしている場合:

yum install redhat-rpm-config

私のために問題を解決しました。参照: redhat ドキュメント

于 2015-03-07T19:58:08.770 に答える