JRuby: Nokogiri 1.6 не удается установить, а сборщик пытается установить уже найденную зависимость

Я получаю сообщение об ошибке на jruby (linux) при установке драгоценного камня «trinidad_diagnostics_extension» (хотя этот вопрос не о тринидаде). Цепочка зависимостей генерирует ошибку:

  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» соответствующая часть моего списка драгоценных камней выглядит так:
$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. Почему упаковщик пытается установить nokogiri, когда эта зависимость уже соблюдена?
  2. Как я могу это исправить? Успешная установка nokogiri 1.6 или информирование расширения trinidad о том, что 1.6 не нужно устанавливать, будут хорошим решением.

Если это актуально, у меня есть JRUBY_OPTS=-Xcext.enabled=true

ОБНОВИТЬ

Я смог заставить его работать, сначала установив драгоценный камень вне сборщика:

jruby -S gem install trinidad_diagnostics_extension

И тогда команда пакета работала нормально, так как она уже была установлена. Итак, я заставил его работать, я все еще не понимаю, почему мне пришлось устанавливать его вне бандлера и почему это имеет значение, и мне хотелось бы получить некоторое представление, если у кого-то оно есть.


person Jonah    schedule 02.05.2013    source источник
comment
Может быть, когда вы делаете «список драгоценных камней   -  person Amit Kumar Gupta    schedule 03.05.2013
comment
1.5.9 java — необычный номер версии. Возможно, Bundler неправильно анализирует его и поэтому не знает, что он удовлетворяет указанной зависимости.   -  person Mark Thomas    schedule 03.05.2013


Ответы (1)


1.6.0.pre1 не существует для платформы Java по неинтересным причинам. Тем не менее, вы должны получать предварительные выпуски только в том случае, если вы специально запрашиваете их.

person Mike Dalessio    schedule 06.05.2013