2015-10-16 74 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爲使用該系統的任何用戶 - 是好還是壞。