2014-09-29 4 views
0

Похоже, что jruby-1.7.16 не работает правильно на SunOS 5.10. По крайней мере, похоже, что невозможно установить дополнительные драгоценные камни.jruby sunos 5.1 не может работать jgem

Когда я пытаюсь запустить jgem я получаю следующее сообщение об ошибке:

NoMethodError: undefined method `name' for nil:NilClass 
      _resort! at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:717 
       sort! at org/jruby/RubyArray.java:3358 
      _resort! at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:716 
       _all at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:665 
       each at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:855 
     reverse_each at org/jruby/RubyEnumerable.java:1072 
     latest_specs at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/specification.rb:971 
    find_latest_files at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems.rb:490 
     load_plugins at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems.rb:1006 
      (root) at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/gem_runner.rb:81 
      require at org/jruby/RubyKernel.java:1065 
      (root) at /export/home/my_user/jruby-1.7.16/lib/ruby/shared/rubygems/core_ext/kernel_require.rb:1 
      (root) at ./jgem:9 

Я пытался использовать такое же распределение на Ubuntu LTS 12.04.4 и он работает правильно, могут быть установлены драгоценные камни.

Я установил необходимые драгоценные камни в Ubuntu, упаковал jruby и перешел на машину SunOS, и это не помогло.

Является ли SunOS 5.1 полностью поддерживаемым jruby? jruby и irb, похоже, работают нормально, но jgem имеет для меня решающее значение.

===== EDIT: Эти драгоценные камни, которые я нашел в JRuby установке

ls 
axiom-types-0.1.1   equalizer-0.0.9   rake-10.1.0    ruby-maven-libs-3.1.1 
coercible-1.0.0   ice_nine-0.11.0   rdoc-4.0.1     thread_safe-0.3.4-java 
descendants_tracker-0.0.4 maven-tools-1.0.5   ruby-maven-3.1.1.0.8  virtus-1.0.3 

И я добавил путы в передней линии вы упомянули и a.name и b.name, это выглядит случилось, что ошибка, когда после Виртус сравнивали с thread_safe:

a = virtus 
b= thread_safe 
1 
NoMethodError: undefined method `name' for nil:NilClass 
+0

делает 'jruby -S gem env' в конечном итоге тем же и работает' jgem env'? – kares

+0

Да, все заканчивается на том же ... :( –

ответ

0

кажется, что некоторые из спецификации гем не имеет имя (которое кажется странным):

def self._resort!(specs) # :nodoc: 
    specs.sort! { |a, b| 
    names = a.name <=> b.name # line 717 
    next names if names.nonzero? 
    b.version <=> a.version 
    } 
end 

Я хотел бы попробовать поставив ставит перед names = a.name <=> b.name, чтобы выяснить, что происходит ... , если это чистый JRuby установить, чем определенно стоит отчет вопрос, но все-таки стоит посмотреть глубже, так как основная группа может быть низкой на SunOS машины :)

+0

Я включил детали в исходный вопрос и да, это чистый jruby install. –

+0

Нашел аналогичную проблему, поднятую в тот же день, когда я задал этот вопрос в stackoverflow: https: // github .com/jruby/jruby/issues/2012 –

+0

О, я вижу - в этом случае есть проблема с родным материалом, поставляемым в JRuby для Solaris ... Вероятно, это связано с тем, что bundler/gem выполняет 'require 'openssl'', который запускает собственную загрузку FFI из-за Krypt (это будет устранено в jruby-openssl ** 0.9.6 **) – kares