Jak mogę przełączyć się na Ruby 1.9.3 zainstalowany przy użyciu Homebrew?

82

Zainstalowałem Ruby 1.9.3 używając hombrew

napar zainstalować rubin

Ale domyślna 1.8.7 jest nadal używana. Jak mogę przełączyć OSX, aby używał 1.9.3 jako domyślnego ruby?

Aleksiej Zacharow
źródło

Odpowiedzi:

90

Proponuję przyjrzeć się rvm . Następnie możesz ustawić go jako domyślny za pomocąrvm use 1.9.3 --default

Ale jeśli jesteś zadowolony z instalacji homebrew.

Następnie po prostu zmień pierwszeństwo katalogów w PATH

Oto moje ścieżki / etc /

# homebrews should always take precedence
/usr/local/bin

# the default stack
/usr/bin
/bin
/usr/sbin
/sbin

Jest to ważne ogólnie dla homebrew, w przeciwnym razie zamiast wersji brew zostanie użyta systemowa wersja git, ruby, pg_admin, ...

jeśli powiesz which -a ruby, że zobaczysz wszystkie zainstalowane rubiny i pierwszeństwo wPATH

na przykład.

$ which -a ruby
/Users/matthew/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
/Users/matthew/.rvm/bin/ruby
/usr/bin/ruby


AKTUALIZACJA: Myślę, że teraz nie powinieneś się zmieniać /etc/paths

Zamiast tego trzeba sprawdzić, który z .profile, .bashrclub .bash_loginjest ładowany w swojej skorupie, i po prostu dodać /usr/local/bindo swojej drodze.

Dla mnie mam tylko plik .profile. Możesz utworzyć ten plik, jeśli żaden z tych plików nie istnieje już w Twoim katalogu domowym.

# homebrews should always take precedence
export PATH=/usr/local/bin:$PATH
Matthew Rudy
źródło
1
Wreszcie wybieram rbenv, poprzednio używany rvm.
Alexey Zakharov,
fajne. Mimo wszystko sugeruję wprowadzenie zmian w ścieżkach / etc /. Kiedyś się dziwne błędy (np ja bym. brew upgrade git, Ale wersja nie zmieni wyproszeni ja nigdy nie używałem wersji napar.)
Matthew Rudy
29
Dziękujemy za udzielenie właściwej odpowiedzi, a nie tylko powiedzenie „użyj rvm”. Nie każdy może korzystać z RVM i nienawidzę, gdy najlepsza odpowiedź po prostu mówi OP, aby zrobił coś, czego nie zapytał, jak to zrobić.
bricker
To załatwiło sprawę: interworks.com/blogs/ckaukis/2013/03/05/...
user2387149
Miałem problemy ze skompilowaniem Rubiego za pomocą rvm, więc zamiast tego zdecydowałem się na rbenv, ponieważ działał bez problemów.
Pellet
73

KRÓTKA ODPOWIEDŹ:

po zainstalowaniu Ruby przez homebrew po prostu zrób to:

brew link --overwrite ruby

i uruchom ponownie lub ponownie otwórz terminal  


DŁUGA ODPOWIEDŹ

Zrobiłem więc normalną instalację ruby ​​za pomocą homebrew

brew install ruby

który zainstalował się dobrze, ALE nadal używał domyślnego ruby ​​systemu. które zweryfikowałem wykonując:

which ruby 
#/usr/bin/ruby

Więc zgodnie z sugestią Matthew Rudy'ego sprawdziłem kolejność moich ścieżek / etc / i wszystko poszło dobrze.

Wtedy zdecydowałem się zrobić:

which -a ruby
#/usr/bin/ruby
#usr/local/bin/ruby

więc nic nie zostało zepsute jako takie. próbowałem ponownie zainstalować Ruby, używając metody homebrew, a potem go znalazłem.

Homebrew wspomniał:

Warning: ruby-2.3.1 already installed, it's just not linked

więc musiałem zrobić:

brew link --overwrite ruby
Craig Wayne
źródło
13
Nie zapomnij zrestartować instancji iTerm, w przeciwnym razie ruby --versionpokaże się nieaktualna wersja.
dialex
1
Czy naprawdę musisz ponownie uruchomić? czy po prostu hash -r?
dwanderson
1
FYI, Homebrew teraz odmawia zrobienia tego. Dla mnie z Fishem zasugerował: echo 'set -g fish_user_paths "/ usr / local / opt / ruby ​​/ bin" $ fish_user_paths' >> ~ / .config / fish / config.fish
Atem18
46

Jeśli chcesz użyć homebrew do zainstalowania 1.9.3, możesz wykonać następujące kroki:

$ brew update
$ brew install rbenv
$ brew install ruby-build

Po zainstalowaniu rbenv i ruby-build możesz uruchomić następujące polecenie, aby zainstalować Ruby 1.9.3.

$ rbenv install 1.9.3-p125

Teraz, jeśli chcesz domyślnie używać 1.9.3, możesz uruchomić następujące polecenie:

$ rbenv global 1.9.3-p125
Francis Kim
źródło
Link do źródła jest teraz martwy
Chris Brown
4
Nie działa na OS X 10.11+. Keep system wykorzystujący starą wersję, a nie jeden mam zainstalowane / setted domyślnie z rbenv zainstalować 1.9.3-P125 / rbenv globalny 1.9.3-P125
Andrei Konstantinov
„rbenv global 1.9.3-p125” - ta linia uratowała mi noc. Podziękować!
Andrii Kovalchuk
Na mnie to nie działa. Musiałem umieścić ścieżkę do pliku exec w moim $ PATH, zanim zadziałało.
mr-sk
6

Miałem podobną sytuację. Zainstalowałem Ruby za pomocą Homebrew. which -a rubydał mi następujący wynik:

#usr/local/bin/ruby
#/usr/bin/ruby

Co oznacza, że ​​nowo zainstalowana wersja powinna zostać użyta, ale ruby --versionnadal powinna zwrócić starą wersję systemu.

Opuściłem terminal (Cmd + Q), a po restarcie zwróciłem ruby --versionpoprawną wersję. Dlatego przed wypróbowaniem innych (potencjalnie niepotrzebnych) poprawek należy ponownie uruchomić terminal po instalacji.

Andrii Chernenko
źródło
4

SKRÓT: Zanotuj, na co chcesz to zmienić.

Jeśli korzystasz z OS X i próbujesz użyć Ruby do czegoś takiego jak Jekyll, nie używaj homebrew, ponieważ do tego właśnie używa Apple dla Ruby i może nie być dobry w użyciu, jeśli nie jesteś pewien, kim jesteś robić. Zamiast tego użyj rbenv lub RVM.

MNIEJ KRÓTKI: Próbowałem przełączyć się z wersji domyślnej na zaktualizowaną (z 2.0), aby używać Jekyll, ponieważ wymagało to Ruby w wersji 2.2.5 i nowszych. Zaktualizowałem go i została zainstalowana wersja 2.5, ale kiedy zaznaczyłem "ruby -v", nadal była to 2.0. Kiedy w końcu udało mi się zmienić wersję domyślną, nie mogłem zainstalować pakietu, którego potrzebowałem, ponieważ nie miałem uprawnień do zapisu. Na przykład, jeśli natkniesz się na coś takiego, prawdopodobnie masz ten sam problem

$ gem install jekyll bundler
ERROR:  While executing gem ... (Gem::FilePermissionError)    
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Richard Lin
źródło
0

W OSX możesz zmienić ścieżkę za pomocą:

sudo nano / etc / path

A następnie dodaj ścieżkę lub zmień kolejność.

Robert
źródło
-2

Jako alternatywne podejście dla każdego, kto szuka odpowiedzi na to pytanie - możesz ustawić alias w swoim .bash_profile np.

ruby="/usr/local/bin/ruby"

w ten sposób poradziłem sobie z problemem

Bn Mk
źródło
tak, problem z tym (i najprawdopodobniej przyczyna negatywnych głosów) polega na tym, że działa to tylko wtedy, gdy chcesz ręcznie wywołać ruby, a system nie używa określonej wersji
David Seek