【问题标题】:Unable to install ruby gem ruby-jmeter无法安装 ruby​​ gem ruby​​-jmeter
【发布时间】:2016-04-19 05:22:51
【问题描述】:

使用 chef 安装 jmeter。它在尝试安装 gem ruby-jmeter

时失败

尝试手动安装 gem

(1:91)# ./gem install ruby-jmeter
Building native extensions.  This could take a while...
ERROR:  Error installing ruby-jmeter:
    ERROR: Failed to build gem native extension.

进一步观察,似乎它依赖于另一个宝石 nokogiri

Building nokogiri using packaged libraries.
Using mini_portile version 2.0.0.rc2
checking for gzdopen() in -lz... yes
checking for iconv using --with-opt-* flags... yes

因此尝试安装 nokogiri 以了解其失败的原因。所以它抱怨没有正确版本的 libxml2

(1:105)# ./bin/gem install nokogiri -- --use-system-libraries
Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

        /opt/chef/embedded/bin/ruby extconf.rb --use-system-libraries
checking if the C compiler accepts ... yes
Building nokogiri using system libraries.
libxml2 version 2.6.21 or later is required!
*** extconf.rb failed ***

我尝试使用 yum 安装 libxml2 库,发现它已经安装了

(1:111)# yum install libxml2
Loaded plugins: versionlock
Setting up Install Process
Package libxml2-2.7.6-20.el6_7.1.x86_64 already installed and latest version
Nothing to do

那么真正的问题是什么以及如何解决它。enter code here

【问题讨论】:

    标签: ruby rubygems jmeter chef-infra


    【解决方案1】:

    所以我做了更多研究,发现缺少开发包,这是构建 nokogiri gem 所必需的。

    所以安装了 libxml2 和 libxslt 的开发包

    ​​>
    (1:113)# yum install libxml2-devel
    Loaded plugins: versionlock
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package libxml2-devel.x86_64 0:2.7.6-20.el6_7.1 will be installed
    --> Finished Dependency Resolution
    
    
    (1:115)# yum install libxslt-devel
    Loaded plugins: versionlock
    Setting up Install Process
    Resolving Dependencies
    --> Running transaction check
    ---> Package libxslt-devel.x86_64 0:1.1.26-2.el6_3.1 will be installed
    --> Processing Dependency: libgcrypt-devel for package: libxslt-devel-1.1.26-2.el6_3.1.x86_64
    --> Running transaction check
    ---> Package libgcrypt-devel.x86_64 0:1.4.5-11.el6_4 will be installed
    --> Processing Dependency: libgpg-error-devel for package: libgcrypt-devel-1.4.5-11.el6_4.x86_64
    --> Running transaction check
    ---> Package libgpg-error-devel.x86_64 0:1.7-4.el6 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    

    安装这两个 yum 包后,ruby-jmeter gem 安装成功

    (1:118)# ./bin/gem install ruby-jmeter
    Fetching: ruby-jmeter-2.13.10.gem (100%)
    Fetching: unf_ext-0.0.7.2.gem (100%)
    Building native extensions.  This could take a while...
    Fetching: unf-0.1.4.gem (100%)
    Fetching: domain_name-0.5.20160310.gem (100%)
    Fetching: http-cookie-1.0.2.gem (100%)
    Fetching: netrc-0.11.0.gem (100%)
    Successfully installed ruby-jmeter-2.13.10
    Successfully installed unf_ext-0.0.7.2
    Successfully installed unf-0.1.4
    Successfully installed domain_name-0.5.20160310
    Successfully installed http-cookie-1.0.2
    Successfully installed netrc-0.11.0
    6 gems installed
    Installing ri documentation for ruby-jmeter-2.13.10...
    Installing ri documentation for unf_ext-0.0.7.2...
    Installing ri documentation for unf-0.1.4...
    Installing ri documentation for domain_name-0.5.20160310...
    Installing ri documentation for http-cookie-1.0.2...
    Installing ri documentation for netrc-0.11.0...
    Installing RDoc documentation for ruby-jmeter-2.13.10...
    Installing RDoc documentation for unf_ext-0.0.7.2...
    Installing RDoc documentation for unf-0.1.4...
    Installing RDoc documentation for domain_name-0.5.20160310...
    Installing RDoc documentation for http-cookie-1.0.2...
    Installing RDoc documentation for netrc-0.11.0...
    

    【讨论】:

    • 你的答案应该更“cheffy”,但如果你想在 chef 中做到这一点:package [ "libxml2-devel", "libxslt-devel" ]; gem_package "ruby-jmeter"
    • 我们正在尝试不可变图像,慢慢远离使用配置管理来管理事物。以真正的厨师方式,它有点棘手。鉴于食谱 (github.com/johnbellone/jmeter-cookbook) 使用 chef_gem 安装 ruby​​ jmeter,您必须先获取依赖项。即使您添加了安装这些 pacakges 的第一步,chef_gem 在它收敛时也被称为第一个资源。完成此操作的一种简单方法是在安装依赖包的包装说明书中使用“include_now”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多