2009-08-31 8 views
10

He intentado durante aproximadamente 3-4 horas tratando de obtener la gema mysql para instalar para ruby ​​1.9.1 en leopardo de las nieves. La gema mysql solía funcionar bien en 1.9.1 antes de actualizar a Snow Leopard. Desinstalé el servidor MySQL y la gema de mi máquina. Luego descargué e instalé: mysql-5.1.37-osx10.5-x86_64.dmg. Pude afirmar que esta nueva versión que instalé se está ejecutando como una aplicación de 64 bits.Snow Leopard + Ruby 1.9.1 + MySQL Gem = Enormes problemas

Desinstalé la gema mysql. Cuando he intentado instalar la gema con este comando:

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

Tengo este error:

 
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 

He intentado todo lo que he leído en los siguientes enlaces.

  1. http://void-design.net/2009/08/05/ruby-191-mysql-and-a-snow-leopard/
  2. http://www.schmidp.com/2009/06/14/rubyrails-and-mysql-on-snow-leopard-10a380/
  3. Rails, MySQL and Snow Leopard

¿Alguna idea?

+1

http://weblog.rubyonrails.org/2009/8/30/upgrading-to-snow-leopard - Directamente desde el blog RoR – Garrett

Respuesta

15

Sean, veo que estás ejecutando Ruby 1.9.1 bajo rvm. Estoy teniendo el mismo problema bajo la misma configuración (Snow Leopard, rvm, paquete MySQL de 64 bits).Todas las gemas alternativas (mysqlplus, kwatch-mysql-ruby, etc.) fallan con el mismo error.

Sospecho que la instalación de MySQL, pero todo funciona como un champ bajo el sistema predeterminado de Ruby. Entonces me pregunto si rvm no es la llave inglesa de alguna manera.

EDITAR: Me di cuenta. Instalé rvm antes de actualizar a Snow Leopard, por lo que mi instalación de Ruby 1.9.1 necesitaba ser recompilada. Para una buena medida, volví a instalar rvm desde cero.

Aquí es lo que hice:

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 

(NOTA:. No se puede utilizar sudo al instalar gemas bajo RVM, porque RVM funciona modificando $ PATH)

(NOTA: He añadido/usr/local/mysql/bin a $ $ PATH, así que no tuve que especificar ninguno de esos horribles argumentos de línea de comandos al instalar la gema mysql.)

La gema mysql instalada sin problemas.

+0

gravelpup, gracias. Eso fue perfecto. Me encanta RVM y tu solución fue clave. –

+0

Impresionante, me alegro de escucharlo. Ahora si pudiera hacer compilar mi puerto de ImageMagick ... Supongo que voy a comenzar otro hilo sobre ese tema. –

+0

He estado teniendo el mismo problema al instalar la gema mysql con ruby ​​1.9.1 en rvm después de haber actualizado a Snow Leopard. Intenté la sugerencia de Jonathan pero fue en vano. Un poco más de excavación y parece que necesitas 'rm -rf ~/.rvm' en lugar de' rm -rf ~/.gem' ya que es donde rvm almacena las gemas específicas de vm. – fractious

10

He resuelto este problema instalando MySQL desde MacPorts y luego ejecutando el mismo comando de instalación de gema que tienes allí.

Así, en primer lugar, desinstale el MySQL tiene del paquete:

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* 

Si no lo ha hecho todavía, instale DarwinPorts desde aquí: http://www.macports.org/install.php Hay un paquete para Snow Leopard.

Instalar mysql5-devel de MacPorts:

sudo port install mysql5-server-devel 

que va a hacer todas las dependencias y MySQL. Siga todos los pasos posteriores a la instalación que recomienda el instalador: elementos de inicio, etc. El MySQL que instala es de 64 bits.

a continuación, instalar la gema MySQL con:

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

Anote la ruta cambia allí. MacPorts pone MySQL en diferentes lugares.

Deberías estar listo para partir.

+0

que acabo de dar su solución, intento y recibí el mismo error que antes. No estoy seguro de si voy a tener que intentar recompilar Ruby 1.9.1. –

+0

Sí, espero que esto funcione para usted, pero creo que su problema es Ruby 1.9.1. Usando el rubí Snow Leopard predeterminado, funciona. SL ruby ​​es 1.8.7. – Georges

+0

Investigué un poco más y encontré esto: http://github.com/kwatch/mysql-ruby/tree/master – Georges

3

Probé todos los pasos anteriores sin suerte, pero descubrí una solución (o lo que sea), utilizando la gema mysqlplus en lugar de la gema mysql:

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

Y ahora mis aplicaciones rubí MySQL funcionan como un encanto en Leopardo de nieve.

+0

Tendré que intentarlo. Gracias. –

+0

OH. MI. DIOS. Si pudiera, votaría esto 100 veces. Después de horas de infructuosa búsqueda en Google y repetidos intentos fallidos con mysql, mysql2 y ruby-mysql, resolvió mi problema con dos oraciones y una línea de comando. Usted señor, es mi héroe. Si alguna vez nos encontramos, te compro un trago. – abeger

1

XCode Instalación era la solución para mí

1

Tuve el mismo problema con mysql gem, rvm y ruby ​​1.9.1. Como mencioné en mi publicación en NeptunePhoenix, tuve éxito instalando mysql vía puerto.

Cuestiones relacionadas