2009-08-31 10 views
10

Próbowałem przez około 3-4 godziny, próbując zdobyć klejnot mysql do zainstalowania dla Rubin 1.9.1 na lampartie śnieżnym. Klejnot mysql działał dobrze na wersji 1.9.1, zanim został uaktualniony do lamparta śnieżnego. Odinstaluj serwer MySQL i klejnot z mojego komputera. Następnie pobrałem i zainstalowałem: mysql-5.1.37-osx10.5-x86_64.dmg. Mogłem potwierdzić, że ta nowa wersja, którą zainstalowałem, działa jako aplikacja 64-bitowa.Snow Leopard + Ruby 1.9.1 + Gem MySQL = Ogromne problemy

Odinstalowałem klejnot mysql. Kiedy próbowałem zainstalować gem poleceniem:

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

mam ten błąd:

 
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 

Próbowałem wszystkiego Przeczytałem z poniższych linków.

  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

Jakieś pomysły?

+1

http://weblog.rubyonrails.org/2009/8/30/upgrading-to-snow-leopard - Prosto z bloga RoR – Garrett

Odpowiedz

15

Sean, widzę, że używasz Ruby 1.9.1 pod rvm. Mam ten sam problem w tej samej konfiguracji (Snow Leopard, rvm, 64-bitowy pakiet MySQL).Wszystkie alternatywne klejnoty (mysqlplus, kwatch-mysql-ruby, itp.) Zawodzą z tym samym błędem.

Podejrzewam instalację MySQL, ale wszystko działa jak mistrz pod domyślnym systemem Ruby. Więc zastanawiam się, czy rvm nie jest jakoś kluczem małpy.

EDYTOWANIE: Wymyśliłem to. Zainstalowałem rvm przed uaktualnieniem do Snow Leopard, więc moja instalacja Ruby 1.9.1 wymagała ponownej kompilacji. Na dobrą sprawę ponownie zainstalowałem rvm od zera.

Oto co zrobiłem:

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 

(UWAGA:. Ty podczas instalowania perełki pod RVM nie można używać sudo, ponieważ RVM działa modyfikując $ PATH)

(UWAGA: Dodałem/usr/local/mysql/bin do mojej $ PATH, więc nie musiałem określać żadnej z tych okropnych argumentów wiersza poleceń podczas instalacji klejnotu mysql.)

Klejnot MySQL zainstalowany bez przeszkód.

+0

żwir, Dziękuję. To było idealne. Uwielbiam RVM i twoje rozwiązanie go przybrało. –

+0

Niesamowite, cieszę się, że mogę to usłyszeć. Teraz gdybym mógł po prostu skompilować mój port ImageMagick ... Chyba zacznę inny wątek na ten temat. –

+0

Miałem ten sam problem z instalacją klejnotu mysql z Ruby 1.9.1 pod kontrolą rvm po przejściu na Snow Leopard. Próbowałem sugestii Jonathana, ale bezskutecznie. Trochę więcej kopania i wydaje się, że potrzebujesz 'rm -rf ~/.rvm' zamiast' rm -rf ~/.gem', ponieważ tam rvm przechowuje specyficzne klejnoty vm. – fractious

10

Rozwiązałem ten problem, instalując MySQL z MacPorts, a następnie uruchamiając tę ​​samą komendę instalacji klejnotów, którą tam masz.

Więc najpierw odinstalować MySQL masz z pakietu:

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* 

Jeśli nie zrobiłeś tego jeszcze zainstalować MacPorts stąd: http://www.macports.org/install.php Jest to pakiet dla systemu Snow Leopard.

Install MySQL5-devel z DarwinPorts:

sudo port install mysql5-server-devel 

To będzie zrobić wszystkie zależności i MySQL. Wykonaj wszystkie kroki poinstalacyjne, które instalator zaleca - elementy startowe itp. Instalowany przez MySQL jest 64-bitowy.

Następnie zainstalować gem MySQL z:

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

Uwaga ścieżka zmienia się tam. MacPorts umieszcza MySQL w różnych miejscach.

Powinieneś być dobry, aby iść.

+0

Właśnie dałeś rozwiązanie i mam ten sam błąd co poprzednio. Nie jestem pewien, czy będę musiała próbować przekompilować ruby ​​1.9.1. –

+0

Tak, miałem nadzieję, że to zadziała, ale myślę, że twój problem to Ruby 1.9.1. Korzystanie z domyślnego ruby ​​Snow Leopard działa. SL ruby ​​to 1.8.7. – Georges

+0

Zrobiłem trochę więcej śledztwa i znalazłem to: http://github.com/kwatch/mysql-ruby/tree/master – Georges

3

Próbowałem wszystkie powyższe kroki, bez powodzenia, ale odkrył obejście (lub cokolwiek) za pomocą gem mysqlplus zamiast gem mysql:

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

a teraz moje MySQL Ruby aplikacje działa jak czar w Pantera śnieżna.

+0

Muszę spróbować. Dziękuję Ci. –

+0

OH. MÓJ. BÓG. Gdybym mógł, zrobiłbym to 100 razy. Po wielu bezowocnych Googlingach i powtarzających się nieudanych próbach z użyciem mysql, mysql2 i ruby-mysql rozwiązałeś mój problem dwoma zdaniami i wierszem poleceń. Ty, panie, jesteś moim bohaterem. Jeśli kiedykolwiek się spotkamy, kupuję ci drinka. – abeger

1

Instalacja XCode był rozwiązaniem dla mnie

1

Miałem ten sam problem z gem mysql, rvm i ruby ​​1.9.1. Jak wspomniano w moim poście na NeptunePhoenix, odniosłem sukces instalując mysql przez port.