我想在Ubuntu 10.04操作系统上降级我安装的Ruby版本(Ruby 1.9.2),以便我可以使用适当版本的Ruby 1.8.7来运行Rails 2.0.2。我正在使用旧版本的Rails用于项目目的。
如果我在Ruby 1.9.2中使用Rails 2.0.2,则会给出一个错误,指出无法将Enumerator转换为数组。
我以为我可以使用rvm,但我不确定它是否适合降级。
当我使用命令 rvm list
时,我在终端中得到以下内容mgj@pc146724-desktop:~$ rvm list known
# MRI Rubies
[ruby-]1.8.6[-p399]
[ruby-]1.8.6-head
[ruby-]1.8.7[-p302]
[ruby-]1.8.7-head
[ruby-]1.9.1-p243
[ruby-]1.9.1[-p376]
[ruby-]1.9.1-p429
[ruby-]1.9.1-head
[ruby-]1.9.2-preview1
[ruby-]1.9.2-preview3
[ruby-]1.9.2-rc1
[ruby-]1.9.2-rc2
[ruby-]1.9.2[-p0]
[ruby-]1.9.2-head
ruby-head
# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.5.1
jruby-1.5.2
/home/mohnish/.rvm/config/known
使用 dpkg -l |命令在安装的ruby软件包列表中获得以下内容grep ruby
mgj@pc146724-desktop:~$ dpkg -l | grep ruby
ii libdbm-ruby 4.2 DBM interface for Ruby
ii libdbm-ruby1.8 1.8.7.249-2 DBM interface for Ruby 1.8
ii libgdbm-ruby 4.2 GDBM interface for Ruby
ii libgdbm-ruby1.8 1.8.7.249-2 GDBM interface for Ruby 1.8
ii libopenssl-ruby 4.2 OpenSSL interface for Ruby
ii libopenssl-ruby1.8 1.8.7.249-2 OpenSSL interface for Ruby 1.8
ii libreadline-ruby 4.2 Readline interface for Ruby
ii libreadline-ruby1.8 1.8.7.249-2 Readline interface for Ruby 1.8
ii libruby1.8 1.8.7.249-2 Libraries necessary to run Ruby 1.8
ii libtcltk-ruby 4.2 Tcl/Tk interface for Ruby
ii libtcltk-ruby1.8 1.8.7.249-2 Tcl/Tk interface for Ruby 1.8
ii rdoc 4.2 Generate documentation from ruby source file
ii ruby 4.2 An interpreter of object-oriented scripting
ii ruby-elisp 4.2 Emacs-lisp ruby-mode for Ruby
ii ruby-full 4.2 Ruby full installation
ii ruby1.8 1.8.7.249-2 Interpreter of object-oriented scripting lan
ii ruby1.8-dev 1.8.7.249-2 Header files for compiling extension modules
ii ruby1.8-elisp 1.8.7.249-2 ruby-mode for Emacsen
mgj@pc146724-desktop:~$ ^C
我是否需要卸载Ruby 1.9.2,然后才新安装Ruby 1.8.7或者我可以切换版本吗?如果我可以切换版本,请指导我如何设置从Ruby 1.9.2到Ruby 1.8.7的路径。或者,如果有其他方式,请告诉我。
如果我必须卸载Ruby 1.9.2然后重新安装Ruby 1.8.7,请告诉我如何进行操作。我尝试了以下命令来卸载Ruby 1.9.2,但它似乎没有找到Ruby 1.9.2包。
sudo aptitude remove ruby
sudo aptitude remove ruby 1.9.2p0
sudo purge ruby
sudo aptitude purge ruby 1.9.2p0
当我检查安装的当前版本的Ruby时,它显示:
mgj@pc146724-desktop:~/Downloads/rubygems_postextract/rubygems-1.4.1$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]
mgj@pc146724-desktop:~/Downloads/rubygems_postextract/rubygems-1.4.1$ which ruby
/home/mgj/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
感谢您的帮助.. !!
答案 0 :(得分:39)
RVM的全部意义在于您可以拥有多个版本的Ruby并轻松切换它们。
rvm install 1.8.7 #or some specific version - choose from the rvm list known
rvm use 1.8.7
rvm gemset create rails202 #create a gemset called "rails202" for Ruby 1.8.7
rvm 1.8.7@rails202 #make the gemset the current selection
gem install rails -v 2.0.2 #install rails (just for this gemset!)
#now, we have a gemset called "rails202" in Ruby 1.8.7.
#anytime we want to use it, we do:
rvm 1.8.7@rails202
#create as many gemsets needed, eg for rails 3.0.3 on Ruby 1.8.7 we can do the
#similar as above. Then to use the new gemset just do:
rvm 1.8.7@rails303
#et voila! we are now using Rails 3.0.3 on Ruby 1.8.7 !
答案 1 :(得分:7)
使用RVM并节省数周的痛苦。
您可以使用多个Ruby版本,每个版本都有自己独立的宝石。这样你可以分别在前者和后者上安装与Rails 2和Rails 3宝石同时安装1.8.7和1.9.2。
安装Ruby版本就像键入rvm install 1.9.2
或rvm install 1.8.7
一样简单。要在两者之间切换:rvm 1.9.2
或rvm 1.8.7
。
您可以使用rvm --default 1.9.2
或rvm --default 1.8.7
设置默认Ruby。
RVM不会触及您当地的Ruby,也不会触及它的宝石。您可以随时切换回它:rvm system
。
答案 2 :(得分:0)
source~ / .rvm / scripts / rvm
rvm reload(重新加载最新安装的rvm)
rvm install 1.8.7
rvm使用1.8.7 - 默认