![Puppet 和 Vim 争夺 Ruby 版本](https://linux22.com/image/797589/Puppet%20%E5%92%8C%20Vim%20%E4%BA%89%E5%A4%BA%20Ruby%20%E7%89%88%E6%9C%AC.png)
我已经从 puppetlabs 的 .dmg 安装了 puppet 3.0.1。如果我删除 ruby 1.9.3,puppet 可以工作,但其他东西(如我的 vim 安装(依赖插件))则不行。
根据http://docs.puppetlabs.com/guides/platforms.html#ruby-versions支持 1.9.3。那么 puppet 出了什么问题?
% uname -a
Darwin Kusanagi.local 11.4.2 Darwin Kernel Version 11.4.2: Thu Aug 23 16:25:48 PDT 2012; root:xnu-1699.32.7~1/RELEASE_X86_64 x86_64
% which ruby
/usr/local/bin/ruby
% ruby --version
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin11.4.2]
% /usr/bin/ruby --version
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin11.0]
% brew info ruby 1 ↵
ruby: stable 1.9.3-p327, HEAD
http://www.ruby-lang.org/en/
Depends on: pkg-config, readline, gdbm, libyaml
/usr/local/Cellar/ruby/1.9.3-p327 (796 files, 17M) *
https://github.com/mxcl/homebrew/commits/master/Library/Formula/ruby.rb
==> Options
--with-tcltk
Install with Tcl/Tk support
--with-suffix
Suffix commands with "19"
--universal
Build a universal binary
--with-doc
Install documentation
==> Caveats
NOTE: By default, gem installed binaries will be placed into:
/usr/local/Cellar/ruby/1.9.3-p327/bin
You may want to add this to your PATH.
% puppet
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- puppet/util/command_line (LoadError)
from /usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /usr/bin/puppet:3:in `<main>'
答案1
以下是 Puppet 对 ruby 版本的支持矩阵:
http://docs.puppetlabs.com/guides/platforms.html#ruby-versions
(OP 更新后更新以显示错误消息)
Puppet 已经将自身安装到您系统的 Ruby 库位置下/usr/lib/ruby/1.8/site_ruby/
,而自制的 ruby 不会查看该位置。
最上面的一行/usr/bin/puppet
运行#!/usr/bin/env ruby
$PATH 中的第一个 ruby。因此,您可以调整 $PATH 变量或更改该行以专门运行系统 ruby,如下所示:
#!/usr/bin/ruby
答案2
这就是为什么 rvm(http://rvm.io) 被发明了。在我看来,这是运行 ruby 或开发 ruby 应用程序的唯一明智方法。不同的 ruby 适用于不同的用途。