Problem z aktualizacją gem-ów pod Mac OS X

Witam,

Jestem bardzo świeżym użytkownikiem Mac OS X. Po uruchomieniu nowo zakupionego MacBooka na zainstalowanym systemie (10.6) dostępne było już Ruby i Ruby on Rails. Chciałem zaktualizować sobie środowisko do najnowszej wersji RoR. I tak, najpierw wykonałem “sudo gem update --system”, a następnie “gem update rails”. Przez przypadek, zaktualizowałem sobie rails-y lokalnie. Odinstalowałem lokalnie, i zaktualizowałem następnie poprzez sudo, by wszystkie gemy były w jednym miejscu. I mam teraz takie pytania:

  1. Przy usuwaniu lokalnie zainstalowanego gema “rack” pytał się czy usunąć “rackup”. Usunąłem. Co to “rackup”? Czy dobrze zrobiłem, że go usunałęm? Przy instalacji gem-a “rack” poprzez sudo nie zainstalowało się już “rackup”…
  2. Czy można usunąć z katalogu domowego katalog “.gem”, jeżeli nie posiada żadnych gemów (wszystko instalowałem poprzez sudo)?
  3. Jak odinstalować inne wersje RoR (jest tam jeszcze 2.2.2 i 1.3.6)? Przy próbie usunięcia poprzez np. “sudo gem uninstall rails -v 2.2.2” sypał błędami…
  4. Na koniec wykonałem “sudo gem update” i część gemów zaczęła sypać błędami:

$ sudo gem update
Updating installed gems
Updating RedCloth
Building native extensions. This could take a while…
ERROR: Error installing RedCloth:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can’t find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/RedCloth-4.2.2 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/RedCloth-4.2.2/ext/redcloth_scan/gem_make.out
Updating acts_as_ferret
Successfully installed acts_as_ferret-0.4.4
Updating capistrano
Successfully installed net-ssh-2.0.15
Successfully installed capistrano-2.5.10
Updating dnssd
Building native extensions. This could take a while…
ERROR: Error installing dnssd:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can’t find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/dnssd-1.3.1 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/dnssd-1.3.1/ext/dnssd/gem_make.out
Updating fastthread
Building native extensions. This could take a while…
ERROR: Error installing fastthread:
ERROR: Failed to build gem native extension.

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can’t find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

Dlaczego tak się dzieje?! Czy teraz, po tej aktualizacji, gemy, które zaczęły sypać błędami będą działać poprawnie (nie zostały zaktualizowane, ale czy są uszkodzone)?

Bardzo proszę o pomoc!

Wszelkie błędy po „Building native extensions” są spowodowane tym, że nie masz zainstalowanego gcc. Świeży Snow Leopard tego nie ma. Podobno znajduje się na płycie instalacyjnej systemu dostarczanego razem z kompem (szukaj pod słowem kluczowym Xcode). Albo po prostu zarejestruj się na developer.apple.com i pobierz XCode lub iPhone SDK+Xcode. Ostrzegam, co najmniej gigabajt do pobrania :). Posiadanie gcc jest niezbędne, nie ma co tego odkładać na później. :slight_smile:

Katalog ~/.gem można spokojnie usunąć.

Ogólnie bardzo nie polecam korzystania z systemowej wersji Rubiego – zdążyłeś już zasmakować problemów.

Genialnym rozwiązaniem jest Ruby Version Manager: http://rvm.beginrescueend.com/install/. Nie jest to niezbędna rzecz (portsowy lub ręcznie kompilowany Ruby też da radę), ale warto mieć dostęp do różnych wersji Rubiego.

Jeśli jesteś świeżym userem OS X, to warto też zainteresować się http://www.macports.org/ i tym instalować wszystkie gity, MySQL-e itp.

To tam nie wystarczy jakieś port install gcc? :stuck_out_tongue:

Portsy kompilują wszystko ze źródeł, dlatego one same wymagają gcc :D.

A ;]

Czyli tak jak emerge w gentoo - myślałem, że to system paczek typu apt bardziej.

po porty to macowy portage z gentoo, jeśli się nie mylę więc dokładnie jak w gentoo

A ;]

Czyli tak jak emerge w gentoo - myślałem, że to system paczek typu apt bardziej.[/quote]
Jak chcesz bardziej paczki to jest “fink” – po prostu apt z Debiana, chociaż trochę uboższy niż porty.

http://www.finkproject.org/