Не удается установить mysql2 gem
Я не могу установить драгоценный камень mysql2 в моей системе Windows7 x64. Я попытался использовать как 32-разрядную, так и 64-разрядную версии MySQL server, но никто не получил меня дальше.
Я установил Ruby 1.8, набор для разработки и платформу Rails. Я даже установил minGW, чтобы разрешить компиляцию C++/C вещей. Сервер MySQL был установлен в папку по умолчанию.
при выполнении команды:
C:UsersArne>gem install mysql2 -- --with-mysql-include="C:Program Files (x86)MySQLMySQL Server 5.1include" --with-mysql-lib="C:Program Files (x86)MySQLMySQL Server 5.1lib"
Я получаю следующий вывод консоль:
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)MySQLMySQL Server 5.1include --with-mysql-lib=C:Program Files (x86)MySQL
MySQL Server 5.1lib"
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:UsersArne>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/
в системе также установлены следующие драгоценные камни:
C:UsersArne>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:UsersArneAppDataLocalTempccCicaNu.o: In function `t':
C:Rubylibrubygems.8gemsmysql2-0.3.2extmysql2/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)MySQLMySQL Server 5.1include --with-mysql-lib=C:Program Files (x86)MySQLMySQL Server 5.1lib"
checking for rb_thread_blocking_region()... no
checking for main() in -llibmysql... no
Я надеюсь, что кто-то может сказать, что я делаю неправильно, или что на самом деле отсутствующие на система разработки, чтобы получить этот драгоценный камень правильно установлен и работает.
9 ответов
я, наконец, решил он:
- скачал и установил MySQL 64bit версии 5.5
- загрузить zip-архив для 32-битной версии 5.5.
- извлек 32-разрядные папки include и lib в
C:\MySQL
. - Установить Ruby 1.9.2.
- установлен Ruby Devkit.
- установил драгоценные камни:
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.5 64-бит / Ruby 1.9.2:
- скачать libmysql.dll файлы.
- скопируйте вышеуказанный libmysql.dll в
C:\Ruby192\bin
иC:\Ruby192\lib
, или где бы ни находились ваши lib и bin. - Run:
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
где большинство пользователей смогли установить mysql2 gem после выполнения описанных шагов.
принятый ответ не сработал для меня, как и другие 2. Тем не менее, комментарий MG по ссылке от Ritesh сделал трюк для меня. Я должен был указать версию 0.2.6 и включить параметр --platform=ruby. (Примечание: мне также пришлось загрузить "noinstall" версию MySQL, чтобы получить /lib/opt)
вот как я получил драгоценный камень, установленный на Windows
gem install mysql2 -v 0.2.6 -- --platform=ruby --with-mysql-lib=C:\Ruby192\MySQL\lib\opt --with-mysql-dir=C:\Ruby192\MySQL
Я знаю, что поток связан с Windows, но я достиг его, ища ту же проблему в Linux, и я исправил ее, установив lib "libmysqlclient-dev"
У меня были аналогичные проблемы с MySQL 5.6 под 64-разрядной Windows 7. Главное решение, приведенное здесь, сработало. (решение, предложенное кобальцем просто скопировать dll, не сработало. Не знаю, почему это работает для кобальца, но не для меня!)
затем я столкнулся с другой проблемой, которая описана в этом посте:
mysql2 gem скомпилирован для неправильной клиентской библиотеки mysql
описанное там решение позволяет избежать загрузки полного 32-битного MySQL и исправлено обе проблемы. По сути, загрузите mysql connector (гораздо меньшая загрузка) и используйте его для компиляции драгоценного камня mysql2. Вы должны скачать именно правильную версию, как описано в сообщении. В моем случае:
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 установить mysql2 -- --с-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), и я забыл обновить свою базу данных.в формате YML. С драгоценным камнем mysql2 он должен сказать:
развитие: адаптер: mysql2
, а не
развитие: адаптер: mysql
что очевидно, как только вы это поняли, но сообщения об ошибках, которые я получил, были похожи на те, которые я получил раньше, поэтому казалось, что с моим камнем все еще что-то не так.
этот работал для меня для установки MariaDB 5.5:
gem установить mysql2 -- ' --с-mysql-lib="c:\Program файлы (x86)\MariaDB 5.5\lib" --with-mysql-include="c:\Program файлы (x86)\MariaDB 5.5\include\mysql"'
создание собственных расширений с помощью: '--with-mysql-lib="c:\Program файлы (x86)\Maria \ДБ 5.5 либерал" --с-для MySQL включает="файлы c:\Program (для x86)\MariaDB в 5.5\включить\мысь ql"'
обязательно используйте пакеты x64 MariaDB, если вы планируете использовать Ruby х64. И конечно, не забудьте скопировать C:\Program файлы (x86)\MariaDB 5.5\lib\libmysql.dll для c:\Ruby200\bin в моем случае.
скопируйте libmysql.dll, расположенная в каталоге bin вашей установки MySQL, в каталог bin вашей установки Ruby. Шахты были расположены в C:\Program файлы\MySQL и C:\Ruby - ...
Это то, что работало для меня на windows 8 64bit и с использованием ruby 64bit
загрузите и установите MYSQL Server 5.6 64bit
выполните команду:
gem установить mysql2-v '0.3.16' -- ' --с-mysql-lib="c:\Program файлы\MySQL\MySQL Server 5.6\lib" --with-mysql-include="c:\Program файлы\MySQL\MySQL Server 5.6\включают"'
надеюсь, что это помогает