冲突的ruby版本

时间:2010-05-12 14:10:49

标签: ruby-on-rails ruby

我遇到了已安装的有冲突的Ruby版本的问题。我有1.8.6,然后安装1.8.7,它已导致问题。尝试在rails app上运行我的ruby时出现以下错误:

/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,但不知道如何去做。

4 个答案:

答案 0 :(得分:3)

进入同样的问题并认为我会分享我的发现。有一个1.8.7 ruby​​版本由rpm(centos 6.3)安装,我从源代码编译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/

如果在前面没有'ruby'命令的情况下运行,我会得到:

$ /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​​”)

如果有人可以告诉我如何从“宝石环境”输出中更改“RUBY EXECUTABLE”,那么我不需要在命令行上指定它,我将不胜感激

欢呼声,

格里特

答案 1 :(得分:0)

只需将$ PATH更改为指向所需的版本。

我从tarball安装ruby(而不是从分发包中安装)。这样我可以同时使用几个不同的版本,我只需更新会话中的$ PATH,我想使用不同的版本。

答案 2 :(得分:0)

您最简单的路径和未来证明也将使用rvm。使用rvm下载所需的ruby版本并将其设为默认值。

安装:http://rvm.beginrescueend.com/rvm/install/

将其设为默认值:
rvm 1.8.6 --default

整个过程不会超过15分钟。这一切都清楚地解释了。在您观看此播客之前,您的环境将被设置:
http://railscasts.com/episodes/200-rails-3-beta-and-rvm

答案 3 :(得分:0)

是,设置路径:

export PATH=yourrubypath/bin:$PATH

应该这样做。

我建议您安装rvm,这样您就可以运行不同的ruby版本并以非常简单的方式管理gem集

安装说明为here。但它基本上减少到:

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

然后你可以从源代码安装一个更新的ruby(它会编译它!):

$ 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