RVM的权限被拒绝错误

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

我已经按照RVM网站上的指南来安装RVM,我已经安装了rubies:

syed@rails:~$ rvm list rvm rubies ruby-1.8.7-p302 [ i386 ] => ruby-1.9.2-p0 [ i386 ] 

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

这是我的gem目录:

 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目录路径?

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

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

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

我真的不喜欢接受的答案,它不是一个适合生产的解决方案。 当你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 

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

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

 rvm use 1.9.2 rvm gemset create YOURGEMSETNAME rvm gemset use YOURGEMSETNAME 

或简单地说

 rvm 1.9.2@YOURGEMSETNAME --create 

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

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

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

我刚遇到这个问题,想要为后代记录我的答案。 特定于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用户之后问题就消失了。

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

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