在安装 Puppet 客户端后执行 puppet -V 时出现 ruby 相关错误

Getting ruby related errors while executing puppet -V after puppet client installation

我正在尝试在 ubuntu 客户端上安装 Puppet。 我执行了以下步骤:

cd /tmp
wget https://apt.puppetlabs.com/puppetlabs-release-trusty.deb
sudo dpkg -i puppetlabs-release-trusty.deb
sudo apt-get update
sudo apt-get install libcurl4-gnutls-dev libxml2 libxml2-dev libxslt1-dev ruby-dev
echo "deb http://ftp.us.debian.org/debian/ wheezy main contrib non-free" | sudo tee /etc/apt/sources.list.d/debian_stable.list
sudo apt-get update
sudo apt-get install libaugeas-ruby1.9.1 augeas-tools
sudo apt-get install puppet

我收到这个错误:

@ubuntu:~$ puppet -V
/usr/lib/ruby/vendor_ruby/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb:42:in `<top (required)>': uninitialized constant Syck (NameError)
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/vendor_ruby/puppet/vendor/safe_yaml/lib/safe_yaml.rb:197:in `<module:YAML>'
    from /usr/lib/ruby/vendor_ruby/puppet/vendor/safe_yaml/lib/safe_yaml.rb:132:in `<top (required)>'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/vendor_ruby/puppet/vendor/require_vendored.rb:4:in `<top (required)>'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/vendor_ruby/puppet/vendor.rb:40:in `require_libs'
    from /usr/lib/ruby/vendor_ruby/puppet/vendor.rb:53:in `load_vendored'
    from /usr/lib/ruby/vendor_ruby/puppet.rb:174:in `<module:Puppet>'
    from /usr/lib/ruby/vendor_ruby/puppet.rb:29:in `<top (required)>'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/vendor_ruby/puppet/util/command_line.rb:12:in `<top (required)>'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /usr/bin/puppet:7:in `<main>'

如果我在这里遗漏了什么,请指出。

目前没有支持 Ruby 2.2+ 的 Puppet 版本。即使是最新版本的 Puppet (v4.8) 也不支持 2.2+:

System Requirements

Ruby
Use one of the following versions of MRI (standard) Ruby:

2.1.x
2.0.x
1.9.3

Note: We currently only test and package with 2.1.x versions of Ruby, therefore we recommend you only use this version. Other interpreters and versions of Ruby are not covered by our tests.

https://docs.puppet.com/puppet/4.8/system_requirements.html#ruby

解决方法:
降级到 Ruby 2.1.

备选方案
此处提出的解决 YAML Syck/Psych 问题的解决方案:
https://tickets.puppetlabs.com/browse/PUP-3796

添加到 Gemfile:

gem 'safe_yaml', '~> 1.0.4'