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

时间:2012-01-30 14:36:14

标签: gem rvm

我记得我使用gem install rails来安装Rails,但今天当我想安装另一个gem时,输入

gem install ruby-recaptcha

它失败了,说:

  

您没有写入权限...

然后我发现我的gem environmentsudo 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/

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/

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

1 个答案:

答案 0 :(得分:4)

RVM使用环境变量来配置rubygems - gem命令,基本上如果你有用户安装(~/.rvm),你不需要使用sudo调用任何命令,尤其是gem - 如果有效,则会在您的主目录中以root用户身份安装rails,这使您无法管理文件......如果您有充分理由使用sudo - 使用rvmsudo代替 - 但实际上你不应该有这种需要,尤其是安装宝石。

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

修复您家中的权限:

sudo chown $USER: ~/.rvm
sudo chmod u+rw ~/.rvm