Mysql Gem unter MacOSX Leopard installieren

Um auch endgültig in den Entwicklerkreisen in Berlin/Mitte anerkannt zu werden, bin ich vor einigen Wochen auf ein MacBook umgestiegen. Die Einrichtung einer gewohnten Rails-Entwicklungsumgebung (nicht IDE, nur die tägliche Arbeitsumgebung), erfordert das Umgehen von einigen Hindernissen, da anscheinend unter MaxOS, speziell Leopard, alles nochmal ganz anders ist als es schon unter Windows anders war.

Eine der größeren Fallen, in die ich getappt bin bisher ist das Installieren des Mysql-Gems, da ein naives "gem install mysql" mit verschiedensten Fehlern abbrach. Drum hier die kurze Anleitung, die man sich sonst von vielen Seiten im Netz zusammensuchen muss, exklusiv zusammengefasst auf code-schubser.de:

  1. Unbedingt MySQL x86 (=32bit) Version installieren (findet man hier). Die mit Leopard mitgelieferte Ruby Version mag die 64bit Variante von MySQL anscheinend nicht und spricht nicht mit ihr. (Sollte es für die Installation der 32bit Version schon zu spät sein, bitte die Tabellen sichern, die 32bit Variante über die schon installierte 64bit Version installieren und die Dumps wiederherstellen. Das sollte die 64bit Version erfolgreich auf die 32bit "downgraden").
  2. Jetz der eigentliche tricky-Part: Die Installation des Gems an sich. Die Pfade zu den Libraries sind nicht so einfach rauszufinden, daher hier die Abkürzung:

sudo env ARCHFLAGS="-arch i386" gem install mysql -- \ --with-mysql-dir=/usr/local/mysql --with-mysql-lib=/usr/local/mysql/lib \ --with-mysql-include=/usr/local/mysql/include

Kopieren, in Terminal einfügen, freuen.

11 Comments

JoachimDezember 7th, 2008 at 00:38

Hmm, ich habe gerade Mysql 5.0.67-osx10.5-x86_64 installiert und mit sudo gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config ohne Probleme das gem mysql-2.7 installiert.

JoachimDezember 7th, 2008 at 00:50

Na, da war ich zu optimistisch. Installieren konnte ich es – aber dann kam ein:

dyld: lazy symbol binding failed: Symbol not found: _mysql_init
Referenced from: /Library/Ruby/Gems/1.8/gems/mysql-2.7/lib/mysql.bundle
Expected in: dynamic lookup

und die Lösung ist dann wohl leider doch die von Dir vorgeschlagene.
(-:

robertDezember 7th, 2008 at 03:25

Wieso leider ;)

JoachimDezember 7th, 2008 at 16:28

Weil es bedeutet hat, 10 dbs neu anzulegen und die Dumps einzuspielen.
Hab es heute morgen gemacht und es ging viel schneller als gestern abend gedacht, weil dei dumps schon vorlagen. Hab ca 15 Minuten gebraucht, inkl. Herausfinden welches Password der interne Benutzer der Rails Anwendung hat um ein entsprechendes GRANT abzusetzen.
War also unter dem Strich weniger Arbeit als gedacht. Schön, oft ist es ja andersherum :-)

ChristianJanuar 13th, 2009 at 23:11

die 64bit version von mysql funktioniert schon, nur muss man das komplette information_schema von hand anlegen (oder von ner anderen kiste kopieren)

grüße christian

louisssJanuar 27th, 2009 at 01:47

Hi Leute,
Ich kann leider nicht den mysql gem installieren.Ich bekomme immer wieder dieses Error Messages:
Ich nutze XAMPP for mac

Messages:
Ls-MacBook:~ Ls$ sudo gem install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config
Building native extensions. This could take a while…
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install mysql — –with-mysql-config=/usr/local/mysql/bin/mysql_config
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
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby
–with-mysql-config
–without-mysql-config
–with-mysql-dir
–without-mysql-dir
–with-mysql-include
–without-mysql-include=${mysql-dir}/include
–with-mysql-lib
–without-mysql-lib=${mysql-dir}/lib
–with-mysqlclientlib
–without-mysqlclientlib
–with-mlib
–without-mlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-zlib
–without-zlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-socketlib
–without-socketlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-nsllib
–without-nsllib
–with-mysqlclientlib
–without-mysqlclientlib

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.7/gem_make.out
ERROR: could not find gem — locally or in a repository
ERROR: could not find gem –with-mysql-config=/usr/local/mysql/bin/mysql_config locally or in a repository

PhilippFebruar 24th, 2009 at 19:17

Vielen Dank für die Anleitung…. Auch wenn ich Sie jetzt nicht anwenden werde. Aber es hat mir bei der Entscheidung geholfen in der Rails-Version wieder auf 2.1.1 zu springen.

[...] Am vielversprechensten finde ich den folgenden Blogeintrag, der eine Lösung beschreibt die auch den Bug verständlich erklärt. Hier klicken… [...]

robertMai 6th, 2009 at 17:30

@louisss: Du hast die Pfadangaben aus meinem Befehl da oben nicht mit übernommen. Kopier Dir mal den kompletten Pfad, dann sollte es gehen.

maxMai 22nd, 2009 at 09:22

@robert Danke für die Lösung. Besser gehts nicht. Vielen Dank.

BonnerJuni 5th, 2009 at 21:07

Nach Eingabe des o.g. Befehls bekomme ich leider diesen Fehler :(

Building native extensions. This could take a while…
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb install mysql — –with-mysql-dir=/usr/local/mysql –with-mysql-lib=/usr/local/mysql/lib –with-mysql-include=/usr/local/mysql/include
can’t find header files for ruby.

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/mysql-2.7/gem_make.out

Leave a comment

Your comment