2009-08-31 10 views
10

Ich versuchte für 3-4 Stunden, den mysql Edelstein zu versuchen, um für Ruby 1.9.1 auf Schneeleopard zu installieren. Das mysql-Juwel funktionierte früher in 1.9.1 gut, bevor ich zu snow leopard aufwertete. Ich habe MySQL Server und Juwel von meinem Rechner deinstalliert. Ich habe dann heruntergeladen und installiert: mysql-5.1.37-osx10.5-x86_64.dmg. Ich konnte bestätigen, dass diese neue Version, die ich installiert habe, als 64-Bit-Anwendung läuft.Snow Leopard + Ruby 1.9.1 + MySQL Gem = Riesige Probleme

Ich deinstalliert das mysql gem. Als ich versuchte, den Edelstein mit diesem Befehl zu installieren:

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

habe ich diesen Fehler:

 
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 

Ich habe versucht alles, was ich von den folgenden Links gelesen habe.

  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

Irgendwelche Ideen?

+1

http://weblog.rubyonrails.org/2009/8/30/upgrading-to-snow-leopard - Direkt aus dem RoR Blog – Garrett

Antwort

15

Sean, ich sehe, dass Sie Ruby 1.9.1 unter rvm laufen. Ich habe das gleiche Problem unter dem gleichen Setup (Snow Leopard, rvm, MySQL 64-Bit-Paket).Alle alternativen Werte (mysqlplus, kwatch-mysql-ruby usw.) schlagen mit demselben Fehler fehl.

Ich würde vermuten, dass die MySQL-Installation, aber alles funktioniert wie ein Champion unter dem Systemstandard Ruby. Also frage ich mich, ob Rvm nicht irgendwie der Schraubenschlüssel ist.

EDIT: Ich fand es heraus. Ich habe rvm vor dem Upgrade auf Snow Leopard installiert, daher musste meine Ruby 1.9.1-Installation neu kompiliert werden. Um es gut zu sagen, habe ich rvm von Grund auf neu installiert.

Hier ist, was ich getan habe:

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 

(. Hinweis: Sie können nicht sudo verwenden, wenn Edelsteine ​​unter rvm installieren, weil rvm durch Modifizieren $ PATH arbeitet)

(Anmerkung: Ich habe/usr/local/mysql/bin zu meinem $ PATH, also musste ich bei der Installation des mysql-Gems keine dieser schrecklichen Befehlsargumente angeben.)

Das mysql-Juwel, das ohne Probleme installiert wurde.

+0

Kiespup, Danke. Das war perfekt. Ich liebe RVM und deine Lösung hat es geschafft. –

+0

Awesome, froh, es zu hören. Nun, wenn ich nur meinen ImageMagick-Port kompilieren könnte ... Schätze, ich werde einen anderen Thread zu diesem Thema starten. –

+0

Ich hatte das gleiche Problem, das mysql-Juwel mit ruby ​​1.9.1 unter rvm, das auf Snow Leopard aktualisiert wurde, zu installieren. Ich versuchte Jonathans Vorschlag, aber ohne Erfolg. Ein bisschen mehr graben und es scheint, dass du 'rm -rf ~/.rvm' anstelle von' rm -rf ~/.gem' brauchst, da dort die vm-spezifischen Edelsteine ​​gespeichert werden. – fractious

10

Ich habe dieses Problem gelöst, indem ich MySQL von MacPorts installiert habe und dann denselben Installationsbefehl für Gem ausführen, den Sie dort haben.

Also, zuerst, deinstallieren Sie die MySQL Sie aus dem Paket haben:

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* 

Wenn Sie es noch nicht getan haben, installieren MacPorts von hier: http://www.macports.org/install.php Es gibt ein Paket für Snow Leopard.

Installieren MySQL5-devel von MacPorts:

sudo port install mysql5-server-devel 

Es wird alle Abhängigkeiten tun und dann MySQL. Befolgen Sie alle vom Installateur empfohlenen Nachinstallationsschritte - Startobjekte usw. Der installierte MySQL-Code ist 64-Bit.

installieren Sie dann die MySQL Juwel mit:

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

Notieren Sie sich den Pfad dort ändert. MacPorts bringt MySQL an verschiedenen Stellen.

Sie sollten gut gehen.

+0

Ich habe gerade Ihre Lösung einen Versuch und ich habe den gleichen Fehler wie zuvor. Ich bin mir nicht sicher, ob ich versuchen muss, Ruby 1.9.1 neu zu kompilieren. –

+0

Ja, ich hoffe, das würde für dich funktionieren, aber ich denke, dein Problem ist Ruby 1.9.1. Mit dem Standard Snow Leopard Ruby funktioniert es. SL Rubin ist 1.8.7. – Georges

+0

Habe ein wenig mehr Nachforschungen angestellt und folgendes gefunden: http://github.com/kwatch/mysql-ruby/tree/master – Georges

3

ich ohne Glück alle oben genannten Schritte versucht, aber entdeckt eine Abhilfe (oder was auch immer) mit dem mysqlplus gem anstelle des mysql gem:

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

Und jetzt meine MySQL Rubin apps wie ein Zauber arbeiten in Schneeleopard.

+0

Ich muss es versuchen. Vielen Dank. –

+0

OH. MEINE. GOTT. Wenn ich könnte, würde ich das Ding 100 Mal auffrischen. Nach stundenlangem erfolglosen Googlen und wiederholten fehlgeschlagenen Versuchen mit mysql, mysql2 und ruby-mysql haben Sie mein Problem mit zwei Sätzen und einer Befehlszeile gelöst. Sie, mein Herr, sind mein Held. Wenn wir uns irgendwie treffen, kaufe ich dir einen Drink. – abeger

1

Installation XCode war die Lösung für mich

1

Ich hatte das gleiche Problem mit mysql gem, rvm und Ruby 1.9.1. Wie in meinem Beitrag unter NeptunePhoenix erwähnt, hatte ich Erfolg durch die Installation von MySQL über den Port.