我搜索过这个问题但找不到相关的类似问题。如果重复,请耐心等待。
我已按照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目录路径?
答案 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 / rubygems.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
以确保其符合预期。