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を適切にインストールして機能させるために、誰かが私が間違っていること、または開発システムに実際に欠けていることを指摘してくれることを願っています。
私はついにそれを解決しました:
C:\MySQL
に抽出しました。gem install mysql
gem install mysql2 -- --with-mysql-lib=C:\MySQL\lib --with-mysql-include=C:\MySQL\include
gem install Rails
gem install fastthread
gem install haml
今はチャームとして働いています。 MySQL gemには、64ビットを処理するときにデータを見つけるのに問題があるようです。
Win7 64/MySQL 5.564ビット/Ruby1.9.2を使用して私のために働いたものは次のとおりです。
C:\Ruby192\bin
[〜#〜]および[〜#〜]C:\Ruby192\lib
、またはどこにでもコピーしますlibとbinはです。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 "'
幸運を。
それでもエラーが発生する場合は、インストールの手順をクロスチェックしてください-
http://rorguide.blogspot.com/2011/03/installing-mysql2-gem-on-Ruby-192-and.html
ここで、ほとんどのユーザーは、説明されている手順を実行した後、mysql2gemをインストールできました。
受け入れられた答えは私にとってはうまくいきませんでしたし、他の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
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
これは一度理解すれば明らかですが、私が受け取ったエラーメッセージは以前に受け取ったものと似ていたので、私の宝石にまだ何か問題があるように見えました。
スレッドがWindowsに関連していることは知っていますが、Linuxで同じ問題を検索して到達し、lib "libmysqlclient-dev"をインストールして修正しました。
これは、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へ。
MySQLインストールのbinディレクトリにあるlibmysql.dllをRubyインストールのbinディレクトリにコピーします。私のものはC:\ Program Files\MySQLとC:\ Rubyにありました。
これは、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 "'
お役に立てれば