Snow Leopard + Ruby 1.9.1 + MySQL Gem = Огромные проблемы - PullRequest
10 голосов
/ 31 августа 2009

Я пытался около 3-4 часов пытаться заставить установить mysql gem для ruby ​​1.9.1 на снежном барсе. Драгоценный камень mysql раньше хорошо работал на 1.9.1, прежде чем я перешел на снежного барса. Я удалил сервер MySQL и гем с моей машины. Затем я скачал и установил: mysql-5.1.37-osx10.5-x86_64.dmg. Я смог утверждать, что эта новая версия, которую я установил, работает как 64-битное приложение.

Я удалил самоцвет mysql. Когда я попытался установить гем с помощью этой команды:

env ARCHFLAGS="-arch x86_64" gem install mysql --verbose -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Я получил эту ошибку:

GET 304 Not Modified: http://gems.rubyforge.org/latest_specs.4.8.gz
GET 200 OK: http://gems.github.com/latest_specs.4.8.gz
Installing gem mysql-2.8.1
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/COPYING.ja
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/History.txt
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Manifest.txt
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/README.txt
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/Rakefile
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/extconf.rb
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/mysql.c
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README.html
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/README_ja.html
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/extra/tommy.css
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/lib/mysql.rb
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/gem.rake
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/native.rake
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/tasks/vendor_mysql.rake
/Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/test/test_mysql.rb
Building native extensions.  This could take a while...
ERROR:  Error installing mysql:
        ERROR: Failed to build gem native extension.

/Users/sean/.rvm/ruby-1.9.1-p243/bin/ruby extconf.rb --with-mysql-config=/usr/local/mysql/bin/mysql_config
checking for mysql_ssl_set()... yes
checking for rb_str_set_len()... no
checking for rb_thread_start_timer()... no
checking for mysql.h... yes
creating Makefile

make
gcc -I. -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/i386-darwin9.8.0 -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/backward -I/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1 -I. -DHAVE_MYSQL_SSL_SET -DHAVE_MYSQL_H  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/mysql/include  -g -Os -arch x86_64 -fno-common   -D_P1003_1B_VISIBLE -DSIGNAL_WITH_VIO_CLOSE -DSIGNALS_DONT_BREAK_READ -DIGNORE_SIGHUP_SIGQUIT  -DDONT_DECLARE_CXA_PURE_VIRTUAL -fno-common  -O2 -g -Wall -Wno-parentheses  -fno-common -pipe -fno-common  -o mysql.o -c mysql.c
In file included from /Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby.h:32,
                 from mysql.c:5:
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h: In function 'INT2NUM':
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464: warning: comparison is always true due to limited range of data type
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:464: warning: comparison is always true due to limited range of data type
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h: In function 'UINT2NUM':
/Users/sean/.rvm/ruby-1.9.1-p243/include/ruby-1.9.1/ruby/ruby.h:472: warning: comparison is always true due to limited range of data type
mysql.c: In function 'escape_string':
mysql.c:290: error: lvalue required as left operand of assignment
mysql.c:290: error: lvalue required as left operand of assignment
mysql.c: In function 'real_escape_string':
mysql.c:434: error: lvalue required as left operand of assignment
mysql.c:434: error: lvalue required as left operand of assignment
make: *** [mysql.o] Error 1


Gem files will remain installed in /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1 for inspection.
Results logged to /Users/sean/.gem/ruby/1.9.1/gems/mysql-2.8.1/ext/mysql_api/gem_make.out

Я перепробовал все, что прочитал по следующим ссылкам.

  1. http://void -design.net / 2009/08/05 / рубин-191-MySQL-и-снежно-леопард /
  2. http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/
  3. Rails, MySQL и Snow Leopard

Есть идеи?

Ответы [ 9 ]

15 голосов
/ 29 сентября 2009

Шон, я вижу, что вы используете Ruby 1.9.1 под rvm. У меня та же проблема при той же установке (Snow Leopard, rvm, MySQL 64-битный пакет). Все альтернативные гемы (mysqlplus, kwatch-mysql-ruby и т. Д.) Завершаются с той же ошибкой.

Я бы заподозрил установку MySQL, но в Ruby по умолчанию все работает как чемпион. Так что мне интересно, не является ли rvm каким-то обезьяным ключом.

РЕДАКТИРОВАТЬ: Я понял это. Я установил rvm перед обновлением до Snow Leopard, поэтому мою установку Ruby 1.9.1 нужно было перекомпилировать. Для хорошей меры я переустановил rvm с нуля.

Вот что я сделал:

sudo gem uninstall rvm
rm -rf ~/.gem
sudo gem install rvm
rvm-install
rvm install 1.9.1
rvm 1.9.1
env ARCHFLAGS="-arch x86_64" gem install mysql

(ПРИМЕЧАНИЕ: вы не можете использовать sudo при установке гемов под rvm, потому что rvm работает, изменяя $ PATH.)

(ПРИМЕЧАНИЕ. Я добавил / usr / local / mysql / bin в свой каталог $ PATH, поэтому мне не пришлось указывать ни одного из этих ужасных аргументов командной строки при установке гема mysql.)

Драгоценный камень mysql установлен без помех.

10 голосов
/ 31 августа 2009

Я решил эту проблему, установив MySQL из MacPorts и затем выполнив ту же команду gem install, что и у вас.

Итак, сначала удалите MySQL из пакета:

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
edit /etc/hostconfig and remove the line MYSQLCOM=-YES-
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*

Если вы еще этого не сделали, установите MacPorts отсюда: http://www.macports.org/install.php Есть пакет для снежного барса.

Установить mysql5-devel из MacPorts:

sudo port install mysql5-server-devel

Это сделает все зависимости и затем MySQL. Выполните все шаги после установки, которые рекомендует установщик, - элементы запуска и т. Д. MySQL устанавливается на 64-битной версии.

Затем установите гем MySQL с помощью:

env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/opt/local/bin/mysql_config5

Обратите внимание, что путь меняется там. MacPorts помещает MySQL в разные места.

Тебе должно быть хорошо идти.

3 голосов
/ 14 сентября 2009

Я безуспешно попробовал все вышеописанные шаги, но обнаружил обходной путь (или что-то еще), используя драгоценный камень mysqlplus вместо драгоценного камня mysql:

sudo env ARCHFLAGS="-arch x86_64" gem install mysqlplus

И теперь мои приложения MySQL Ruby работают как шарм в Snow Leopard.

1 голос
/ 29 октября 2010

Бились часами, прежде чем наткнуться на это:

http://markgandolfo.com/2010/08/21/mysql-gem-with-rails-3-and-ruby-1-9-2

1 голос
/ 01 августа 2010

У меня была такая же проблема с mysql gem, rvm и ruby ​​1.9.1. Как упоминалось в моем сообщении на NeptunePhoenix , я добился успеха, установив MySQL через порт.

1 голос
/ 23 ноября 2009

Найден отличный учебник онлайн для этого.

http://www.icoretech.org/2009/08/install-mysql-and-mysql-ruby-gem-on-snow-leopard-64-bit/

Установка переменной PATH была моей проблемой.

1 голос
/ 25 сентября 2009

Посмотрите на этот пост: http://jameseggers.com/post/185690322/fix-mysql-and-rails-on-snow-leopard. В нем показано, как заставить MySQL + Ruby on Rails + Snow Leopard работать отлично.

1 голос
/ 20 сентября 2009

Установка XCode была для меня решением

0 голосов
/ 16 июня 2011

Исправление со мной было переустановить MySQL. Я использовал 64-битную версию установки DMG - 5.5.13 http://dev.mysql.com/downloads/mysql/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...