【问题标题】:bundler permission error on Ubuntu (ruby using apt, NOT rvm)Ubuntu 上的 bundler 权限错误(ruby 使用 apt,而不是 rvm)
【发布时间】:2018-01-02 22:29:40
【问题描述】:

我们曾经在基于 Ubuntu 12 的服务器上进行 redmine 设置,但我们的主机升级了服务器,现在我们必须将所有内容移到新机器上。它现在在 Ubuntu 14LTS 下运行。我已经安装了带有apt的LAMP包以及redmine包和(我假设)所需的所有依赖项(包括Passenger)。 我对 Apache2 conf 文件进行了修改,现在我可以访问 redmine 站点...只是得到显示以下内容的错误页面:

Bundler::PermissionError (Bundler::PermissionError)
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/shared_helpers.rb:110:in `rescue in filesystem_access'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/shared_helpers.rb:108:in `filesystem_access'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/definition.rb:306:in `lock'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/runtime.rb:122:in `lock'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/runtime.rb:49:in `setup'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler.rb:101:in `setup'
/var/lib/gems/1.9.1/gems/bundler-1.15.3/lib/bundler/setup.rb:19:in `<top (required)>'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:245:in `block in run_load_path_setup_code'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:348:in `running_bundler'
/usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:243:in `run_load_path_setup_code'
/usr/share/passenger/helper-scripts/rack-preloader.rb:100:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:158:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `<main>'

Application root
 /usr/share/redmine
Environment (value of RAILS_ENV, RACK_ENV, WSGI_ENV and PASSENGER_ENV)
production
Ruby interpreter command
/usr/bin/ruby
User and groups
uid=33(www-data) gid=33(www-data) groups=33(www-data)

我可以从谷歌搜索获得的所有信息都与使用 RVM 或 RBENV 手动安装 Ruby 相关,但我通过 apt 进行了设置(是的,使用 sudo apt-get... 我现在知道这不好对于捆绑器)。 我知道已安装以下内容:

  • redmine 2.4.2-1(来自 apt)
  • ruby 1.9.3 (ruby -v) 但是它看起来像 gems 使用/从 1.9.1 运行
  • rails 3.2.16 (rails -v)
  • 乘客 4.0.37-2

我尝试更改chown www-data /var/lib/gems/1.9.1/gems/bundler-1.15.3,但没有成功。

有没有办法纠正这个问题,或者我应该丢弃所有设置并在没有 apt 的情况下手动重新启动?

【问题讨论】:

    标签: ruby ubuntu bundler redmine apt


    【解决方案1】:

    从上面的堆栈跟踪来看,这看起来像是捆绑器中负责在应用程序根目录中创建 Gemfile.lock 的部分。

    https://github.com/bundler/bundler/blob/1-15-stable/lib/bundler/definition.rb#L307

    您的乘客进程的 uid 和 gid 似乎是 www-data - 此用户是否具有对 /usr/share/redmine 的写入权限?如果不是,这可能是这里的问题 - 您的乘客进程正在尝试生成 Gemfile.lock 但没有这样做的权限。

    This is a tutorial on linux users and groups - 它应该让您大致了解为什么会出现上述问题。

    解决方法是将www-data 添加到拥有/usr/share/redmine 的组中,然后递归地授予该组组级别的写访问权限。

    【讨论】:

    • 非常感谢:我将 usr/share/redmine 的组所有权从 root 更改为 www-data(用户 root 仍然是所有者)并向组添加了写权限,现在我有了 redmine 主屏幕!继续将以前的数据库从旧 redimne 恢复到新 redmine....
    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多