2009
11.26

Gem do MySQL com RVM

Sim, o autor deste blog continua vivo…

Peço desculpas aos raros leitores, mas este ano foi bastante corrido e, infelizmente, o blog ficou abandonado. Espero escrever com mais frequência.

Alguns dias atrás, o Éverton Ribeiro deu uma super dica em seu blog para quem trabalha com ruby: o Ruby Version Manager (a.k.a RVM). Com ele você pode instalar e gerenciar facilmente várias versões do ruby e criar sets de gems de acordo com as suas necessidades.

Hoje, tivemos problemas para instalar a gem do MySQL em uma versão do ruby instalado pelo RVM. Depois de várias tentativas e vasculhadas na internet, conseguimos entender o problema.

Por padrão, pelo menos no Mac OS X Leopard (64 bits), o RVM instala o ruby com arquitetura x86_64. Entretanto, o MySQL que tinhamos instalado era i386. Sendo assim, a gem simplesmente não funcionava, e exibia o seguinte erro ao tentar usá-la:

$ rake db:migrate
(in /private/tmp/mysql_test)
dyld: lazy symbol binding failed: Symbol not found: _mysql_init
Referenced from: /Users/lfais/.rvm/gems/ruby/1.8.7/gems/mysql-2.8.1/lib/mysql_api.bundle
Expected in: flat namespace

dyld: Symbol not found: _mysql_init
Referenced from: /Users/lfais/.rvm/gems/ruby/1.8.7/gems/mysql-2.8.1/lib/mysql_api.bundle
Expected in: flat namespace

Trace/BPT trap


A solução

Para verificar a arquitetura do MySQL e do ruby, respectivamente, execute:

$ file $(which mysql)
$ file $(which ruby)

A solução foi instalar o MySQL com arquitetura x86_64 e reinstalar a gem do MySQL.
Para isso execute os seguintes passos:

  1. Se você já tem o MySQL instalado, não esqueça de fazer backup de seus databases e da pasta do MySQL (geralmente /usr/local/mysql).
  2. Faça download do MySQL para o seu S.O. Não esqueça que a arquitetura tem que ser x86_64. No meu caso, baixei o dmg para Mac OS X 10.5 com a verão 5.1.41.
  3. Instale ou atualize o MySQL.
  4. Coloque o seguinte conteúdo no seu arquivo ~/.rvmrc (caso não tenha, crie-o):
  5. rvm_archflags="-arch x86_64"

  6. Caso tenha a gem do MySQL instalada, desinstale:
  7. $ gem uninstall mysql

  8. Instale a gem do MySQL com o seguinte comando (lembre-se que utilizando o RVM não deve-se usar sudo para instalar gems):
  9. $ export ARCHFLAGS="-arch x86_64" ; gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Com esses passos, tudo deve funcionar normalmente.
Obrigado ao Éverton e ao Eric Fer que colaboraram para a resolução do problema.

Até a próxima!

Referências:
http://rvm.beginrescueend.com/mysql/
http://www.nuxlli.com.br/2009/11/24/para-tudo-instale-o-rvm-antes/
http://www.nuxlli.com.br/2009/11/24/rvm-onde-estou/

3 comments so far

Add Your Comment
  1. Esse é um cara que ‘fais’ :P

    Esse post já está devidamente ‘bookmarkado’ como referência para solução #rvm vs #mysql
    Show de bola ;)

    Ah, e bem-vindo de volta ao fantástico mundo de ‘blog’ :P

  2. Valeu!
    Em breve pretendo corrigir o problema com os emoticons.
    :P

  3. Olha que cara rápido !!! Emoticons corrigidos :D