我有一个安装rbenv
的角色。似乎工作正常。但是,环境仅为交互式会话加载,因此我的其余部分无法访问已安装的rbenv。这是Ubuntu 12.04。 rbenv
角色通过/etc/profile.d
条目加载环境,基于我的阅读,也应加载非交互式shell。
> ssh mymachine 'echo $PATH'
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
请注意,前两个条目引用rbenv
:
> ssh mymachine
mymachine$: echo $PATH
/usr/local/rbenv/shims:/usr/local/rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
作为一种解决方法,我将可执行路径传递给gem
模块,但这看起来不是最佳解决方案,因为其他模块可能依赖于由交互式shell加载和设置的ruby版本(rbenv) ):
gem: name=bundler state=present executable={{ gem_installed_path }}
基本上,我的剧本中rbenv
角色依赖正确的ruby版本(如gem
角色)后的任何内容都会失败。解决这个问题的最佳方法是什么?