JRuby:Nokogiri 1.6无法安装& Bundler试图安装已经遇到的依赖关系

时间:2013-05-02 21:35:32

标签: ruby jruby bundler nokogiri trinidad-gem

安装时我在jruby(linux)上收到错误 “trinidad_diagnostics_extension”gem(虽然这个问题不是关于特立尼达)。依赖链是 生成错误:

  1. “trinidad_diagnostics_extension”取决于“jruby-lint> = 0.3.0”
  2. “jruby-lint> = 0.3.0”依次取决于“nokogiri> = 1.5.0.beta.4”
  3. 在尝试安装“trinidad_diagnostics_extension”之前,相关 我的宝石列表的一部分如下所示:
  4. $gem list
    nokogiri (1.5.9 java)
    jruby-lint (0.4.1)
    

    正如您所看到的,似乎已经满足了所需的依赖关系。尽管如此, 将gem 'trinidad_diagnostics_extension'添加到我的Gemfile后然后 运行jruby -S bundle install,捆绑程序尝试安装nokogiri (1.6.0.rc1),并且在此安装过程中失败,并显示以下错误:

    Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
    
    ... bunch of omitted output here
    
    nokogiri.c:42:18: fatal error: util.h: No such file or directory
    compilation terminated.
    make: *** [nokogiri.o] Error 1
    
    Gem files will remain installed in /home/jg/.rvm/gems/jruby-1.7.3/gems/nokogiri-1.6.0.rc1 for inspection.
    Results logged to /home/jg/.rvm/gems/jruby-1.7.3/gems/nokogiri-1.6.0.rc1/ext/nokogiri/gem_make.out
    
    1. 为什么Bundler在满足依赖性时尝试安装nokogiri?
    2. 我该如何解决这个问题?成功安装nokogiri 1.6或使特立尼达扩展意识到1.6不需要安装将是​​很好的解决方案。
    3. 如果相关,我有JRUBY_OPTS=-Xcext.enabled=true

      更新

      我能够通过首先在bundler之外安装gem来实现它的工作:

      jruby -S gem install trinidad_diagnostics_extension
      

      然后bundle命令运行正常,因为它已经安装好了。所以我得到了它的工作,我仍然感到困惑的是为什么我必须在bundler之外安装它以及为什么这很重要,并且如果有人有它就会有一些见解。

1 个答案:

答案 0 :(得分:0)

由于无趣的原因,Java平台不存在<1.6> 1.6.0.pre1。也就是说,如果您特别要求,您应该只获得预发布。所以,还有其他事情正在发生。你可以分享你的整个Gemfile吗?