Ruby on Rails, MySQL und MAC OSX

by ischroedi on 17. Oktober 2007

Nachdem ich nicht auf meine MySQL Datenbank zugreifen konnte wollte ich mit einem Update die gems fixen, aber sehr selbst, es war ein etwas verzwickteres Problem.

  sudo gem update

Updating installed gems…
Attempting remote update of mysql
Select which gem to install for your platform (universal-darwin8.0)
1. mysql 2.7.3 (mswin32)
2. mysql 2.7.1 (mswin32)
3. mysql 2.7 (ruby)
4. mysql 2.6 (ruby)
5. Skip this gem

 6. Cancel installation
> 3
Building native extensions.  This could take a while…
ERROR:  While executing gem … (Gem::Installer::ExtensionBuildError)
ERROR: Failed to build gem native extension.

ruby extconf.rb update
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lm… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lz… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lsocket… no
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lnsl… no
checking for mysql_query() in -lmysqlclient… no

Gem files will remain installed in /usr/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /usr/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out

Tja, das war es wohl, der gleiche Fehler wie immer, aber im Netz habe ich unter Installing Ruby on Rails with MySQL einen sehr guten Bericht gefunden.

Update der Sudo Gems

$ sudo gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config
Select which gem to install for your platform (universal-darwin8.0)
1. mysql 2.7.3 (mswin32)
2. mysql 2.7.1 (mswin32)
3. mysql 2.7 (ruby)
4. mysql 2.6 (ruby)
5. Skip this gem
6. Cancel installation
> 3
Building native extensions.  This could take a while…
Successfully installed mysql-2.7

Jetzt ist der Treiber angeblich richtig installiert. Aber leider nur angeblich.

Allerdings erhalte ich über die IRB Console immer noch einen Fehler.

$ irb -r mysql
/usr/local/lib/ruby/1.8/irb/init.rb:252:in `require’: no such file to load — mysql (LoadError)
from /usr/local/lib/ruby/1.8/irb/init.rb:252:in `load_modules’
from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `each’
from /usr/local/lib/ruby/1.8/irb/init.rb:250:in `load_modules’
from /usr/local/lib/ruby/1.8/irb/init.rb:21:in `setup’
from /usr/local/lib/ruby/1.8/irb.rb:54:in `start’
from /usr/local/bin/irb:13

Also gehts weiter in der Anleitung von SAKUZAKU.

$ cd /usr/local/lib/ruby/gems/1.8/gems/mysql-2.7
/usr/local/lib/ruby/gems/1.8/gems/mysql-2.7 schroedi$ ls
COPYING         Makefile        README_ja.html  gem_make.out    mkmf.log        mysql.c         mysql.gemspec   test.rb
COPYING.ja      README.html     extconf.rb      lib             mysql.bundle    mysql.c.in      mysql.o         tommy.css

Um dann den vorgegeben Befehler aus der Fehlermeldung einzugeben.

$ sudo ruby extconf.rb –with-mysql-config=/usr/local/mysql/bin/mysql_config
checking for mysql_ssl_set()… yes
checking for mysql.h… yes
creating Makefile

Danach müsssen wir das ganze noch mal neu übersetzen. Keine Sorge, es dauert nicht lange.

/usr/local/lib/ruby/gems/1.8/gems/mysql-2.7 schroedi$ sudo make

gcc -I. -I. -I/usr/local/lib/ruby/1.8/universal-darwin8.0 -I. -DHAVE_MYSQL_SSL_SET -DHAVE_MYSQL_H  -I/usr/local/mysql/include -Os -arch i386 -fno-common -fno-common -g -O2  -fno-common -pipe -fno-common  -arch i386 -c mysql.c
cc -dynamic -bundle -undefined suppress -flat_namespace -arch i386 -L”/usr/local/lib” -o mysql.bundle mysql.o  -lruby -L/usr/local/mysql/lib -lmysqlclient -lz -lm  -lpthread -ldl -lobjc
/usr/bin/ld: warning multiple definitions of symbol _setregid
/usr/local/lib/libruby.dylib(process.o) definition of _setregid
/usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libm.dylib(setregid.So) definition of _setregid
/usr/bin/ld: warning multiple definitions of symbol _setreuid
/usr/local/lib/libruby.dylib(process.o) definition of _setreuid
/usr/lib/gcc/i686-apple-darwin8/4.0.1/../../../libm.dylib(setreuid.So) definition of _setreuid
mario-schroders-computer:/usr/local/lib/ruby/gems/1.8/gems/mysql-2.7 schroedi$ sudo make install
/usr/bin/install -c -m 0755 mysql.bundle /usr/local/lib/ruby/site_ruby/1.8/universal-darwin8.0

Aufräumen, bietet sich an, make clean macht es auch ohne zu murren.

/usr/local/lib/ruby/gems/1.8/gems/mysql-2.7 schroedi$ sudo make clean

Jetzt sollte eigentlich alles wieder in Ordnung sein, aber ein Blick in die IRB zeigt wieder einen Fehler.

/usr/local/lib/ruby/gems/1.8/gems/mysql-2.7 schroedi$ irb -r mysql

dyld: NSLinkModule() error
dyld: Library not loaded: /usr/local/mysql/lib/mysql/libmysqlclient.15.dylib
Referenced from: /usr/local/lib/ruby/site_ruby/1.8/universal-darwin8.0/mysql.bundle
Reason: image not found
Trace/BPT trap

So Latein am Ende und die Datenbankanbindung mit Rails klappt leider noch nicht.

Hat jemand eine Idee?

  • del.icio.us
  • MisterWong
  • Technorati
  • StumbleUpon
  • Digg
  • Reddit
  • YahooMyWeb

Hat Dir der Artikel gefallen, dann Abonniere den RSS FEED

Tweet This Tweet This Twitter | Stumble This Stumble this or Delicious ThisDelicious this

Weitere Artikel die dir gefallen könnten

  • Ruby on Rails, MySQL, Mac OSX Leopard Installation
  • Ruby on Rails auf einem Mac installieren
  • rake migrate error – Problem gelöst !
  • Starting MySQL after upgrading to OS X Leopard
  • Fedora: gem install mysql Error
  • Ruby on Rails 2.0 Released – keiner hats gemerkt
  • Multiple Database Connections in Ruby on Rails
  • rake aborted! no such file to load — openssl
  • Ruby 1.2.4 released
  • Ruby On Rails mit Mac Ports
  • Leave a Comment

    Previous post:

    Next post: