RVM的权限被拒绝错误

Sye*_*lam 12 ruby-on-rails rvm

我搜索过这个问题,找不到相关的类似问题.如果重复,请耐心等待.

我已经按照RVM网站中的指南安装RVM并且我已经安装了rubies:

syed@rails:~$ rvm list

rvm rubies

   ruby-1.8.7-p302 [ i386 ]
=> ruby-1.9.2-p0 [ i386 ]
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我将ruby-1.9.2设为默认值.

这是我的gem目录:

syed@rails:~$ rvm gemdir
/home/syed/.rvm/gems/ruby-1.9.2-p0
Run Code Online (Sandbox Code Playgroud)

现在,我试图安装rails,我抛出以下错误:

syed@rails:~$ gem install rails
ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied - /home/syed/.gem/specs
Run Code Online (Sandbox Code Playgroud)

我甚至做了这个,没有对错误产生任何影响:

syed@rails:~$ chown -R syed /home/syed/.rvm/
Run Code Online (Sandbox Code Playgroud)

目前,我的环境看起来像这样:

syed@rails:~$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [i686-linux]
  - INSTALLATION DIRECTORY: /home/syed/.rvm/gems/ruby-1.9.2-p0@rails3
  - RUBY EXECUTABLE: /home/syed/.rvm/rubies/ruby-1.9.2-p0/bin/ruby
  - EXECUTABLE DIRECTORY: /home/syed/.rvm/gems/ruby-1.9.2-p0@rails3/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/syed/.rvm/gems/ruby-1.9.2-p0@rails3
     - /home/syed/.rvm/gems/ruby-1.9.2-p0@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/
Run Code Online (Sandbox Code Playgroud)

我不明白为什么它试图将gems安装到我的系统gem目录路径?

小智 18

我有同样的问题,我通过执行以下操作解决了这个问题:

sudo mkdir ~/.gem/specs
sudo chmod 777 ~/.gem/specs
Run Code Online (Sandbox Code Playgroud)

似乎RVM试图创建这个"specs"文件夹,但没有权限这样做.

  • 为此目的使用chmod 777是一个非常糟糕的主意.请改用`chown`. (2认同)

upi*_*own 5

我真的不喜欢接受的答案,它是一个黑客而不是适合生产的解决方案。当您 chmod 777 时,您将授予机器上的任何人对这些文件夹的完全访问权限。

最好为该项目创建一个单独的 gemset,然后确保您使用 chown 拥有它。

rvm gemset create project
rvm use ruby-1.9.3-p394@project # May not be necessary
Run Code Online (Sandbox Code Playgroud)

在您的 gems 文件夹中,对于上述“home/syed/.rvm/gems/”的情况,请确保您创建的新 gemset 归您所有

cd home/syed/.rvm/gems/ && ls -la 
Run Code Online (Sandbox Code Playgroud)

如果您不拥有它,则将其分享给您的用户

sudo chown -R user:rvm gemset
Run Code Online (Sandbox Code Playgroud)