【问题标题】:Is a system-wide install of RVM a bad idea? [closed]在系统范围内安装 RVM 是个坏主意吗? [关闭]
【发布时间】:2011-07-30 08:57:47
【问题描述】:

我很困惑,在服务器上,您应该以普通用户身份安装 RVM 还是进行系统范围的安装,如果是后者,您应该如何执行@987654321 之类的操作@ 不使用sudo

就 RVM 而言,在运行 Rails 的服务器上是否有任何明确的指导方针,例如:乘客和 Nginx?在这种类型的环境中,并非所有 Ruby 进程都在同一个用户下运行,所以我认为就 RVM 和 bundler 而言,事情变得不清楚。

在服务器上完全避免使用 RVM 并在那里以老式方式安装 Ruby 和 gems 怎么样?如果你能侥幸逃脱,那是不是更可取?

【问题讨论】:

  • 专家意见很有价值

标签: ruby ruby-on-rails-3 passenger rvm


【解决方案1】:

您可以作为普通用户安装 RVM,尽管我不明白这一点。 Bundler 是针对每个应用程序的,不需要 sudo 权限,因为它可以将您的 gem 安装到 bundle 安装用户可以访问的 bundle 目录中,例如:

bundle install --deployment

默认情况下会将它们放入vendor/bundle

我认为 RVM 是一种用于管理多个 ruby​​ 版本的开发工具。在部署机器上,我倾向于使用系统 Ruby 或从源代码安装。

【讨论】:

  • “在部署机器上,我倾向于使用系统 Ruby 或从源代码安装。”。同意。我也这样做。
  • 所以如果可以避免的话,最好不要在服务器上使用 RVM。
【解决方案2】:

RVM 可以作为超级用户安装。虽然不需要这样做,但这样做有很多好处(尤其是在多用户系统上)。 Ruby(和相关的 Ruby Gems)附带的任何命令都应该正确设置它们的权限才能正确运行。 Bundle 不需要使用超级用户访问权限。它可以在特定用户下运行,就像 gem install 可以在用户本地或系统范围内使用完整的 sudo 完成一样。

RVM 仅管理您特定的 Ruby 安装,因此您可以在多个级别的 Ruby 上进行开发 - 从 RMI 1.8 和 1.9 到 JRuby 1.6 等等。您可能正在从事不同的项目,因此每个项目需要不同的需求。

就服务器本身而言(假设它是一个面向外部的服务器,上面有某种内容),这实际上取决于系统管理员。用例发生了一些变化。如果您只需要服务器上的 Ruby 1.9,那么真的不需要 RVM。因为不需要管理多个版本的 Ruby。因此,当您决定是否在服务器本身上使用系统范围时,我会考虑到这一点。

希望有帮助!

【讨论】:

  • 在大多数情况下,实际上不建议以 root 身份安装。我从不为开发机器进行 root 安装。对于单用户系统来说,拥有一个独立的~/.rvm 会更好。
  • 这更像是一种偏好而不是一种要求。出于其他原因让所有用户都可以使用它是非常有用的。例如,如果我想与另一个用户更接近地模仿我的生产环境,我不必经历在另一个用户下重新安装 RVM 的痛苦。取决于你习惯于如何工作。
  • "RVM 是作为超级用户安装的。"错误的。它最初的目标是一个用于开发的用户沙箱。它已经开发了在系统范围内使用的能力,但它的主要优势仍然是作为用户的沙箱。随着 1.5+,它发生了更多变化;根据韦恩几周前的评论,文档正在过渡。
  • @Tin Man- 公平论点。我会给你那个。我已经相应地改变了我的答案。
  • "如果您是为了开发或大多数目的而安装,推荐的安装方法是安装到完全独立的用户主目录中。"来自 RVM 安装指南。
【解决方案3】:

我强烈建议为生产环境进行系统范围的安装。运行特定于用户的 RVM 似乎很麻烦。我在生产中使用Passenger/Nginx,每个项目都有自己的用户。我所要做的就是将它们添加到 rvm 组中,然后就可以开始了。

【讨论】:

  • 有指南吗?我尝试使用系统范围的安装进行生产,并为每个项目使用单独的 rubies 和 gemset。但是,配置 Nginx/Passenger 以使用正确的 ruby​​/gemset 是一件很痛苦的事情。我还发现设置默认 ruby​​/gemset rvm use ree@gemset --default 之类的命令会影响整个系统,无论我登录的用户是什么。另一个问题:您是否也为每个项目使用 .rvmrc 文件?
  • 我总是按照rvm.beginrescueend.com/integration/passenger创建一个setup_load_paths.rb
  • 感谢您的回复,jcm。该方法是否需要将MY_RUBY_HOME 设置为每个项目/用户的环境变量?
猜你喜欢
  • 1970-01-01
  • 2011-07-22
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多