在安装木偶客户端后执行puppet -V时获取与ruby相关的错误

时间:2016-12-09 23:24:27

标签: ruby ubuntu puppet

我正在尝试在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>'

如果我在这里遗漏了任何东西,那将会很棒。

1 个答案:

答案 0 :(得分:0)

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

  

系统要求

     

红宝石
  使用以下版本的MRI(标准)Ruby:

     

的2.1.x
  2.0.x版本
  1.9.3

     

注意:我们目前只测试和包装2.1.x版本的Ruby,因此我们建议您仅使用此版本。我们的测试不包括其他解释器和Ruby版本。

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'