web-dev-qa-db-ja.com

mybrew2 gemは、Homebrewを使用したOS X上のMySQL 5.6.12でコンパイルに失敗します

Homebrewでインストールしたすべてのパッケージを更新しました。 MySQLは5.6.12にアップグレードされました(5.5.27から)。

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.12, for osx10.8 (x86_64) using  EditLine wrapper

そして今、mysql2 gemはもうコンパイルしていません:

$ gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

        /Users/pupeno/.rvm/rubies/Ruby-1.9.3-p429-perf/bin/Ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... 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
    --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/pupeno/.rvm/rubies/Ruby-1.9.3-p429-perf/bin/Ruby
    --with-mysql-config
    --without-mysql-config

ファイルmysql.h/usr/local/Cellar/mysql/5.6.12/include/mysql.hにあります。何が起こっているのでしょうか?

ファイルmysql.hは、/usr/localに表示されません。シンボリックリンクが必要以上に深くなっているように見えるためです。

$ ls -la /usr/local/include/mysql
lrwxr-xr-x  1 pupeno  admin  36 21 Jun 15:18 /usr/local/include/mysql@ -> ../Cellar/mysql/5.6.12/include/mysql

の代わりに

/usr/local/Cellar/mysql/5.6.12/include

そうは言っても、私は手動でシンボリックリンクを修正しましたが、コンパイルはまだ失敗しました。だから私は立ち往生しています。

35
pupeno

私は同じ問題を抱えていましたが、なんとかそれを修正しました。私は多くのことをしました、そして、それが何であったか確かではありませんが、MySQL 5.6.10に行くことはうまくいったようです。

MySQL 5.6.12をアンインストールします。

brew unlink mysql
brew uninstall mysql

Homebrewディレクトリに移動します。

cd /usr/local

バージョン5.6.10に移動します(バージョンのリストは、brew versions mysql

git checkout 48f7e86 Library/Formula/mysql.rb

次に、mysqlを再度インストールします。

brew install mysql

そしていま gem install mysql2私のために働く。

ソースからmysqlもインストールしました(brew install mysql --build-from-source)、しかしそれはそれを解決しなかったが、解決策の一部かもしれない。

31
iain

ちょうど;)

gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config
23
Nedudi

これも私にとってはうまくいったようです。 5.6.10に対してgemを強制的にコンパイルします。

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

関連する回答: https://stackoverflow.com/a/9360181

12
croemmich

ここでの一番の答えは時代遅れです...醸造者はmysqlを修正しました:

brew update
brew upgrade mysql
gem install mysql2

これにより、mysqlが最新バージョンに更新され、OSX上のmysql2 gemで正常に動作するようです。

9
jkrall

MySQLのより新しいバージョンが利用可能ですが、Mac OS X Mojaveに古いプロジェクトをインストールする場合、MySQL 5.6を実行し、Rails 5アプリでリンクする必要があります。

バンドラーを構成してから、バンドルをインストールしました。

$> brew install [email protected]
$> bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql\@5.6/5.6.42/bin/mysql_config
$> bundle install

パスのMySQLリリースバージョンを更新する必要があることに注意してください。

代わりにこの答えをお勧めします: mysql2 gemはOS XでHomebrewを使用してMySQL 5.6.12でコンパイルできません

問題は、MySQLのHomebrewのバージョンのコンパイラ設定にあります。元の答えはこちら: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html

1
jaysqrd