多用户RVM - 使用sudo执行Ruby脚本时,gem路径不同

时间:2015-08-28 15:50:12

标签: ruby gem rvm

我已在多用户配置中安装了RVM。一切似乎都有效,但是当我必须使用sudo来执行Ruby脚本时,gem安装文件夹和路径是不同的。这最终导致宝石无法用于脚本。

如果我执行gem env,我会得到以下内容:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.8
  - RUBY VERSION: 2.2.2 (2015-04-13 patchlevel 95) [x86_64-darwin14]
  - INSTALLATION DIRECTORY: /usr/local/rvm/gems/ruby-2.2.2
  - RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.2.2/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ruby-2.2.2/bin
  - SPEC CACHE DIRECTORY: /Users/patrickaikens/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-14
  - GEM PATHS:
     - /usr/local/rvm/gems/ruby-2.2.2
     - /usr/local/rvm/gems/ruby-2.2.2@global
...

如果我执行sudo gem env,我会改为:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.8
  - RUBY VERSION: 2.2.2 (2015-04-13 patchlevel 95) [x86_64-darwin14]
  - INSTALLATION DIRECTORY: /usr/local/rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0
  - RUBY EXECUTABLE: /usr/local/rvm/rubies/ruby-2.2.2/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/rvm/rubies/ruby-2.2.2/bin
  - SPEC CACHE DIRECTORY: /Users/patrickaikens/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-14
  - GEM PATHS:
     - /usr/local/rvm/rubies/ruby-2.2.2/lib/ruby/gems/2.2.0
     - /Users/patrickaikens/.gem/ruby/2.2.0
...

请注意,INSTALLATION_DIRECTORYGEM PATHS不同,但两个输出都表明RVM处于“活动状态”。我自己的主目录或root的主目录中没有.rvm文件夹。为什么RVM以不同的方式处理这些路径,我可以这样做吗?使用rvmsudo似乎确实有用,但我真的不想记住我的哪些管理脚本会在某些时候运行Ruby,如果我不需要的话。

1 个答案:

答案 0 :(得分:0)

在正常运行和以“sudo”运行时看到不同信息出现的原因是因为使用sudo调用系统ruby,绕过RVM,而不是在RVM中选择的版本。 我自己也有这个问题。

RVM troubleshooting page建议使用rvmsudo代替,但后来也暗示你不需要。