2010-11-06 3 views
66

Когда я пытаюсь установить драгоценный камень mysql2, он не работает без видимых ошибок. Кто-нибудь знает, что делать, чтобы обойти это, чтобы установить mysql2?Ruby gem mysql2 install failing

 
Tanner-Smiths-MacBook-Pro:Humans_vs_Zombies_Parse tanner$ sudo gem install mysql2Building native extensions. This could take a while... 
ERROR: Error installing mysql2: 
    ERROR: Failed to build gem native extension. 

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb 
checking for rb_thread_blocking_region()... no 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lm... yes 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lz... yes 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lsocket... no 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lnsl... no 
checking for mysql_query() in -lmysqlclient... no 
checking for main() in -lmygcc... no 
checking for mysql_query() in -lmysqlclient... no 
*** 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=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby 
    --with-mysql-config 
    --without-mysql-config 
    --with-mysql-dir 
    --without-mysql-dir 
    --with-mysql-include 
    --without-mysql-include=${mysql-dir}/include 
    --with-mysql-lib 
    --without-mysql-lib=${mysql-dir}/lib 
    --with-mysqlclientlib 
    --without-mysqlclientlib 
    --with-mlib 
    --without-mlib 
    --with-mysqlclientlib 
    --without-mysqlclientlib 
    --with-zlib 
    --without-zlib 
    --with-mysqlclientlib 
    --without-mysqlclientlib 
    --with-socketlib 
    --without-socketlib 
    --with-mysqlclientlib 
    --without-mysqlclientlib 
    --with-nsllib 
    --without-nsllib 
    --with-mysqlclientlib 
    --without-mysqlclientlib 
    --with-mygcclib 
    --without-mygcclib 
    --with-mysqlclientlib 
    --without-mysqlclientlib 


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

ответ

25

Вы должны иметь установленный 64-разрядный MySQL на вашем компьютере, а также инструменты разработки вы получаете при установке Xcode.

+2

Это решило его. Установленный 64-разрядный MySQL на моем компьютере по приведенной ниже ссылке и все работало нормально. Благодаря! – Tanner

+1

http://hivelogic.com/articles/compiling-mysql-on-snow-leopard – Tanner

+15

yep - 'brew install mysql', а затем' gem install mysql' ** без ** проблем - thx! – froderik

2

Вы можете проверить эту тему на веб-сайте MySQL: http://forums.mysql.com/read.php?116,178217,178217, в частности, ответ Скотт Деррик: http://forums.mysql.com/read.php?116,178217,189357#msg-189357

Чтобы быть более конкретным, попробуйте использовать

sudo gem install mysql2 -- --with-mysql-dir=/usr/local/mysql 

Надежда, что помогает.

37

Для правильной компиляции вам нужны заголовки разработки MySQL для mysql2. Это необходимо, поскольку большая часть функциональности написана на C и впоследствии связана с MySQL.

Решение состоит в том, чтобы либо указать инсталлятор камень для вашего MySQL папку установки явно, как так

gem install mysql2 -- --with-mysql-dir=/usr/local/mysql 
# or where ever you installed your mysql server to 

или путем установки сервера MySQL в известном месте (например, с помощью homebrew.), А затем установить камень

# install the mysql server locally 
brew install mysql 
# install the gem 
gem install mysql2 

Оба подхода требуют наличия XCode для установки требуемого компилятора GCC.

+0

Пивоваренный раствор работал лучше для меня. Если вы устанавливаете двоичный файл Mac OS X MySQL, обязательно используйте 64-битную версию. – Jason

+0

Спасибо, опция '--with-mysql-dir =' была именно тем, что мне нужно для решения моей проблемы. –

+0

Для меня проблема '--with-mysql-dir' действительно вызывала проблему. Я просто оставил это и позволю установить его в каталог по умолчанию. Я просто установил определенную версию с 'gem install mysql2 -v '0.3.18'' – user2490003

143

Ubuntu:

sudo apt-get install libmysqlclient-dev #(mysql development headers) 
sudo gem install mysql2 -- --with-mysql-dir=/etc/mysql/ 

Вот оно!

Результат:

Building native extensions. This could take a while... 
Successfully installed mysql2-0.2.6 
1 gem installed 
Installing ri documentation for mysql2-0.2.6... 
Enclosing class/module 'mMysql2' for class Result not known 
Enclosing class/module 'mMysql2' for class Client not known 
Installing RDoc documentation for mysql2-0.2.6... 
Enclosing class/module 'mMysql2' for class Result not known 
Enclosing class/module 'mMysql2' for class Client not known 
+3

К сожалению, apt пока недоступен на OSX. Но ваш подход действительно работает на Debian/Ubuntu. –

+6

Я не понимаю, как это так много, когда это не соответствует вопросу. – WattsInABox

+19

У этого есть так много upvotes, потому что другие (как я) нашли это полезным. Он решил мою проблему. – John

14

С Brew и MySQL установлен, я использовал следующее, чтобы установить mysql2 Gem

gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.5.10/bin/mysql_config 

Если вы используете Bundler, вы можете сказать Bundler об этом с командой :

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

Как указано здесь: http://gembundler.com/man/bundle-config.1.html

+1

спасибо за указание 'bundle config' – mikezter

+1

Это также работает, если вы используете версии для варки для установки старых версий, например. brew install mysql51, gem install mysql2 -v '0.3.13 '- --with-mysql-config =/usr/local/Cellar/mysql51/5.1.71/bin/mysql_config (на горном льве) – nruth

4

на Mac OSX Moutain Lion, ниже команда работает для меня:

gem install mysql2 -- --srcdir=/usr/local/mysql/include 
+1

Ubuntu 14.01! –

1

Я вырыл через 2 дня на сумму Интернета и переполнение стека, и это не было, пока я не нашел this link, а затем начинает работать через this ticket for mysql2 что я действительно решил проблему.

С моей установкой (как объяснено в билете) переключатели компилятора -Wno-null-conversion -Wno-unused-private-field сломались бы и дали бы мне ошибку, которая была не совсем правильной, а именно:

mysql.h is missing. please check your installation of mysql and try again 
+0

Бинго. Спасибо .. –

0

Я думаю, что если вы наберете rvm use [email protected] --create в вас каталог, то bundle install это работает.

5

Ubuntu 15.04:

sudo apt-get install libmysqlclient-dev 
sudo gem install mysql2 

Ubuntu-16,04:

sudo apt-get install ruby-mysql2 
sudo gem install mysql2 

Выход:

Building native extensions. This could take a while... 
Successfully installed mysql2-0.3.19 
Parsing documentation for mysql2-0.3.19 
Installing ri documentation for mysql2-0.3.19 
Done installing documentation for mysql2 after 0 seconds 
1 gem installed 
+0

Спасибо за это! – Lewis

0

Я решил это специфичен о том, где находятся каталоги, нет необходимости переустановите что-нибудь, с варкой или макспортом или что-то еще, только указав нг, где вещи (только одна вещь: рубин на мой макинтош был установлен с РВМ, я не использую один по умолчанию, которая поставляется с OS X):

Добавление в gem install mysql2 флагов ниже

  • --srcdir="..." - вКЛЮЧАЕТ
  • --with-mysql-dir="..." - каталог MySQL
  • --with-mysql-config="..." - файл mysql_config

л икэ это gem install mysql2 --srcdir=/usr/local/mysql/include/ --with-mysql-dir=/usr/local/mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config

0

В Centos 6.x (7 должен работать) с SCL (коллекция программного обеспечения) отн-MySQL:

scl enable rh-mysql56 bash 
gem install mysql2 -v '0.4.5' -- --with-mysql-include=/opt/rh/rh-mysql56/root/usr/include --with-mysql-lib=/opt/rh/rh-mysql56/root/usr/lib64 
Смежные вопросы