2010-05-12 98 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「,所以我不需要在命令行中指定它,我將不勝感激

歡呼聲,

格里特