我的RVM是以root身份安装的。当我试图启动独角兽插座时,它会打印
user@9001-3:~$ /etc/init.d/unicorn start
Starting myapp app: /usr/bin/env: ruby: No such file or directory
unicorn.
但是如果我输入
user@9001-3:~$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
/usr/local/rvm/gems/ruby-1.9.2-p180/bin/unicorn
路径存在。
我的独角兽配置:https://gist.github.com/1010519
/etc/init.d/unicorn
不知道在哪里可以找到Ruby,因为它是通过RVM管理的。通常,执行.bashrc
或类似文件并设置环境;这在init脚本(或者root执行的任何其他脚本)中都不会发生。
解决方案是使用包装器。例如,要创建一个名为system_ruby
的二进制文件,加载RVM的1.9.2p180环境,然后执行ruby
,请执行以下操作:
rvm wrapper ruby-1.9.2-p180 system ruby
要了解更多信息和细节,请查看我的这个答案,它解决了一个类似的问题。
Symlink也适用,
which ruby<your version>
ln-s /ruby/path/ruby<your version> /ruby/path/ruby
类型:which ruby
(显示ruby bin路径),然后键入:ln -s (change_to_ruby_path) /usr/bin/env/ruby
(为系统构建正确的访问权限)
我遇到了同样的问题,这对我来说是
rvm --default use <version>