with rails mac instalar macos rvm mysql2

macos - rails - install ruby with rvm



el servidor Rails no puede comenzar con mysql2 usando rvm & ruby 1.9.2-p0 en OSX 10.6.5 (9)

Recibo el siguiente error cuando inicio el servidor de rieles:

$ rails server /Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2-0.2.6/lib/mysql2.rb:7:in `require'': dlopen(/Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError) Referenced from: /Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2- 0.2.6/lib/mysql2/mysql2.bundle Reason: image not found - /Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2- 0.2.6/lib/mysql2/mysql2.bundle

He instalado mysql2 con el siguiente comando después de que rvm use el comando ruby-1.9.2-p0:

$ gem install mysql2 -- --with-mysql-dir=/usr/local/mysql --with-mysql-config=/usr/local/mysql/bin/mysql_config 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 Client not known Installing RDoc documentation for mysql2-0.2.6... Enclosing class/module ''mMysql2'' for class Client not known

Tengo mysql2 en mi Gemfile, así como en el archivo database.yml y la instalación del paquete completa bien

$ bundle show mysql2 /Users/ssmith/.rvm/gems/ruby-1.9.2-p0/gems/mysql2-0.2.6

Entiendo que el error del servidor de los rieles se debe a que no conoce la ubicación de mysql_config en OSX, sin embargo, en la instalación de Gema, especifiqué la ubicación correcta. Sin embargo, parece que la gema de RVM no respeta esa ubicación mysql_config.

Alguien tiene una solución para esto?


Actualizado mysql a la última versión y vuelva a instalar la gema mysql2 me funciona brew upgrade mysql gem uninstall mysql2 gem install mysql2

Por cierto: mi versión de MySQL es 5.7.18, la versión de la gema mysql2 es 0.4.5


Cuenta,

La respuesta de Frederic resolverá este problema, sin embargo, es posible que tenga que cambiar algunos de los elementos del comando según las versiones y cómo se nombran las cosas en su sistema.

Por ejemplo, en la versión más reciente de mysql, libmysqlclient.16.dylib es en realidad libmysqlclient.18.dylib. Intenta hacer un:

locate libmysqlclient.18.dylib

Si eso no le devuelve el camino, puede ir a:

/usr/local/{your-mysql}/lib

para encontrar el archivo Luego solo una PWD para encontrar el directorio correcto para el comando.

También deberá determinar cuáles son los nombres reales de los rubíes que ha instalado. Puedes encontrar esto usando

rvm info

Por ejemplo, mi instalación de 1.9.2 es ruby-1.9.2.p180, no ruby-1.9.2p0. Esto necesitará ser cambiado en el comando de Frederics también.

Entonces, para mí, la orden de Frederic se convirtió en la fijación de los rubíes rvm para 1.8.7 y 1.9.2, respectivamente:

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql-5.5.10-osx10.6-x86_64/lib/libmysqlclient.18.dylib ~/.rvm/gems/ruby-1.8.7-p334/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql-5.5.10-osx10.6-x86_64/lib/libmysqlclient.18.dylib ~/.rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle


El mío estaba en una ubicación diferente, tuve que usar:

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle.


El problema proviene de la gema mysql2 que falta la biblioteca dinámica de MySQL.

Una solución más limpia que install_name_tool ... necesitaría actualizar su DYLD_LIBRARY_PATH para agregarle libs de MySQL. Para hacerlo, actualice su ~/.bash_profile para agregar la carpeta de la biblioteca MySQL:

export DYLD_LIBRARY_PATH="/usr/local/mysql/lib:$DYLD_LIBRARY_PATH"

Nota: es posible que desee actualizar la ubicación de MySQL en función de su instalación

Esto debería mantener las cosas limpias, pero también garantizar que cualquier gema o código que requiera bibliotecas dinámicas de MySQL las encuentre.

Referencia: http://lightyearsoftware.com/2011/02/mysql-5-5-on-mac-os-x/

Actualización de referencia Julio de 2012: un cambio en OS X 10.8 hace que el método fácil anterior sea menos elegante. Si configura esa variable, cada vez que ejecute un programa setuid o setgid, obtendrá esta advertencia en stderr:

dyld: DYLD_ environment variables being ignored because main executable (...) is setuid or setgid

Los desarrolladores de Ruby que usen Phusion Passenger Standalone verán este mensaje en su consola cada cinco segundos. Se pone realmente irritante, muy rápido.

He archivado un error con Apple. También está en OpenRadar.

Mientras tanto, también hay una tercera forma de solucionar el problema de la ruta de la biblioteca cliente que no requiere establecer DYLD_LIBRARY_PATH (trabajando alrededor de este problema 10.8) o piratear archivos .bundle con install_name_tool:

$ brew install mysql


En OS X 10.8 (Mountain Lion), todas las respuestas enumeradas tienen problemas, como se señala en las respuestas y comentarios.

  • Establecer DYLD_LIBRARY_PATH para incluir / usr / local / mysql / lib proporciona advertencias de OS X y de brew
  • Usar install_name_tool para hackear donde se ve el gemelo binario necesitaría ser rehecho cada vez que se instale o actualice la gema.
  • Cambiar a brew ''s mysql puede no funcionar; y en cualquier caso no quiero reconfigurar una instalación que ya funciona

Una solución más simple y robusta en mi humilde opinión es poner un enlace a la biblioteca en la ruta predeterminada de búsqueda de la biblioteca dinámica, que incluye convenientemente /usr/local/lib . Es decir:

ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib


Encontré la respuesta aquí: Mysql 5.5, Snow Leopard and rails

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p0/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle


Esto es lo que hago (similar a otros)

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib ~/.rvm/gems/ruby-1.9.2-p290/gems/mysql2-0.3.10/lib/mysql2/mysql2.bundle


Estuve atascado en esto por un tiempo y llegué a una solución diferente.

Observe cómo la biblioteca que falta es la versión 16 :

Biblioteca no cargada: libmysqlclient.16.dylib (LoadError)

Resulta que tenía la versión 20 de esa biblioteca - libmysqlclient.20.dylib

Tuve correctamente gem ''mysql2'' en mi Gemfile, pero lo que tenía que hacer era desinstalar la gema, gem uninstall mysql (tenía varias versiones de la gema instaladas) y luego hacer una nueva bundle install para obtener solo la versión que necesitaba de esta biblioteca.

Después de eso, buscó y encontró la versión correcta de esa lib.


a continuación a través de: http://lightyearsoftware.com/2011/02/mysql-5-5-on-mac-os-x/

Actualización de julio de 2012:

Un cambio en OS X 10.8 hace que el método fácil anterior sea menos elegante. Si configura esa variable, cada vez que ejecute un programa setuid o setgid, obtendrá esta advertencia en stderr:

dyld: DYLD_ environment variables being ignored because main executable (...) is setuid or setgid

Los desarrolladores de Ruby que usen Phusion Passenger Standalone verán este mensaje en su consola cada cinco segundos. Se pone realmente irritante, muy rápido.

He archivado un error con Apple. También está en OpenRadar.

Mientras tanto, también hay una tercera forma de solucionar el problema de la ruta de la biblioteca cliente que no requiere establecer DYLD_LIBRARY_PATH (trabajando alrededor de este problema 10.8) o piratear archivos .bundle con install_name_tool:

$ brew install mysql