【问题标题】:Permission denied error with RVMRVM 的权限被拒绝错误
【发布时间】:2010-11-29 11:00:49
【问题描述】:

我已经搜索过这个问题,但找不到相关的类似问题。如果这是重复的,请多多包涵。

我已按照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 目录路径?

【问题讨论】:

  • 还发现现在发生了一件奇怪的事情。当我打开一个新的 shell 时,ruby 版本应该是系统范围内安装的版本(即 ruby​​-1.8.7),不是吗?但是,它给了我 1.9.2,我必须做 rvm system 才能回到那个状态。
  • 很奇怪。试试chmod -R u+w /home/syed/.rvm

标签: ruby-on-rails rvm


【解决方案1】:

我遇到了同样的问题,我通过执行以下操作解决了它:

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

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

【讨论】:

  • 是否应该提交修改请求来处理?对于初学者来说非常困惑,并且在当前教程中没有提到这个问题。
  • 为此目的使用 chmod 777 是一个非常糟糕的主意。请改用chown
  • 这可能是你之前安装了rubygems,我试过删除$HOME/.gem目录,也可以。
【解决方案2】:

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

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

sudo chown -R user:rvm gemset

【讨论】:

    【解决方案3】:

    也许还可以尝试检查必要文件/目录的“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,请切换到 global gemset 并在那里安装您的 gem:

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

    【讨论】:

    • 我之前试过这个: $ rvm use --create 1.9.2@rails3 但是,它抛出了同样的错误。它使用 /home/syed/.gem/specs 作为 gem 目录,而不是 /home/syed/.rvm/gems/ruby-1.9.2-p0@rails3。我不知道为什么。
    • 这很奇怪,它应该可以在没有任何权限问题的情况下工作。再次彻底检查您的权限..
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

        • 我的路径:/home/syed/.rvm/gems/ruby-1.9.2-p0/bin:/home/syed/.rvm/gems/ruby-1.9.2-p0@global /bin:/home/syed/.rvm/rubies/ruby-1.9.2-p0/bin:/home/syed/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/ sbin:/usr/bin:/sbin:/bin:/usr/games
        【解决方案7】:

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

        【讨论】:

          猜你喜欢
          • 2015-09-16
          • 2011-08-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-19
          • 1970-01-01
          • 2016-09-25
          相关资源
          最近更新 更多