【问题标题】:How to install ruby system-wide using rbenv如何使用 rbenv 在系统范围内安装 ruby
【发布时间】:2018-03-29 11:02:03
【问题描述】:

您可能认为这是一个经典的“全局”命令问题,但事实并非如此。

我可以通过这个全局设置 ruby​​:

rbenv global 2.5.1

然而,这使得 ruby​​2.5.1 对所有用户来说都是全局的,而不是对整个系统。当同一服务器中的应用程序想要调用 ruby​​ 或访问/管道 ruby​​ 时,它们会收到 command not found 错误。

我相信我们应该安装或符号链接到 /usr/bin/usr/local/bin 或其他东西......

我找不到与此相关的任何信息。如何使选定的 ruby​​ 版本对其他应用程序可见?

我唯一的解决方案是自己构建 ruby​​ 到系统目录,但这会与 rbenv 冲突。

例子:

  • 当 postfix 想要通过管道将电子邮件发送到 ruby​​ 时,即使我设置为全局,它也找不到 ruby​​。
  • 当 webmin 尝试通过 ruby​​ 运行命令时,它也找不到 ruby​​。

解决方法

/root/.rbenv/shims 文件夹添加到执行脚本上的$PATH 可以按预期工作,但在某些情况下无法直接修改$PATH我的选择是什么?

【问题讨论】:

    标签: ruby ubuntu rbenv


    【解决方案1】:

    rbenv 根本不是为了支持这个而设计的,你可以在这个Github Issue 中看到围绕这个的讨论。如果您这样做,则需要考虑许多技术因素,例如权限。我发现另一篇博客文章概述了该过程 - System Wide Install With rbenv。将其复制到此答案中,以防博客文章消失。

    但是,从长远来看,您可能会发现创建或使用 Ruby 包(例如 BrightBox PPA 包)更容易。

    安装 rbenv

    对于单个安装,我们将使用 ~/.rbenv 的通常位置,而不是通常的位置 正在安装到/usr/local。你可以使用不同的路径,如果你 想要,但这是我更喜欢的。

    cd /usr/local
    git clone git://github.com/sstephenson/rbenv.git rbenv
    chgrp -R staff rbenv
    chmod -R g+rwxXs rbenv
    

    确保将使用 rbenv 的用户属于您所在的组 与 rbenv 文件夹关联。

    现在我们要将以下代码添加到每个用户~/.profile~/.bash_profile~/.zshenv 取决于环境。你 也可以添加到/etc/skel/.profile/etc/skel/.bash_profile 创建新用户时复制的模板文件。

    export RBENV_ROOT=/usr/local/rbenv
    export PATH="$RBENV_ROOT/bin:$PATH"
    eval "$(rbenv init -)"
    

    安装 ruby​​-build(可选)

    您可以选择安装 ruby​​-build 插件来拯救自己 从自己构建。

    cd /usr/local/rbenv
    mkdir plugins
    cd plugins
    git clone git://github.com/sstephenson/ruby-build.git
    chgrp -R staff ruby-build
    chmod -R g+rwxs ruby-build
    

    备注

    现在你应该有 rbenv 和可选的 ruby​​-build 设置,所以你可以 开始安装和使用 Ruby。此安装与 单用户安装有两个例外。全局设置适用于 所有用户和单用户 rbenv 安装都可以“覆盖”系统 广泛安装。

    如果您有权限问题,请确保 rbenv 中的所有文件 文件夹属于正确的组,并且用户尝试使用 rbenv 也是该组的成员。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多