为什么“gem”和“sudo gem”有不同的安装目录?

Han*_*nXu 4 rubygems rvm

我记得我曾经gem install rails安装过 Rails,但是今天当我想安装另一个 gem 时,输入

gem install ruby-recaptcha
Run Code Online (Sandbox Code Playgroud)

它失败了,说:

您没有写入权限...

然后我发现我的gem environment结果sudo gem environment不同:

为了gem environment

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.0.1]
  - INSTALLATION DIRECTORY: /Users/hx/.rvm/gems/ruby-1.9.2-p290
  - RUBY EXECUTABLE: /Users/hx/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/hx/.rvm/gems/ruby-1.9.2-p290/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/hx/.rvm/gems/ruby-1.9.2-p290
     - /Users/hx/.rvm/gems/ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :gempath => ["/Users/hx/.rvm/gems/ruby-1.9.2-p290"]
     - :sources => ["http://rubygems.org/"]
  - REMOTE SOURCES:
     - http://rubygems.org/
Run Code Online (Sandbox Code Playgroud)

为了sudo gem environment

  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.0.1]
  - INSTALLATION DIRECTORY: /Users/hx/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /Users/hx/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/hx/.rvm/rubies/ruby-1.9.2-p290/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/hx/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/gems/1.9.1
     - /Users/hx/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :gempath => ["/Users/hx/.rvm/gems/ruby-1.9.2-p290"]
     - :sources => ["http://rubygems.org/"]
  - REMOTE SOURCES:
     - http://rubygems.org/
Run Code Online (Sandbox Code Playgroud)

注意到安装目录不同。所以当我使用时gem,我没有权限(我不知道为什么我突然失去了权限)。但是当我使用时sudo gem,gem没有安装到正确的位置。我怎样才能解决这个问题?

mpa*_*pis 5

RVM 使用环境变量来配置 ruby​​gems - 该gem命令,基本上如果您有用户安装 ( ~/.rvm),则不需要使用 来调用任何命令sudo,特别是gem- 如果有效,则会root在您的主目录中以用户身份安装 Rail,从而不可能你来管理你的文件......如果你有任何充分的理由使用sudo-rvmsudo改为使用 - 但实际上你不应该有这种需要,特别是安装 gems。

如果您想在系统中使用一些命令(例如gist),您可以使用rvm wrapper并链接生成的二进制文件/usr/bin

修复您家中的权限:

sudo chown $USER: ~/.rvm
sudo chmod u+rw ~/.rvm
Run Code Online (Sandbox Code Playgroud)