2011-08-06 11 views
12

Używam Debian Squeeze jako mojego systemu operacyjnego i staram się rozwijać projekty Ruby on Rails. Do tego najpierw zainstalowałem kilka pakietów ruby.jak ustawić ruby1.9.1 jako domyślną wersję debian squeeze

Moi wersje rubinowe są: ruby1.8, ruby1.9.1

Potem odinstalowane ruby1.8 aby ruby1.9.1 domyślną rubin.

Teraz jeśli biegnę:

$ which ruby 

wyświetla nic.

Jeśli biegnę:

$ which ruby1.9.1 
/usr/bin/ruby1.9.1 

Jednakże:

$ rails new testApp 
bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory 

nie wiem co robić. Proszę, prowadź mnie.

+0

Zobacz to pytanie: http://stackoverflow.com/questions/1892877/how-do-i-make-ruby-1-9-the-default-ruby-on-ubuntu – weakish

Odpowiedz

1

Mimo że nie mam bezpośredniej odpowiedzi na twoje pytanie, sugeruję, abyś spróbował użyć wspaniałego narzędzia rvm (manager ruby) (http://beginrescueend.com/). To znacznie ułatwia moje życie, gdy próbuję grać z rubinem na Ubuntu.

+0

Dzięki za odpowiedź, próbowałem tego też, gdy uruchamiam ** bash <<(curl -s https://rvm.beginrescueend.com/install/rvm)** dostałem ** ERROR: nie można sklonować repozytorium RVM, próbowałem zarówno git: // jak i https : // ** – Arivarasan

+0

upewnij się, że nie jesteś za zaporą, a także najpierw zainstaluj git. skrypt instalacyjny bootstrap narzeka, że ​​nie może sprawdzić zasobów. Google będzie twoim najlepszym przyjacielem w tej sprawie. –

+1

Uwaga: rvm zmienił swoją procedurę instalacji, zawsze odwiedzaj https://rvm.io/, aby sprawdzić najnowsze. – ocodo

9

Co robię na moich polach squeeze dostać Ruby 1.9 domyślnie:

cd /usr/bin 
ln -sf ruby1.9.1 ruby 
ln -sf gem1.9.1 gem 
ln -sf erb1.9.1 erb 
ln -sf irb1.9.1 irb 
ln -sf rake1.9.1 rake 
ln -sf rdoc1.9.1 rdoc 
ln -sf testrb1.9.1 testrb 

uruchomić wiele serwerów produkcyjnych szyny w ten sposób, a wszystkie inne pakiety Debian rubinowe nie są złamane, ponieważ przekaźnik na/usr /bin/ruby1.8 plik binarny.

To nie jest "prawdziwa debiana", ale z jakiegoś powodu update-alternatives nie obsługuje konfigurowania ruby ​​w wyciskaniu.

W Ubuntu 11.10 można po prostu uruchomić update-alternatives --config ruby i wybiera żądaną wersję

Polecam również na aktualizację RubyGems przed rozpoczęciem instalowania żadnych klejnotów REALLY_GEM_UPDATE_SYSTEM=true gem update --system

12

Dla Debian Squeeze (6,0):

Pierwszy pamiętaj o odinstalowaniu wszystkich pakietów ruby ​​i ruby1.8. W przeciwnym razie będą ingerować w pliki binarne/linki, które mają zostać ustawione dla Rubiego 1.9.

Następnie zainstaluj pakiety ruby ​​1.9. Pomimo tego, że te pakiety nazywają się "1.9.1", faktycznie instalują wersję Rubin 1.9.2 w systemie Debian squeeze. Pakiet wirtualny ruby1.9.1-full zainstaluje wszystkie pakiety niezbędne dla Ruby:

sudo aptitude install ruby1.9.1-full 

Dodaj alternatywne linki do ri i podręcznika w pakiecie ri1.9.1. (Te dwie linie są jedno polecenie.)

sudo update-alternatives --install /usr/bin/ri ri /usr/bin/ri1.9.1 10 \ 
--slave /usr/share/man/man1/ri.1.gz ri.1.gz /usr/share/man/man1/ri1.9.1.1.gz 

Dodaj alternatywnych połączeń Ruby, związane binarne i podręczniki, w opakowaniu ruby1.9.1. (Te linie to jedno polecenie.)

sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 10 \ 
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz /usr/share/man/man1/ruby1.9.1.1.gz \ 
--slave /usr/bin/erb erb /usr/bin/erb1.9.1 \ 
--slave /usr/bin/gem gem /usr/bin/gem1.9.1 \ 
--slave /usr/bin/irb irb /usr/bin/irb1.9.1 \ 
--slave /usr/bin/rake rake /usr/bin/rake1.9.1 \ 
--slave /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.1 \ 
--slave /usr/bin/testrb testrb /usr/bin/testrb1.9.1 \ 
--slave /usr/share/man/man1/erb.1.gz erb.1.gz /usr/share/man/man1/erb1.9.1.1.gz \ 
--slave /usr/share/man/man1/gem.1.gz gem.1.gz /usr/share/man/man1/gem1.9.1.1.gz \ 
--slave /usr/share/man/man1/irb.1.gz irb.1.gz /usr/share/man/man1/irb1.9.1.1.gz \ 
--slave /usr/share/man/man1/rake.1.gz rake.1.gz /usr/share/man/man1/rake1.9.1.1.gz \ 
--slave /usr/share/man/man1/rdoc.1.gz rdoc.1.gz /usr/share/man/man1/rdoc1.9.1.1.gz \ 
--slave /usr/share/man/man1/testrb.1.gz testrb.1.gz /usr/share/man/man1/testrb1.9.1.1.gz 

Zauważ, że wszystkie one są zainstalowane na niskim priorytecie alternatywnym 10 (ostatniej części po fladze --install ale przed --slave flagi). Robi się to z nadzieją, że przyszłe wersje Debiana będą zawierały zarówno ruby ​​1.8, jak i ruby ​​1.9 jako część systemu alternatyw i zastępują te linki.

Sprawdź ri w systemie alternatyw:

update-alternatives --display ri 

Rezultat:

ri - auto mode 
link currently points to /usr/bin/ri1.9.1 
/usr/bin/ri1.9.1 - priority 10 
slave ri.1.gz: /usr/share/man/man1/ri1.9.1.1.gz 
Current 'best' version is '/usr/bin/ri1.9.1'. 

Sprawdź rubin w systemie alternatyw:

update-alternatives --display ruby 

Rezultat:

ruby - auto mode 
link currently points to /usr/bin/ruby1.9.1 
/usr/bin/ruby1.9.1 - priority 10 
slave erb: /usr/bin/erb1.9.1 
slave erb.1.gz: /usr/share/man/man1/erb1.9.1.1.gz 
slave gem: /usr/bin/gem1.9.1 
slave gem.1.gz: /usr/share/man/man1/gem1.9.1.1.gz 
slave irb: /usr/bin/irb1.9.1 
slave irb.1.gz: /usr/share/man/man1/irb1.9.1.1.gz 
slave rake: /usr/bin/rake1.9.1 
slave rake.1.gz: /usr/share/man/man1/rake1.9.1.1.gz 
slave rdoc: /usr/bin/rdoc1.9.1 
slave rdoc.1.gz: /usr/share/man/man1/rdoc1.9.1.1.gz 
slave ruby.1.gz: /usr/share/man/man1/ruby1.9.1.1.gz 
slave testrb: /usr/bin/testrb1.9.1 
slave testrb.1.gz: /usr/share/man/man1/testrb1.9.1.1.gz 
Current 'best' version is '/usr/bin/ruby1.9.1'. 
+0

Pojawia się następujący błąd podczas instalowania alternatywnej alternatywy 'update-alternatives: error: alternatywny klejnot nie może być niewolnikiem ruby: jest to główna alternatywa. –

+0

Na jakiej wersji Debiana było to możliwe? Powyższe polecenia były specyficzne dla squeeze (6.x). Być może był jeszcze plik konfiguracyjny z pakietu rubygems1.8 lub jednego z innych pakietów ruby ​​1.8. Czy te pakiety i ich konfiguracje zostały w pełni wyczyszczone? – finn

+0

Tęsknię za krokiem * 1 *, który został usunięty rubinem. 1.8 Miał nadzieję na przejście między wersjami. Ugryziemy kulę i ulepszę ją. –

Powiązane problemy