【问题标题】:Errno::EPERM: Operation not permitted @ dir_s_rmdirErrno::EPERM: 不允许操作 @ dir_s_rmdir
【发布时间】:2016-05-14 22:36:56
【问题描述】:

运行捆绑安装时出现此错误:

Errno::EPERM: Operation not permitted @ dir_s_rmdir - /home/rbtlong/.bundle/cache/compact_index/rubygems.org.443.29b0360b937aa4d161703e6160654e47/versions
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb:50:in `unlink'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb:50:in `delete'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/vendor/compact_index_client/lib/compact_index_client/updater.rb:50:in `update'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb:64:in `update'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/vendor/compact_index_client/lib/compact_index_client.rb:55:in `update_and_parse_checksums!'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/fetcher/compact_index.rb:65:in `available?'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/fetcher/compact_index.rb:15:in `call'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/fetcher/compact_index.rb:15:in `block in compact_index_request'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/fetcher.rb:154:in `use_api'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/source/rubygems.rb:331:in `block in api_fetchers'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/source/rubygems.rb:331:in `select'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/source/rubygems.rb:331:in `api_fetchers'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/source/rubygems.rb:336:in `block in remote_specs'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/index.rb:10:in `build'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/source/rubygems.rb:335:in `remote_specs'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/source/rubygems.rb:82:in `specs'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/lazy_specification.rb:56:in `__materialize__'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/spec_set.rb:91:in `block in materialize'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/spec_set.rb:88:in `map!'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/spec_set.rb:88:in `materialize'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/definition.rb:140:in `specs'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/definition.rb:129:in `resolve_remotely!'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/installer.rb:195:in `resolve_if_need'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/installer.rb:70:in `run'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/installer.rb:22:in `install'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/cli/install.rb:102:in `run'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/cli.rb:175:in `install'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/cli.rb:11:in `start'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/exe/bundle:27:in `block in <top (required)>'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/lib/bundler/friendly_errors.rb:98:in `with_friendly_errors'
/home/rbtlong/.rvm/gems/ruby-2.2.3/gems/bundler-1.12.3/exe/bundle:19:in `<top (required)>'
/home/rbtlong/.rvm/gems/ruby-2.2.3/bin/bundle:23:in `load'
/home/rbtlong/.rvm/gems/ruby-2.2.3/bin/bundle:23:in `<main>'
/home/rbtlong/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in `eval'
/home/rbtlong/.rvm/gems/ruby-2.2.3/bin/ruby_executable_hooks:15:in `<main>'

环境:

Bundler 1.12.3
Rubygems 2.4.8
Ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux]
GEM_HOME /home/rbtlong/.rvm/gems/ruby-2.2.3
GEM_PATH /home/rbtlong/.rvm/gems/ruby-2.2.3:/home/rbtlong/.rvm/gems/ruby-2.2.3@global
RVM 1.27.0 (latest)
Git 2.5.0
rubygems-bundler (1.4.4)

捆绑器设置:

orig_path
Set via BUNDLE_ORIG_PATH: "/home/rbtlong/.rvm/gems/ruby-2.2.3/bin:/home/rbtlong/.rvm/gems/ruby-2.2.3@global/bin:/home/rbtlong/.rvm/rubies/ruby-2.2.3/bin:/home/rbtlong/.rvm/bin:/home/rbtlong/.dnx/runtimes/dnx-mono.1.0.0-rc1-update1/bin:/home/rbtlong/.dnx/bin:/usr/local/heroku/bin:/home/rbtlong/.rbenv/plugins/ruby-build/bin:/home/rbtlong/.rbenv/shims:/home/rbtlong/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
orig_gem_path
Set via BUNDLE_ORIG_GEM_PATH: "/home/rbtlong/.rvm/gems/ruby-2.2.3:/home/rbtlong/.rvm/gems/ruby-2.2.3@global"

【问题讨论】:

    标签: ruby-on-rails ruby rvm bundler


    【解决方案1】:

    在我做之后它起作用了......

    sudo chmod 1777 -R /home/rbtlong/.bundle/cache/compact_index
    

    sudo chmod 1777 -R /tmp
    

    【讨论】:

      【解决方案2】:

      对我来说,它只适用于 777 模式。所以我做到了

      sudo chmod 777 -R /home/&lt;username&gt;/.bundle/cache/compact_index

      sudo chmod 777 -R /tmp

      解释为什么会这样:它与 Unix 权限有关。您不能以超级用户 (root) 身份运行 bundle,但 bundle 正在尝试写入用户必须是超级用户才能写入的文件夹。 chmod 777 -R 是一个命令,基本上说任何人(不仅是超级用户)都可以读取或写入该文件夹,对于文件,您可以在没有 -R 参数的情况下执行相同操作(这意味着递归)。

      【讨论】:

        【解决方案3】:

        我必须先跑:

        sudo rm -rf /home/<username>/.bundle/cache/compact_index/*
        

        然后

        sudo chmod 1777 -R /home/rbtlong/.bundle/cache/compact_index
        sudo chmod 1777 -R /tmp
        

        【讨论】:

          【解决方案4】:

          我不知道您是否通过上述答案之一解决了您的问题,但我遇到了同样的问题,并从this question 发现Dir.foreach 返回'.''..' 作为可枚举的,你不能也不应该删除当前目录和父目录

          【讨论】:

            【解决方案5】:

            我解决了我的问题,关闭了我以管理员身份打开的 Docker 终端并在普通用户终端中运行服务器。不需要运行任何命令。

            我在 docker 启用的 Linux 环境中运行它,所以这个解决方案可能对使用 linux 或 docker 的人有所帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-09-10
              • 2021-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-12-29
              • 2019-10-20
              • 1970-01-01
              • 2019-08-22
              相关资源
              最近更新 更多