web-dev-qa-db-ja.com

gem installmysql2が失敗する

このエラーが発生しました:

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

/usr/bin/Ruby1.8 extconf.rb
checking for rb_thread_blocking_region()... no
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=/usr/bin/Ruby1.8
    --with-mysql-config
    --without-mysql-config


Gem files will remain installed in /var/lib/gems/1.8/gems/mysql2-0.2.6 for inspection.
Results logged to /var/lib/gems/1.8/gems/mysql2-0.2.6/ext/mysql2/gem_make.out

私が試してみました:

  • mysql2をアンインストールして、再度インストールします
  • apt-getでmysqlをアンインストールします
  • mysqlからインストールされたdev-tools
  • そしてGoogleのほとんどすべてのページ

どうすればこれを修正できますか?

27
DenBelg

libmysqlclient-dev gemをインストールする前に、mysql2をインストールする必要があります。

Sudo apt-get install libmysqlclient-dev
gem install mysql2

これにより、最新のUbuntuバージョンでこの問題が修正されるはずです。

92

AndreSchweighoferに感謝します

Sudo apt-get install libmysqlclient-dev
gem install mysql2

..
bundle update
bundle install

完了!!!

9
Mike Nguyen

Mysql開発パッケージをインストールする必要があります

yum install mysql-devel
3
Mahattam

ここで検索を使用するのは大変です;): Ruby-mysql

ここに別のスレッドがあります;)同じ問題があります: Ruby-mysql2

「Rubymysql2」などを検索すると、さらに多くのことができます。

1
René Höhle

これらはこの失敗の複数の原因です:

  1. Rubyとrubygemsの間の悪いバージョンの互換性
  2. Libmysqlclient-devがありません
  3. 宝石が見つからない
  4. 64ビットシステム上のMysql32ビット

ソリューション

  1. 最新の安定版リリースでrvmをインストールします。rvmを介してRubyバージョン間で切り替えることができます

    curl -L https://get.rvm.io | bash -s stable

  2. 依存関係をインストールします

    Sudo apt-get install libmysqlclient-dev

  3. システムでmysql_configを見つけ(find/-name mysql_configを検索)、実行します

    gem install mysql -- --with-mysql-config=/path/to/mysql_config

  4. システムに64ビットバージョンのmysqlをインストールします
1
amine

私が解決した方法は、mkmf.logを調べることでした。私の場合は./gems/Ruby-2.2.3/extensions/x86_64-linux/2.2.0/mysql2-0.4.2/mkmf.logのどこかにありました。

私の場合、-lgmpが見つからないというエラーがあったため、gmpライブラリが見つからなかったため、apt-get(この場合はlibgmp-dev)を介してインストールされました。

Mysqlがバイナリを更新したことが原因である可能性があり(私の場合はMariadb-10.0.31を使用していました)、不足しているライブラリ(libmysqlclient-dev)をインストールすると、解決できないという次のメッセージが表示されました。

$ Sudo apt-get install libmysqlclient-dev

Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libmysqlclient-dev : Depends: libmysqlclient18 (= 5.5.58-0ubuntu0.14.04.1)

しかし、最初にlibmariadbclient-dev as:-をインストールすることで、上記の問題を解決しました。

 $ Sudo apt-get install libmariadbclient-dev

libmysqlclient-devもインストールされますが、最初にmariadbの依存関係を解決します。

0
Jaswinder

Ubuntu 10.10では、libmysqlclient16-devをインストールする必要がありました。

0
Chad Johnson