【问题标题】:RVM throws gems directory permission error during bundle install / rake assets:precompileRVM 在 bundle install / rake assets:precompile 期间抛出 gems 目录权限错误
【发布时间】:2014-09-16 04:55:17
【问题描述】:

在 EC2 ubuntu t1.micro 实例上,使用 RVM 管理 ruby​​。当 cucumber 添加到 Gemfile 并运行 bundler 进行 install 时,它会安装一些依赖的 gem,例如 gherkin。

随后,当运行 rails assets:precompile 时,rvm 会抛出以下权限错误。来自这里的任何指示都会有所帮助

 $ rake assets:precompile RAILS_ENV=production --trace
/home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/fileutils.rb:245:in `mkdir': Permission denied - /home/ubuntu/.rvm/gems/ruby-2.0.0-p353/extensions/x86_64-linux/2.0.0/gherkin-2.12.2 (Errno::EACCES)
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/fileutils.rb:245:in `fu_mkdir'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/fileutils.rb:219:in `block (2 levels) in mkdir_p'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/fileutils.rb:217:in `reverse_each'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/fileutils.rb:217:in `block in mkdir_p'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/fileutils.rb:203:in `each'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/fileutils.rb:203:in `mkdir_p'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/ext/builder.rb:210:in `write_gem_make_out'
    from /home/ubuntu/.rvm/rubies/ruby-2.0.0-p353/lib/ruby/site_ruby/2.0.0/rubygems/ext/builder.rb:132:in `build_error'

通过删除 gem 并在本机安装它进行后续故障排除也会引发权限错误。

$ gem install gherkin
Fetching: gherkin-2.12.2.gem (100%)
ERROR:  While executing gem ... (Errno::EACCES)
Permission denied - /home/ubuntu/.rvm/gems/ruby-2.0.0-p353/gems/gherkin-2.12.2/.gitattributes

【问题讨论】:

    标签: ruby-on-rails ruby gem rvm bundler


    【解决方案1】:

    这是通过以 sudo 用户身份运行 blunder 解决的

    $rvmsudo bundle install
    

    仍然不确定为什么非超级用户会出现权限问题。

    【讨论】:

    • 您最初是否以 root 身份安装了 rvm(或使用 sudo)?检查/home/ubuntu/.rvm/gems/ruby-2.0.0-p353 的权限。我怀疑它归根用户所有,ubuntu 用户不可写。
    • RVM 是作为 ubuntu 用户安装的。我检查了权限,他们似乎没问题?? drwxrwxr-x 10 ubuntu ubuntu 4.0K Mar 13 2014 ruby-2.0.0-p353@global drwxrwxr-x 11 ubuntu ubuntu 4.0K Mar 13 2014 ruby-2.0.0-p353
    • 您还以ubuntu 的身份运行rake?子目录的权限是否相同?
    • 是的 rake 以 ubuntu 用户身份运行。我发现子目录有问题。其中一些归 root 所有 - 为什么会发生这种情况? ubuntu@ip-172-31-17-23:~/.rvm/gems/ruby-2.0.0-p353$ ls -althr -rw-rw-r-- 1 ubuntu ubuntu environment drwxr-xr-x 3 root root extensions drwxr-xr-x 3 root root bundler drwxrwxr-x 11 ubuntu ubuntu . drwxr-xr-x 5 root root doc drwxrwxr-x 2 ubuntu ubuntu wrappers drwxr-xr-x 2 root root build_info drwxrwxr-x 2 ubuntu ubuntu bin drwxrwxr-x 3 ubuntu ubuntu cache drwxr-xr-x 191 root root gems drwxrwxr-x 2 ubuntu ubuntu specifications
    • 嗯,核选项是rvm implode 并重新安装所有内容,但您可能会选择sudo chown -R ubuntu:ubuntu /home/ubuntu/.rvm
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    相关资源
    最近更新 更多