安装“trinidad_diagnostics_extension”gem 时,我在 jruby (linux) 上遇到错误(尽管这个问题与 trinidad 无关)。一系列依赖项正在生成错误:
- “trinidad_diagnostics_extension”取决于“jruby-lint >= 0.3.0”
- “jruby-lint >= 0.3.0”又取决于“nokogiri >= 1.5.0.beta.4”
- 在尝试安装“trinidad_diagnostics_extension”之前,我的 gem 列表的相关部分如下所示:
$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
- 当已经满足该依赖项时,为什么捆绑程序会尝试安装 nokogiri?
- 我怎样才能解决这个问题?成功安装 nokogiri 1.6 或让 trinidad 扩展知道不需要安装 1.6 都是很好的解决方案。
如果它是相关的,我有JRUBY_OPTS=-Xcext.enabled=true
更新
我能够通过首先在捆绑器之外安装 gem 来使其工作:
jruby -S gem install trinidad_diagnostics_extension
然后 bundle 命令工作正常,因为它已经安装了。所以我得到它的工作我仍然对为什么我必须在捆绑器之外安装它以及为什么这很重要感到困惑,并且如果有人有它,我想了解一下。