我遇到了已安装的有冲突的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,但不知道如何去做。
答案 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