简体   繁体   English

厨师红宝石宝石安装程序失败

[英]chef ruby gem installer failing

I am trying to setup cassandra on an CentOS VM via chef and it fails with the error below. 我正在尝试通过厨师在CentOS VM上设置cassandra,它失败并出现以下错误。 I have tried clearing out bundle caches to no avail. 我已经尝试清除捆绑缓存无济于事。 The recipe works on another machine but a key difference is that I ran other recipes on that machine beforehand so I suspect I am missing a chef dependency (which is why I haven't tried just fixing the packages directly). 配方适用于另一台机器,但一个关键的区别是我事先在那台机器上运行了其他配方,所以我怀疑我缺少一个厨师依赖(这就是为什么我没有尝试直接修复包)。 I am also terribly new to ruby so sorry if this is an obvious question. 我对ruby也非常新,所以如果这是一个明显的问题,请对不起。

Machine config 机器配置

  • Chef: 11.4.0 厨师:11.4.0
  • ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-linux] ruby 1.9.3p286(2012-10-12修订版37165)[x86_64-linux]
  • gem 1.8.24 宝石1.8.24
  • Linux somehost 2.6.32-276.el6.x86_64 #1 SMP Tue May 29 17:38:19 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux Linux somehost 2.6.32-276.el6.x86_64#1 SMP Tue May 29 17:38:19 EDT 2012 x86_64 x86_64 x86_64 GNU / Linux

Error messages chef-client output: 错误消息chef-client输出:

 Starting Chef Client, version 11.4.0 启动Chef Client,版本11.4.0\n    resolving cookbooks for run list: ["chef-client", "cassandra"] 解决运行清单的食谱:[“chef-client”,“cassandra”]\n    Synchronizing Cookbooks: 同步Cookbook:\n      - minitest-handler  -  minitest-handler\n      - chef_handler  -  chef_handler\n      - yum  - 百胜\n      - cron  - 克朗\n      - selinux  -  selinux\n      - sysctl  -  sysctl\n      - openssh  -  openssh\n      - iptables  -  iptables\n      - chef-client  - 厨师 - 客户\n      - cassandra  - 卡桑德拉\n      - apt  -  apt\n      - java  -  java\n      - windows  - 窗户\n      - aws  -  aws\n    Compiling Cookbooks... 编辑Cookbook ......\n    Recipe: cassandra::packages 食谱:cassandra ::包\n      * chef_gem[cassandra-cql] action install * chef_gem [cassandra-cql]动作安装\n    ================================================================================ ================================================== ==============================\n    Error executing action `install` on resource 'chef_gem[cassandra-cql]' 在资源'chef_gem [cassandra-cql]'上执行动作`install`时出错\n    ================================================================================ ================================================== ============================== 
 Gem::Installer::ExtensionBuildError
    -----------------------------------
    ERROR: Failed to build gem native extension.

    /opt/chef/embedded/bin/ruby extconf.rb
    extconf.rb:25: Use RbConfig instead of obsolete and deprecated Config.
    checking for strlcpy() in string.h... *** extconf.rb failed ***
    Could not create Makefile due to some reason, probably lack of
    necessary libraries and/or headers.  Check the mkmf.log file for more
    details.  You may need configuration options.

    Provided configuration options:
        --with-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/opt/chef/embedded/bin/ruby
    /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
    You have to install development tools first.
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:461:in `try_link0'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:476:in `try_link'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:619:in `try_func'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:894:in `block in have_func'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:254:in `open'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:254:in `open'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:893:in `have_func'
        from extconf.rb:29:in `<main>'


    Gem files will remain installed in /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/thrift-0.9.1 for inspection.
    Results logged to /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/thrift-0.9.1/ext/gem_make.out



    Cookbook Trace:
    ---------------
    /var/chef/cache/cookbooks/cassandra/recipes/packages.rb:30:in `block in from_file'
    /var/chef/cache/cookbooks/cassandra/recipes/packages.rb:29:in `each'
    /var/chef/cache/cookbooks/cassandra/recipes/packages.rb:29:in `from_file'
    /var/chef/cache/cookbooks/cassandra/recipes/default.rb:23:in `from_file'


    Resource Declaration:
    ---------------------
    # In /var/chef/cache/cookbooks/cassandra/recipes/packages.rb

     30:   chef_gem pkg do
     31:     action :install
     32:     version attrs["version"] if attrs["version"]
     33:   end
     34: end



    Compiled Resource:
    ------------------
    # Declared in /var/chef/cache/cookbooks/cassandra/recipes/packages.rb:30:in `block in from_file'

    chef_gem("cassandra-cql") do
      provider Chef::Provider::Package::Rubygems
      action [:install]
      retries 0
      retry_delay 2
      package_name "cassandra-cql"
      version "1.1.4"
      cookbook_name "cassandra"
      recipe_name "packages"
    end


    ================================================================================
    Recipe Compile Error in /var/chef/cache/cookbooks/cassandra/recipes/default.rb
    ================================================================================


    Gem::Installer::ExtensionBuildError
    -----------------------------------
    chef_gem[cassandra-cql] (cassandra::packages line 30) had an error: Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

            /opt/chef/embedded/bin/ruby extconf.rb
    extconf.rb:25: Use RbConfig instead of obsolete and deprecated Config.
    checking for strlcpy() in string.h... *** extconf.rb failed ***
    Could not create Makefile due to some reason, probably lack of
    necessary libraries and/or headers.  Check the mkmf.log file for more
    details.  You may need configuration options.

    Provided configuration options:
        --with-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/opt/chef/embedded/bin/ruby
    /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
    You have to install development tools first.
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:461:in `try_link0'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:476:in `try_link'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:619:in `try_func'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:894:in `block in have_func'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:254:in `open'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:254:in `open'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:893:in `have_func'
        from extconf.rb:29:in `<main>'


    Gem files will remain installed in /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/thrift-0.9.1 for inspection.
    Results logged to /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/thrift-0.9.1/ext/gem_make.out



    Cookbook Trace:
    ---------------
      /var/chef/cache/cookbooks/cassandra/recipes/packages.rb:30:in `block in from_file'
      /var/chef/cache/cookbooks/cassandra/recipes/packages.rb:29:in `each'
      /var/chef/cache/cookbooks/cassandra/recipes/packages.rb:29:in `from_file'
      /var/chef/cache/cookbooks/cassandra/recipes/default.rb:23:in `from_file'


    Relevant File Content:
    ----------------------
    /var/chef/cache/cookbooks/cassandra/recipes/packages.rb:

     23:    package pkg do
     24:      action :install
     25:      version attrs["version"] if attrs["version"]
     26:    end
     27:  end
     28:  
     29:  node["cassandra"]["chef_gems"].each do |pkg, attrs|
     30>>   chef_gem pkg do
     31:      action :install
     32:      version attrs["version"] if attrs["version"]
     33:    end
     34:  end
     35:  
     36:  # Some distributed packages of Cassandra start the service in their
     37:  # postinstall; keep them all equal and a restart can be done after the configs
     38:  # are written on the first run. Added difficulty: they also come with init
     39:  # scripts that always exit 0.



    [2013-10-11T13:13:42-04:00] ERROR: Running exception handlers
    [2013-10-11T13:13:42-04:00] FATAL: Saving node information to /var/chef/cache/failed-run-data.json
    [2013-10-11T13:13:42-04:00] ERROR: Exception handlers complete
    Chef Client failed. 0 resources updated
    [2013-10-11T13:13:42-04:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
    [2013-10-11T13:13:42-04:00] FATAL: Gem::Installer::ExtensionBuildError: chef_gem[cassandra-cql] (cassandra::packages line 30) had an error: Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

            /opt/chef/embedded/bin/ruby extconf.rb
    extconf.rb:25: Use RbConfig instead of obsolete and deprecated Config.
    checking for strlcpy() in string.h... *** extconf.rb failed ***
    Could not create Makefile due to some reason, probably lack of
    necessary libraries and/or headers.  Check the mkmf.log file for more
    details.  You may need configuration options.

    Provided configuration options:
        --with-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=/opt/chef/embedded/bin/ruby
    /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
    You have to install development tools first.
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:461:in `try_link0'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:476:in `try_link'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:619:in `try_func'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:894:in `block in have_func'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:254:in `open'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:254:in `open'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
        from /opt/chef/embedded/lib/ruby/1.9.1/mkmf.rb:893:in `have_func'
        from extconf.rb:29:in `<main>'</pre>


    Gem files will remain installed in /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/thrift-0.9.1 for inspection.
    Results logged to /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/thrift-0.9.1/ext/gem_make.out

The compiler failed to generate an executable file. 编译器无法生成可执行文件。 (RuntimeError) (RuntimeError)
You have to install development tools first. 您必须先安装开发工具。

The above error makes me believe you need to install ruby-dev and gcc packages on your CentOS. 上述错误让我相信您需要在CentOS上安装ruby-devgcc软件包。 On my ubuntu 10.04, I have installed the packages below: ruby1.9.1-dev and gcc-4.4 . 在我的ubuntu 10.04上,我安装了以下软件包: ruby1.9.1-devgcc-4.4

Could you try installing similar packages on CentOS and then re-running chef? 您可以尝试在CentOS上安装类似的软件包,然后重新运行厨师吗?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM