web-dev-qa-db-ja.com

mysql2gemをインストールできません

Windows7x64システムにmysql2gemをインストールできません。 MySQLサーバーの32ビットバージョンと64ビットバージョンの両方を使用してみましたが、それ以上の方法はありませんでした。

Ruby 1.8、開発キット、およびRailsプラットフォーム。C++/CでコンパイルできるようにminGWもインストールしました。MySQLサーバーはにインストールされました。デフォルトの場所。

コマンドを実行する場合:

C:\Users\Arne>gem install mysql2 -- --with-mysql-include="C:\Program Files (x86)\MySQL\MySQL Server 5.1\include" --with-mysql-lib="C:\Program Files (x86)\MySQL\MySQL Server 5.1\lib\"

コンソールから次の出力を受け取ります。

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
*** 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=C:/Ruby/bin/Ruby
        --with-mysql-dir
        --without-mysql-dir
        --with-mysql-include=${mysql-dir}/include
        --with-mysql-lib=${mysql-dir}/lib
        --with-libmysqllib
        --without-libmysqllib
ERROR:  Error installing mysql2:
        ERROR: Failed to build gem native extension.

        C:/Ruby/bin/Ruby.exe extconf.rb --with-mysql-include=C:\Program Files (x
86)\MySQL\MySQL Server 5.1\include --with-mysql-lib=C:\Program Files (x86)\MySQL
\MySQL Server 5.1\lib"
checking for rb_thread_blocking_region()... no
checking for main() in -llibmysql... no


Gem files will remain installed in C:/Ruby/lib/Ruby/gems/1.8/gems/mysql2-0.3.2 f
or inspection.
Results logged to C:/Ruby/lib/Ruby/gems/1.8/gems/mysql2-0.3.2/ext/mysql2/gem_mak
e.out

Rubygemsによる私の環境の出力は次のとおりです。

C:\Users\Arne>gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.7.2
  - Ruby VERSION: 1.8.7 (2011-02-18 patchlevel 334) [i386-mingw32]
  - INSTALLATION DIRECTORY: C:/Ruby/lib/Ruby/gems/1.8
  - Ruby EXECUTABLE: C:/Ruby/bin/Ruby.exe
  - EXECUTABLE DIRECTORY: C:/Ruby/bin
  - RUBYGEMS PLATFORMS:
    - Ruby
    - x86-mingw32
  - GEM PATHS:
     - C:/Ruby/lib/Ruby/gems/1.8
     - C:/Users/Arne/.gem/Ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

次のgemもシステムにインストールされています。

C:\Users\Arne>gem list --local

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.7)
actionpack (3.0.7)
activemodel (3.0.7)
activerecord (3.0.7)
activeresource (3.0.7)
activesupport (3.0.7)
arel (2.0.9)
builder (3.0.0, 2.1.2)
bundler (1.0.12)
erubis (2.7.0, 2.6.6)
fastthread (1.0.7)
i18n (0.5.0)
mail (2.3.0, 2.2.18)
mime-types (1.16)
mysql (2.8.1 x86-mingw32)
polyglot (0.3.1)
rack (1.2.2)
rack-mount (0.7.2, 0.6.14)
rack-test (0.5.7)
Rails (3.0.7)
railties (3.0.7)
rake (0.8.7)
rdoc (3.5.3, 2.5.11)
rdoc-data (2.5.3)
rubygems-update (1.7.2)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.27, 0.3.26)

何が欠けているのか、何が間違っているのかわかりませんが、スクリプトが指す出力ファイルには次のデータが含まれています。

mkmf.log:

have_func: checking for rb_thread_blocking_region()... -------------------- no

"gcc -o conftest -I. -IC:/Ruby/lib/Ruby/1.8/i386-mingw32 -I.    -g -O2 -DFD_SETSIZE=256    conftest.c  -L. -LC:/Ruby/lib -L.      -lmsvcrt-Ruby18-static  -lshell32 -lws2_32  "
conftest.c: In function 't':
conftest.c:7:53: error: 'rb_thread_blocking_region' undeclared (first use in this function)
conftest.c:7:53: note: each undeclared identifier is reported only once for each function it appears in
checked program was:
/* begin */
1: #include <ws2tcpip.h>
2: #include <winsock2.h>
3: #include <windows.h>
4: 
5: /*top*/
6: int main() { return 0; }
7: int t() { void ((*volatile p)()); p = (void ((*)()))rb_thread_blocking_region; return 0; }
/* end */

"gcc -o conftest -I. -IC:/Ruby/lib/Ruby/1.8/i386-mingw32 -I.    -g -O2 -DFD_SETSIZE=256    conftest.c  -L. -LC:/Ruby/lib -L.      -lmsvcrt-Ruby18-static  -lshell32 -lws2_32  "
C:\Users\Arne\AppData\Local\Temp\ccCicaNu.o: In function `t':
C:\Ruby\lib\Ruby\gems\1.8\gems\mysql2-0.3.2\ext\mysql2/conftest.c:3: undefined reference to `rb_thread_blocking_region'
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: /*top*/
2: int main() { return 0; }
3: int t() { rb_thread_blocking_region(); return 0; }
/* end */

--------------------

have_library: checking for main() in -llibmysql... -------------------- no

"gcc -o conftest -I. -IC:/Ruby/lib/Ruby/1.8/i386-mingw32 -I. -IC:\Program    -g -O2 -DFD_SETSIZE=256    conftest.c  -L. -LC:/Ruby/lib -LC:\Program -L.      -lmsvcrt-Ruby18-static -llibmysql  -lshell32 -lws2_32  "
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -llibmysql
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: #include <ws2tcpip.h>
2: #include <winsock2.h>
3: #include <windows.h>
4: 
5: /*top*/
6: int main() { return 0; }
7: int t() { void ((*volatile p)()); p = (void ((*)()))main; return 0; }
/* end */

"gcc -o conftest -I. -IC:/Ruby/lib/Ruby/1.8/i386-mingw32 -I. -IC:\Program    -g -O2 -DFD_SETSIZE=256    conftest.c  -L. -LC:/Ruby/lib -LC:\Program -L.      -lmsvcrt-Ruby18-static -llibmysql  -lshell32 -lws2_32  "
c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot find -llibmysql
collect2: ld returned 1 exit status
checked program was:
/* begin */
1: /*top*/
2: int main() { return 0; }
3: int t() { main(); return 0; }
/* end */

--------------------

gem_make.out:

C:/Ruby/bin/Ruby.exe extconf.rb --with-mysql-include=C:\Program Files (x86)\MySQL\MySQL Server 5.1\include --with-mysql-lib=C:\Program Files (x86)\MySQL\MySQL Server 5.1\lib"
checking for rb_thread_blocking_region()... no
checking for main() in -llibmysql... no

このgemを適切にインストールして機能させるために、誰かが私が間違っていること、または開発システムに実際に欠けていることを指摘してくれることを願っています。

19
codingbunny

私はついにそれを解決しました:

  1. MySQL64ビットバージョン5.5をダウンロードしてインストールしました
  2. 32ビットバージョン5.5のZipアーカイブをダウンロードしました。
  3. 32ビットのincludeフォルダーとlibフォルダーをC:\MySQLに抽出しました。
  4. インストール済みRuby 1.9.2。
  5. Ruby Devkitをインストールしました。
  6. 宝石をインストールしました:
    1. gem install mysql
    2. gem install mysql2 -- --with-mysql-lib=C:\MySQL\lib --with-mysql-include=C:\MySQL\include
    3. gem install Rails
    4. gem install fastthread
    5. gem install haml

今はチャームとして働いています。 MySQL gemには、64ビットを処理するときにデータを見つけるのに問題があるようです。

41
codingbunny

Win7 64/MySQL 5.564ビット/Ruby1.9.2を使用して私のために働いたものは次のとおりです。

  1. ダウンロード libmysql.dll
  2. 上記のlibmysql.dllをC:\Ruby192\bin[〜#〜]および[〜#〜]C:\Ruby192\lib、またはどこにでもコピーしますlibとbinはです。
  3. 実行:
 gem install mysql2 -'-- with-mysql-lib = "c:\ Program Files\MySQL\MySQL Server 5.5\lib" --with-mysql-include = "c:\ Program Files\MySQL\MySQL Server 5.5\include "--with-mysql-dir =" c:\ Program Files\MySQL\MySQL Server 5.5 "'

幸運を。

19
JohnF

それでもエラーが発生する場合は、インストールの手順をクロスチェックしてください-

http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-Ruby-192-and.html

ここで、ほとんどのユーザーは、説明されている手順を実行した後、mysql2gemをインストールできました。

6
Ritesh Kumar

受け入れられた答えは私にとってはうまくいきませんでしたし、他の2つもうまくいきませんでした。しかし、Riteshからのリンクに関するMGのコメントは私にとってはうまくいきました。バージョン0.2.6を指定し、パラメーター--platform = Rubyを含める必要がありました。 (注:/ lib/optを取得するには、MySQLの「noinstall」バージョンもダウンロードする必要がありました)

これが私がWindowsにgemをインストールする方法です

gem install mysql2 -v 0.2.6 -- --platform=Ruby --with-mysql-lib=C:\Ruby192\MySQL\lib\opt --with-mysql-dir=C:\Ruby192\MySQL
2
MM.

64ビットWindows7でのMySQL5.6でも同様の問題が発生しました。ここで示した主な解決策は機能しました。 (dllをコピーするだけのkobalzによって提案された解決策は機能しませんでした。なぜそれがkobalzで機能するのかわかりませんが、私には機能しません!)

次に、この投稿で説明されている別の問題に遭遇しました。

mysql2 gemが間違ったmysqlクライアントライブラリ用にコンパイルされました

そこで説明されている解決策は、完全な32ビットMySQLのダウンロードを回避し、両方の問題を修正しました。基本的に、mysqlコネクタをダウンロードし(はるかに小さいダウンロード)、それを使用してmysql2gemをコンパイルします。投稿に記載されているように、正確に正しいバージョンをダウンロードする必要があります。私の場合:

http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.Zip/from/pick

次に、lib\libmysql.dllファイルをそこから上記のようにRuby binディレクトリにコピーします。

コネクタをc:\ mysql-connector-c-noinstall-6.0.2-win32に配置しました

したがって、gemをビルドしてインストールするコマンドは次のとおりです。

gem install mysql2 --- with-mysql-lib = "c:\ mysql-connector-c-noinstall-6.0.2-win32\lib" --with-mysql-include = "c:\ mysql-connector-c -noinstall-6.0.2-win32\include "--with-mysql-dir =" c:\ mysql-connector-c-noinstall-6.0.2-win32 "

その後、rakeを実行して移行を行ったときにさらに問題が発生しましたが、それはmysql gem(mysql2ではなく)を使用していて、database.ymlを更新するのを忘れていたためです。 mysql2 gemでは、次のように言う必要があります。

開発:アダプター:mysql2

のではなく

開発:アダプター:mysql

これは一度理解すれば明らかですが、私が受け取ったエラーメッセージは以前に受け取ったものと似ていたので、私の宝石にまだ何か問題があるように見えました。

1
user1208639

スレッドがWindowsに関連していることは知っていますが、Linuxで同じ問題を検索して到達し、lib "libmysqlclient-dev"をインストールして修正しました。

1
PedroSena

これは、MariaDB5.5のインストールで機能しました。

gem install mysql2 -'-- with-mysql-lib = "c:\ Program Files(x86)\ MariaDB 5.5\lib" --with-mysql-include = "c:\ Program Files(x86)\ MariaDB 5.5\include\mysql "'

ネイティブ拡張のビルド: '-with-mysql-lib = "c:\ Program Files(x86)\ Maria DB 5.5\lib" --with-mysql-include = "c:\ Program Files(x86)\ MariaDB 5.5\include\mys ql "'

Ruby x64を使用する場合は、必ずx64 MariaDBパッケージを使用してください。もちろん、C:\ Program Files(x86)\ MariaDB 5.5\lib\libmysqlをコピーすることを忘れないでください。私の場合、dllからc:\ Ruby200\binへ。

1
Orsiris de Jong

MySQLインストールのbinディレクトリにあるlibmysql.dllをRubyインストールのbinディレクトリにコピーします。私のものはC:\ Program Files\MySQLとC:\ Rubyにありました。

0
kobaltz

これは、Windows 864ビットでRuby 64ビット)を使用して私のために働いたものです

mYSQL Server 5.664ビットをダウンロードしてインストールします

次に、次のコマンドを実行します。

gem install mysql2 -v '0.3.16' -'-- with-mysql-lib = "c:\ Program Files\MySQL\MySQL Server 5.6\lib" --with-mysql-include = "c:\ Program Files\MySQL\MySQL Server 5.6\include "'

お役に立てれば

0
Omar M.