2010-11-29 62 views
11

我已经搜索了这个问题,并找不到相关的类似问题。如果这是重复的,请耐心等待。权限拒绝与RVM的错误

我在RVM网站跟着导游安装RVM和我已经安装了红宝石:

[email protected]:~$ rvm list 

rvm rubies 

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

正如你可以看到我做的红宝石1.9.2我的默认。

这是我的宝石目录:

[email protected]:~$ rvm gemdir 
/home/syed/.rvm/gems/ruby-1.9.2-p0 

现在,我试图安装导轨,我抛出了以下错误:

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

我甚至做这个而不做任何差异错误:

[email protected]:~$ chown -R syed /home/syed/.rvm/ 

目前,我的环境如下所示:

[email protected]:~$ 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/[email protected] 
    - RUBY EXECUTABLE: /home/syed/.rvm/rubies/ruby-1.9.2-p0/bin/ruby 
    - EXECUTABLE DIRECTORY: /home/syed/.rvm/gems/[email protected]/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86-linux 
    - GEM PATHS: 
    - /home/syed/.rvm/gems/[email protected] 
    - /home/syed/.rvm/gems/[email protected] 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 

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

+0

也发现了一个奇怪的事情现在发生。当我打开一个新的shell时,ruby版本应该是全系统安装的版本(即,ruby-1.8.7)不是吗?但是,它给了我1.9.2,我必须做rvm系统来回到那个。 – 2010-11-29 11:17:53

+0

很奇怪。试试`chmod -R u + w/home/syed/.rvm` – aceofspades 2010-11-29 18:19:18

回答

18

我有这个同样的问题,我做了以下解决它:

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

看来,RVM试图创建这个“规范”的文件夹,但没有权限这么做。

3

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

通常我为不同的应用程序/项目创建gemset,所以在几个星期/几个月之后,我不会在一个地方混合上百种不同的宝石。试试这个:

rvm use 1.9.2 
rvm gemset create YOURGEMSETNAME 
rvm gemset use YOURGEMSETNAME 

或者干脆

rvm [email protected] --create 

尝试后,要安装你的宝石。如果您希望出现的宝石,每宝石红宝石1.9.2,比切换到全球宝石和安装有你的宝石:

rvm [email protected] 
gem install rails3 # or whatever you wish 
+0

我早些时候试过这个:$ rvm use --create [email protected] 但是,它抛出了相同的错误。它将/home/syed/.gem/specs作为gem目录而不是/home/syed/.rvm/gems/[email protected]。我不知道为什么。 – 2010-11-29 11:24:35

+0

这很奇怪,它应该没有任何权限问题的工作。再次彻底检查您的权限.. – fifigyuri 2010-11-29 12:18:52

1

什么是你的路径是什么样子?这听起来像你正在得到一个系统版本的宝石,而不是基于rvm的命令。

2

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

1

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

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用户后,问题消失。

4

我真的不喜欢接受的答案,它的黑客不是适合生产的解决方案。当你使用chmod 777时,你可以让机器上的任何人访问这些文件夹。

为这个项目创建一个单独的gemset然后确保你用chown拥有它更好。

rvm gemset create project 
rvm use [email protected] # May not be necessary 

而在你的宝石文件夹,对上面的情况“家用/赛义德/ .rvm /宝石/”,请确保您创建的新宝石拥有者是您

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

如果你不” t拥有它,然后把它给你的用户

sudo chown -R user:rvm gemset