2015-10-16 77 views
0

我想用rbenv来管理ruby版本,但是我在切换用户时遇到了问题。我还担心我的www数据用户不会选择rbenv的ruby版本,但我没有任何证据表明它正在做这些,而不是我无法切换用户。rbenv将不会拥有全球版本

Ruby 2.2.3被设置为rbenv文档中解释的全局ruby版本,这适用于用户部署。在我的〜/ .bashrc(用户部署),我有以下代码:

export PATH="$HOME/.rbenv/bin:$PATH" 
eval "$(rbenv init -)" 

当我登录的部署,一切工作正常。然而,当我追根溯源时,我的红宝石版本被破坏了。这里是什么样子,当我在命令行上工作,如:

> [email protected]:/var/www/my_app/current$ ruby -v ruby 2.2.3p173 
> (2015-08-18 revision 51636) [x86_64-linux] 
> [email protected]:/var/www/my_app/current$ su root Password: 
> [email protected]:/var/www/my_app/current# ruby -v ruby 1.9.3p484 
> (2013-11-22 revision 43786) [x86_64-linux] 
> [email protected]:/var/www/my_app/current# su deploy 
> [email protected]:/var/www/my_app/current$ ruby -v ruby 2.2.3p173 
> (2015-08-18 revision 51636) [x86_64-linux] 

我原来装rbenv为根,但是这打破了,因为没有其他用户帐户可能因为权限问题的访问rbenv!学习完这些之后,我将它安装为部署,并且在该帐户下正常工作,但不适用于任何其他帐户。任何其他用户甚至不能访问rbenv ...

我做错了什么?谢谢你的帮助!

回答

0

你遇到了这个问题,因为rbenv是为每个用户而设计的,而不是一个“全局”程序。你见过这些症状:

  • 安装用于www-dataroot奇怪的问题
  • 安装为rootwww-data准入问题

我的最佳选择是单独安装rbenv为rootwww-dev。我会走这条路线,因为它限制了有权访问rbenv/ruby​​的账户数量,遵循限制系统上可执行文件/责任的最佳做法。

作为替代方案,您可以安装rbenv,以便所有用户都可以访问它。对于您可以使用/etc/profile.d

# From: https://gist.github.com/jnx/1256593#file-rbenv-install-system-wide-sh 
# Install rbenv 
git clone git://github.com/sstephenson/rbenv.git /usr/local/rbenv 

# Add rbenv to the path: 
echo '# rbenv setup' > /etc/profile.d/rbenv.sh 
echo 'export RBENV_ROOT=/usr/local/rbenv' >> /etc/profile.d/rbenv.sh 
echo 'export PATH="$RBENV_ROOT/bin:$PATH"' >> /etc/profile.d/rbenv.sh 
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh 

chmod +x /etc/profile.d/rbenv.sh 
source /etc/profile.d/rbenv.sh 

这应该设置rbenv为使用该系统的任何用户 - 是好还是坏。