我记得我曾经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没有安装到正确的位置。我怎样才能解决这个问题?
RVM 使用环境变量来配置 rubygems - 该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)