2010-05-12 81 views
0

我遇到了我安装的Ruby版本相冲突的问题。我有1.8.6,然后安装1.8.7,它已经造成了问题。试图在轨道上运行的应用程序的红宝石我时,我得到了以下错误:冲突的红宝石版本

/usr/local/lib/ruby/1.8/i686-linux/rbconfig.rb:7: ruby lib version (1.8.6) doesn't match executable version (1.8.7) (RuntimeError) 

我想以某种方式去除1.8.7,只是使用1.8.6,但不知道如何去这样做。

回答

0

是,设置路径:

export PATH=yourrubypath/bin:$PATH 

应该这样做。

我建议你安装rvm,这样你可以运行不同版本的Ruby,并在一个非常简单的方法

安装说明here管理宝石套。但是它基本上可简化为:

bash < <(curl http://rvm.beginrescueend.com/releases/rvm-install-head) 

然后你可以从源代码安装一个新的红宝石(它将编译!):

$ rvm install 1.9.1 ; rvm 1.9.1 

$ ruby -v 

ruby 1.9.1p243 (2009-07-16 revision 24175) [x86_64-linux] 

$ which ruby 

/home/you/.rvm/ruby-1.9.1-p243/bin/ruby 

你可以回去了“系统”的一个这样做的:

$ rvm system 
+0

非常感谢。我甚至不知道什么我的红宝石路径是。这是whereis ruby​​的输出:共享/人/男1/ruby​​.1.gz – DavidP6 2010-05-12 20:24:06

0

只需将您的$ PATH改为指向您想要的版本即可。

我从tarball(而不是从分发包)安装红宝石。通过这种方式,我可以同时运行多个不同的版本,我只需更新会话中的$ PATH,以便使用不同的版本。

+1

感谢您的领先优势。我有点新的这一切,我在哪里设置$ PATH? – DavidP6 2010-05-12 15:11:22

3

跑进这个相同的问题,并认为我会分享我的发现。 rpm(centos 6.3)安装了1.8.7的ruby版本,并且我从源代码编译了1.9.3,并将其放在/ opt/upnxt/ruby​​目录中。运行时,

export PATH=/opt/upnxt/ruby/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin 
export LD_LIBRARY_PATH=/opt/upnxt/ruby/lib64 
export RUBYPATH=/opt/upnxt/ruby/bin 
export RUBY_HOME=/opt/upnxt/ruby 
export RUBYLIB=/opt/upnxt/ruby/lib64/ruby/1.9.1:/opt/upnxt/ruby/lib64/ruby/1.9.1/x86_64-linux 
export GEM_HOME=/opt/upnxt/ruby/lib64/ruby/1.9.1 
export GEM_PATH=/opt/upnxt/ruby/lib64/ruby/1.9.1:/opt/upnxt/ruby/lib64/ruby/gems/1.9.1 

,然后......我改变了我的环境

$ ruby /opt/upnxt/ruby/bin/gem environment 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.8.23 
    - RUBY VERSION: 1.9.3 (2012-11-10 patchlevel 327) [x86_64-linux] 
    - INSTALLATION DIRECTORY: /opt/upnxt/ruby/lib64/ruby/1.9.1 
    - RUBY EXECUTABLE: /usr/bin/ruby 
    - EXECUTABLE DIRECTORY: /opt/upnxt/ruby/lib64/ruby/1.9.1/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-linux 
    - GEM PATHS: 
    - /opt/upnxt/ruby/lib64/ruby/1.9.1 
    - /opt/upnxt/ruby/lib64/ruby/gems/1.9.1 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 

如果没有前面的 '红宝石' 命令运行,我会得到:

$ /opt/upnxt/ruby/bin/gem environment 
/opt/upnxt/ruby/lib64/ruby/1.9.1/x86_64-linux/rbconfig.rb:7: ruby lib version (1.9.3) doesn't match executable version (1.8.7) (RuntimeError) 
    from /opt/upnxt/ruby/lib64/ruby/1.9.1/rubygems.rb:31:in `require' 
    from /opt/upnxt/ruby/lib64/ruby/1.9.1/rubygems.rb:31 
    from /opt/upnxt/ruby/bin/gem:8:in `require' 
    from /opt/upnxt/ruby/bin/gem:8 

因为如前所述,默认#!/ usr/bin/ruby​​。我想这就是为什么人们应该使用“#!/ bin/env ruby​​”作为shebang(或者“#!/ usr/bin/env ruby​​“)

如果有人可以告诉我如何从”gem environment“输出中更改”RUBY EXECUTABLE“,所以我不需要在命令行中指定它,我将不胜感激

欢呼声,

格里特