如何使用rbenv

时间:2018-03-29 11:02:03

标签: ruby ubuntu rbenv

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

我可以通过以下方式全局设置ruby:

rbenv global 2.5.1

然而,这使得ruby2.5.1对所有用户都是全局的,但不是整个系统。当同一服务器中的应用程序想要调用ruby或access / pipe ruby​​时,它们会出现command not found错误。

我认为我们必须安装或符号链接到/usr/bin/usr/local/bin或其他......

我找不到任何有关此事的内容。如何将选定的ruby版本用于其他应用程序?

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

示例:

  • 当postfix想要将电子邮件发送到ruby时,即使我设置了global也无法找到ruby。
  • 当webmin尝试通过ruby运行命令时,它也找不到ruby。

解决方法

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

1 个答案:

答案 0 :(得分:4)

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也是该组织的成员。