Pobrałem i skompilowałem najnowszą wersję Ruby 1.9.2, która została zainstalowana /usr/local/bin/ruby
, jednak system oficjalnie rozpoznaje wersję /usr/bin/ruby
1.8.7, która została zainstalowana na komputerze. Jak mogę umieścić nowy rubin na swoim miejscu?
W tym przypadku muszę zastąpić wersję Ruby i móc używać zaktualizowanej wersji do pracy z wierszem poleceń i rozwoju szyn.
Odpowiedzi:
Powinieneś użyć RVM , Ruby Version Manager. Pozwala na wiele równoległych instalacji Ruby bez wpływu na systemową instalację Ruby, co, jak zauważył inny komentator, może być potencjalnie problematyczne (lub przynajmniej męczące w utrzymaniu).
Pozwala szybko i łatwo zainstalować najnowszą łatkę Ruby, wcześniejsze wersje Ruby, a nawet alternatywne implementacje, takie jak JRuby, MacRuby lub Rubinius.
Żeby zainstalować:
Po zainstalowaniu ustawienie 1.9.2 jako domyślne jest tak proste, jak pisanie:
A jeśli chcesz tymczasowo wrócić do wersji 1.8.7:
źródło
Co rozumiesz przez „wprowadzenie nowego Ruby na miejsce”?
Jeśli próbujesz uruchomić go z wiersza poleceń, używając tylko polecenia
ruby
, system będzie przeszukiwał każdą ze ścieżek określonych/etc/paths
w kolejności, aż znajdzie pasujące. W systemie Snow Leopard domyślny/etc/paths
plik wygląda następująco:Więc kiedy wejdziesz
ruby
w linię poleceń, system szuka/usr/bin/ruby
najpierw, znajduje ją i nie sprawdza reszty ścieżek (więc nigdy się nie dostanie/usr/local/bin/ruby
). Aby to potwierdzić, możesz wpisaćwhich ruby
w wierszu polecenia, a system wydrukuje ścieżkę do pliku wykonywalnego, którego użyłby dla tego polecenia.Jeśli chcesz uruchomić nowszą wersję Ruby z wiersza poleceń, po prostu wpisz
/usr/local/bin/ruby
zamiastruby
.Jeśli używasz innego programu, który używa Ruby pośrednio, prawdopodobnie istnieje gdzieś opcja, aby określić ścieżkę do
ruby
.EDYCJA: W ostateczności możesz zastąpić wbudowaną wersję systemową Ruby nowszą wersją. Użyj następujących poleceń i po wyświetleniu monitu wprowadź hasło administratora:
Jeśli coś się psuje, odłóż to z powrotem za pomocą tego polecenia:
Jednak, jak wspomnieli inni, użycie narzędzia takiego jak RVM do zarządzania Ruby byłoby lepszym pomysłem niż uaktualnienie wbudowanej instalacji.
źródło
/usr/bin/ruby
tego, czy dostarczono je Appleruby
.ruby
w OS X (byłoby inaczej, gdybyśmy mówili o wprowadzeniu poważnej zmiany, takiej jak PHP4 na PHP5). Ale masz rację, że generalnie jest to zły pomysł, dlatego wspomniałem o tym ostatnio. Przypuszczam, że istnieje powód, dla którego ten użytkownik woli wersję 1.9.2 niż 1.8.7 lub nie zadawałby tego pytania - potencjalne korzyści płynące z uruchomienia najnowszej wersji prawdopodobnie przewyższają niewielkie ryzyko uszkodzenia czegoś, ponieważ został zaktualizowany do następnej drobnej wersja.Jeśli naprawdę chcesz zastąpić istniejący
/usr/bin/ruby
(który jest po prostu linkiem sym/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
), po prostu zastąp istniejący plik tym, który skompilowałeś, starając się dopasować uprawnienia do pliku.Powodów tego nie ma wiele, ale jest to takie proste, biorąc pod uwagę dosłowną interpretację twojego pytania.
Większość ludzi zmienia swoją ścieżkę, aby uwzględnić nowszy rubin przed wersją systemową, ponieważ jest to prostsze i mniej prawdopodobne, że zepsuje inne rzeczy, które zależą od zainstalowanej wersji ruby i powiązanego z nią dylib, klejnotów, rdoców i tym podobnych.
Jedną z korzyści płynących z homebrew i Fink i RVM i DarwinPorts jest to, że pomaga zautomatyzować inscenizację do innej lokalizacji i wspierać modyfikując swoją ścieżkę.
Możesz zrobić to samo z rubinem, który posiadasz
/usr/local/bin
, manipulując zmienną ścieżki i następniewhich -a ruby
dwukrotnie sprawdzając swoją pracę.źródło
Sposobem na znalezienie dowolnego samodzielnie zainstalowanego programu, zanim zostanie dostarczony Apple, jest dodanie katalogu nowego programu (np. / Usr / local / bin) do fromt zmiennej środowiskowej PATH.
Jeśli używasz ruby z powłoki edytuj ~ / .profile lub jeśli z GUI ~ / .MacOSX / environment.plist
źródło
Możesz rzucić okiem na Homebrew , która ułatwia instalację najnowszego Rubiego -
brew install ruby
to wszystko czego potrzebujesz - i wiele innych pakietów bez ingerowania w nic już w twoim systemie, do lokalizacji (prawie na pewno) już w twoim$PATH
.źródło