【问题标题】:rbenv not including system ruby (1.8.7) in list of available ruby versionsrbenv 在可用 ruby​​ 版本列表中不包括系统 ruby​​ (1.8.7)
【发布时间】:2012-06-10 01:44:03
【问题描述】:

我在 Ubuntu 12.04 x64 Desktop 上使用 Ruby,但遇到 rbenv 问题 - 它只能看到 rbenv 安装的 ruby​​ 版本,看不到通过 Aptitude 安装的 Ubuntu 系统 ruby​​:

$> rbenv versions
  1.9.2-p290
* 1.9.3-p0 (set by /home/kurtosis/bin/ruby/rbenv/version)
  jruby-1.6.5.1

1.8.7.352-2ubuntu1 也应该出现在该列表中。将本地或全局 ruby​​ 设置为系统,然后尝试运行 ruby 或 irb 会导致提示挂起:

$> rbenv versions
  1.9.2-p290
* 1.9.3-p0 (set by /home/kurtosis/bin/ruby/rbenv/version)
  jruby-1.6.5.1
$> ruby --version
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]
$> rbenv global system
$> rbenv versions
  1.9.2-p290
  1.9.3-p0
  jruby-1.6.5.1
$> ruby --version
^C
$> rbenv system
rbenv: no such command `system'
$>

我在安装过程中是否遗漏了什么,您是否手动将系统 ruby​​ 添加到 rbenv 或其他东西?

通过 Aptitude 安装 Ruby 1.8.7:

$> aptitude show ruby
Package: ruby                            
State: installed
Automatically installed: no
Version: 4.8
Priority: optional
Section: interpreters
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: all
Uncompressed Size: 36.9 k
Depends: ruby1.8 (> 1.8.7.334-1)
Suggests: ri, ruby-dev
Conflicts: irb, irb, rdoc, rdoc
Replaces: irb, irb, rdoc, rdoc
Provides: irb, rdoc
Provided by: ruby1.8
Description: Transitional package for ruby1.8
 This is a transitional package which ensures that users of ruby will use ruby1.8 in the future. It can safely be removed.
Homepage: http://www.ruby-lang.org/


$> aptitude show ruby1.8
Package: ruby1.8                         
New: yes
State: installed
Automatically installed: yes
Version: 1.8.7.352-2ubuntu1
Priority: optional
Section: interpreters
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Architecture: amd64
Uncompressed Size: 370 k
Depends: libc6 (>= 2.2.5), libruby1.8 (= 1.8.7.352-2ubuntu1)
Suggests: ruby1.8-examples, ri1.8
Conflicts: irb1.8 (< 1.8.7.249-3~), irb1.8 (< 1.8.7.249-3~), rdoc1.8 (< 1.8.7.249-3~), rdoc1.8 (< 1.8.7.249-3~), ri (<= 4.5), ri (<= 4.5), ri1.8 (<
           1.8.7.334-4~), ri1.8 (< 1.8.7.334-4~), ruby (<= 4.5), ruby (<= 4.5), ruby1.8
Replaces: irb1.8, irb1.8, rdoc1.8, rdoc1.8
Provides: irb1.8, rdoc1.8, ruby, ruby-interpreter
Description: Interpreter of object-oriented scripting language Ruby 1.8
 Ruby is the interpreted scripting language for quick and easy object-oriented programming.  It has many features to process text files and to do
 system management tasks (as in perl).  It is simple, straight-forward, and extensible. 

 This package provides version 1.8 series of Ruby. 

 On Debian, Ruby 1.8 is provided as separate packages.  You can get full Ruby 1.8 distribution by installing following packages. 

  ruby1.8 ruby1.8-dev ri1.8 ruby1.8-examples libtcltk-ruby1.8
Homepage: http://www.ruby-lang.org/

kurtosis@kurtosis-dm1-4050us:~/bin/projects/blogs/posterous/export$ 

路径:

$ echo $PATH
/home/kurtosis/bin/ruby/rbenv/shims:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/kurtosis/bin:/opt/apache/ant/default/bin:/opt/apache/maven/default/bin:/home/kurtosis/bin/ide/eclipse:/home/kurtosis/bin/ide/idea/default/bin:/opt/scala/bin/default/bin:/opt/typesafe-stack/bin:/home/kurtosis/bin/google/android/sdk/tools:/home/kurtosis/bin/google/android/sdk/platform-tools:/home/kurtosis/bin/google/android/ndk/default/:/opt/haskell/ghc/default/bin:/opt/haskell/platform/default/bin:/home/kurtosis/bin/ruby/rbenv/bin:/home/kurtosis/bin/node/node_modules/less/bin:/home/kurtosis/bin/google/go/bin:/home/kurtosis/bin/utilities/torrent/vuze:/home/kurtosis/bin/utilities/torrent/anomos:/home/kurtosis/bin/scripts:.

对于它的价值,我在虚拟机中使用全新安装的 Ubuntu 12.04 Server x64 进行测试。通过aptitude installruby-full` 安装了ruby,然后下载并安装了rbenv。同样的问题,由于某种原因它仍然看不到系统红宝石。新的 PATH 是:

/home/kurtosis/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/kurtosis/.rbenv/bin:.

【问题讨论】:

    标签: ruby ubuntu debian rbenv ubuntu-12.04


    【解决方案1】:

    当你做的时候你会得到什么

    rbenv global system
    ruby -v
    

    或

    rbenv local system
    ruby -v
    

    特殊版本名称系统告诉 rbenv 使用系统 Ruby(通过搜索 $PATH 检测到)。

    请参阅第 3.1 节

    https://github.com/sstephenson/rbenv
    

    【讨论】:

    • 当我尝试rbenv shell 时,我也得到了同样的结果。只有rbenv global 和rbenv local 似乎有效。
    • 也请尝试rbenv global system 或rbenv local system。
    • 好的,将其添加到我的问题文本中。 TLDR - 两者似乎都可以工作,运行命令时没有错误,rbenv local system 甚至正确地将 .rbenv_version 写入当前目录,其中包含“系统”。但是当我尝试运行ruby --version 或irb 时,提示只是挂起,我必须用CTRL-c 取消它。
    • $PATHs 可能有冲突。你能测试一下吗?
    • 当然,但不确定如何。系统 ruby​​ 应该在 /usr/bin 中,它在 $PATH 中。 PATH 中唯一与 ruby​​ 相关的行是/home/kurtosis/bin/ruby/rbenv/shims: ... /home/kurtosis/bin/ruby/rbenv/bin:。不确定这是否会导致冲突?在我的问题末尾添加了完整的echo $PATH。
    【解决方案2】:

    您应该尝试使用chruby。 chruby 在启动 shell 或切换到目录时不会自动切换到其他 Ruby。默认情况下,chruby 使用系统 Ruby。

    $ chruby jruby
    $ chruby
       ruby-1.9.3-p327
     * jruby-1.7.0
       rubinius-2.0.0-rc1
    $ which ruby
    /usr/local/jruby-1.7.0/bin/ruby
    $ chruby system
    $ which ruby
    /usr/bin/ruby
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      相关资源
      最近更新 更多