RVM的权限被拒绝错误

时间:2010-11-29 11:00:49

标签: ruby-on-rails rvm

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

我已按照RVM网站中的指南安装RVM并安装了红宝石:

syed@rails:~$ rvm list

rvm rubies

   ruby-1.8.7-p302 [ i386 ]
=> ruby-1.9.2-p0 [ i386 ]

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

这是我的宝石目录:

syed@rails:~$ rvm gemdir
/home/syed/.rvm/gems/ruby-1.9.2-p0

现在,我尝试安装rails并且抛出以下错误:

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

我甚至没有对错误做任何改动:

syed@rails:~$ chown -R syed /home/syed/.rvm/

目前,我的环境如下:

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/

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

7 个答案:

答案 0 :(得分:18)

我遇到了同样的问题,我通过以下方式解决了这个问题:

sudo mkdir ~/.gem/specs
sudo chmod 777 ~/.gem/specs

似乎RVM正在尝试创建此“specs”文件夹,但没有权限这样做。

答案 1 :(得分:4)

我真的不喜欢接受的答案,它不是适合生产的解决方案。当你chmod 777你给机器上的任何人访问完全访问这些文件夹。

为该项目创建单独的gemset要好得多,然后确保使用chown来拥有它。

rvm gemset create project
rvm use ruby-1.9.3-p394@project # May not be necessary

在您的gems文件夹中,对于上面的案例“home / syed / .rvm / gems /”,请确保您创建的新gemset由您拥有

cd home/syed/.rvm/gems/ && ls -la 

如果你不拥有它,那么将它chown给你的用户

sudo chown -R user:rvm gemset

答案 2 :(得分:3)

也许尝试检查必要文件/目录的“chown”权限,以了解有关错误消息的更多信息。

通常我会为不同的应用程序/项目创建gemset,这样我就不会在几周/几个月后在一个地方混合使用数百种不同的宝石。试试这个:

rvm use 1.9.2
rvm gemset create YOURGEMSETNAME
rvm gemset use YOURGEMSETNAME

或只是

rvm 1.9.2@YOURGEMSETNAME --create

之后尝试安装宝石。如果你想要为ruby 1.9.2的每个gemset显示宝石,那么切换到 global gemset并在那里安装你的宝石:

rvm 1.9.2@global
gem install rails3 # or whatever you wish

答案 3 :(得分:2)

我终于解决了这个问题。事实证明我的防火墙阻止了199.91.171.93。当我打开访问权限时,我不再收到Errno::EACCES条消息。我通过使用--verbose诊断出这一点,我可以看到源代码正在尝试更新$ HOME / .gem / specs / ruby​​gems.org%80 / quick / Marshal.4.8区域,但不能简单地因为流量被阻止。

答案 4 :(得分:2)

我刚遇到这个问题,想要为后代录制我的答案。特定于Ruby的RVM目录中的所有目录都归root所有。所以我不得不把所有这些都打成了。

~/.rvm/gems/ruby-1.9.3-p286

drwxr-xr-x  22 root           staff   748 Nov 12 13:34 bin
drwxr-xr-x   2 root           staff    68 Nov 20 14:42 cache
drwxr-xr-x   2 root           staff    68 Nov  1 09:59 doc
drwxr-xr-x  47 root           staff  1598 Nov 12 13:34 gems

我不知道这是否正常但是在将它们全部更改为我的非root用户之后问题就消失了。

答案 5 :(得分:1)

你的路径是什么样的?听起来你正在获得gem的系统版本而不是基于rvm的命令。

答案 6 :(得分:1)

对于那些来自Google的人:在Windows上我遇到了这个问题,因为我的Program Files目录中安装了旧版本的Ruby,而新版本的Windows有安全限制。运行ruby --version以确保其符合预期。