私の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>'
私はここに投稿されたすべての解決策を試しましたが、幸運ではありませんでした。 MySQLを自作で数回再インストールしましたが、まだうまくいきません。それから私は解決策のあるブログ投稿に出くわしました。
/usr/local/Cellar/mysql/5.6.12/bin
のmysql_configファイルを編集し、cフラグとcxxフラグのWコンパイラオプション-Wno-null-conversion
と-Wno-unused-private-field
を削除しました。
これにより、gem install mysql2
およびbundle install
の問題が解決しました
リファレンス: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html
Redmineリポジトリにバンドルをインストールしましたが、同じエラーメッセージが表示されました。
mysql.hがありません。 mysqlのインストールを確認して、再試行してください。
Fedora 16 64ビットを実行していて、私が行ったのはインストールmysql-devel
(開発パッケージ)ディストリビューションrpmから、問題は解決しました!
だから私はあなたがちょうどできると思います
yum install mysql-devel
または欠落しているdevelパッケージをapt-getします。
brewを使用せずにmysqlをインストールし、mysql 5.6以降を使用した場合:
この答え によると
編集する必要がありますmysql_config
ここに私のケースに配置されました:/usr/local/mysql-5.6.12-osx10.7-x86_64/bin
cflags
とcxxflags
を次のように変更します:
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'
完璧に行く
私にとっては解決策は次のとおりでした:
$ 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日半で解決策を見つけましょう。
ごきげんよう!
このメソッドは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
動作する可能性がありますが、バンドラーなし。
これをbundlerで行うには、最初にこれを端末で実行する必要があります。
bundle config build.mysql2 --with-mysql-config=/usr/local/mysql/bin/mysql_config
そのブログに示されているように、「mysql」ではなく「mysql2」に注意してください。
〜/ .bundle/configファイルに設定を追加します
次に、これを〜/ .bash_profileに追加します。
export ARCHFLAGS="-Arch x86_64"
これは、この投稿の上でコマンドを実行するようにbundlerに指示するのと同じです。
これは私の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
Mariadbの場合:
Sudo apt-get install libmariadbclient18 libmariadbclient-dev
その後
gem install mysql2
正常にインストールできました。
これを機能させる唯一の方法は、mysqlのx64バージョンをインストールすることでした。私はここにある.dmg http://dev.mysql.com/downloads/mysql/ を使用しただけで、それは魅力のように機能しました。これを理解するのにかかった4時間前に戻って欲しい。
Gccがインストールされていることを確認します。そうでない場合は、同じエラーメッセージが表示されます。
原因についてより多くの手がかりについて言及している結果/ログファイルを確認できます。
Fedora 21を使用していて、すでにmysql-develをインストールしている場合:
yum install redhat-rpm-config
私のために問題を解決しました。参照: redhat docs
私の問題は、ダウンロード可能なバイナリを介してMySqlを最初にインストールした結果でした。当初はバージョン5.5.28でインストールされていました。その後、自作でインストールを試みました。 Brewがインストールしたバージョン5.6.x。しかし、homebrewを介してインストールする過程で、/ usr/local/mysqlのシンボリックリンクは依然として5.5.28を指しています。
Symblinkを、homebrewを介してインストールされたバージョンに更新します。
例:/ usr/local/mysql-> /usr/local/Cellar/mysql/5.6.13/
これはソリューションの一部にすぎない可能性があります。
これを私ができるところならどこにでも投稿できます。うまくいけば、誰かを助けて、多くの時間を節約できます。
私は2日間のインターネットとスタックオーバーフローを掘り起こしましたが、実際に解決したのは このリンク を見つけて このmysql2のチケット で作業を開始するまででした問題。
(チケットで説明されているように)私のセットアップでは、-Wno-null-conversion -Wno-unused-private-fieldのコンパイラスイッチが壊れ、正確ではないエラーが発生しました。
mysql.h is missing. please check your installation of mysql and try again