Snow Leopard + Ruby 1.9.1 + MySQL Gem = Огромные проблемы

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

Я удалил gem 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

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

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

EDIT: Я понял это. Я установил 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 при установке gems под rvm, потому что rvm работает, изменяя $PATH.)

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

Драйвер mysql установлен без сбоев.

Ответ 2

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

Итак, сначала удалите 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 Там есть пакет для Snow Leopard.

Установите 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

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

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

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

Ответ 4

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

Ответ 7

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

Ответ 9

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