我正在尝试使用rbenv来管理ruby版本,但是在切换用户时我遇到了保留该版本的问题。我还担心我的www-data用户没有选择rbenv的ruby版本,但除了我无法切换用户之外,我没有任何证据表明它正在做这件事。
Ruby 2.2.3被设置为全局ruby版本,如rbenv文档中所述,这适用于用户部署。在我的〜/ .bashrc(用于用户部署)中,我有以下代码:
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
当我以部署方式登录时,一切正常。但是,当我su到root时,我的ruby版本被破坏了。这是我在命令行上工作时的样子:
> deploy@localhost:/var/www/my_app/current$ ruby -v ruby 2.2.3p173
> (2015-08-18 revision 51636) [x86_64-linux]
> deploy@localhost:/var/www/my_app/current$ su root Password:
> root@localhost:/var/www/my_app/current# ruby -v ruby 1.9.3p484
> (2013-11-22 revision 43786) [x86_64-linux]
> root@localhost:/var/www/my_app/current# su deploy
> deploy@localhost:/var/www/my_app/current$ ruby -v ruby 2.2.3p173
> (2015-08-18 revision 51636) [x86_64-linux]
我最初以root用户身份安装了rbenv,但由于权限问题没有其他用户帐户可以访问rbenv,因此打破了!在学习之后,我将其安装为部署,并且在该帐户下工作正常,但不适用于任何其他帐户。任何其他用户甚至无法访问rbenv ...
我做错了吗?!谢谢你的帮助!
答案 0 :(得分:0)
您遇到此问题,因为rbenv旨在基于每个用户工作,而不是作为“全局”程序。你已经看到了这些症状:
www-data
会产生root
个奇怪的问题root
会导致www-data
访问问题我首选的选项是为root
和www-dev
单独安装rbenv。我遵循这条路线,因为它限制了有权访问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 - 无论好坏。