Centos 5.7 / ruby ​​/ nokogiri - Получение NotFoundError xmlRelaxNGSetParserStructuredErrors - PullRequest
0 голосов
/ 21 ноября 2011

Получение этой ошибки:

# rails c
FFI::NotFoundError: Function 'xmlRelaxNGSetParserStructuredErrors' not found in [libxml2.so, libxslt.so, libexslt.so]
   attach_function at /home/prod/.rvm/rubies/jruby-1.6.5/lib/ruby/site_ruby/shared/ffi/library.rb:154
              each at org/jruby/RubyArray.java:1612
   attach_function at /home/prod/.rvm/rubies/jruby-1.6.5/lib/ruby/site_ruby/shared/ffi/library.rb:150
            LibXML at /home/prod/.rvm/gems/jruby-1.6.5@p-ecom1-rails311/gems/nokogiri-1.4.6-java/lib/nokogiri/ffi/libxml.rb:305
          Nokogiri at /home/prod/.rvm/gems/jruby-1.6.5@p-ecom1-rails311/gems/nokogiri-1.4.6-java/lib/nokogiri/ffi/libxml.rb:42
            (root) at /home/prod/.rvm/gems/jruby-1.6.5@p-ecom1-rails311/gems/nokogiri-1.4.6-java/lib/nokogiri/ffi/libxml.rb:41
           require at org/jruby/RubyKernel.java:1038

У меня это работает на старом сервере, но на новом, похоже, чего-то не хватает.Версии ruby ​​и lib кажутся одинаковыми на обоих серверах, а именно:

ruby ​​-v => jruby 1.6.5 (ruby-1.8.7-p330) (2011-10-25 9dcd388) (OpenJDK64-разрядный сервер VM 1.6.0_20) [linux-amd64-java]

На самом деле - версия Java на старом сервере - это версия Oracle ...

Centos 5.7

# yum list | egrep "xslt|xml2"
libxml2.i386                               2.6.26-2.1.12.el5_7.1       installed
libxml2.x86_64                             2.6.26-2.1.12.el5_7.1       installed
libxml2-devel.i386                         2.6.26-2.1.12.el5_7.1       installed
libxml2-devel.x86_64                       2.6.26-2.1.12.el5_7.1       installed
libxml2-python.x86_64                      2.6.26-2.1.12.el5_7.1       installed
libxslt.x86_64                             1.1.17-2.el5_2.2            installed
libxslt-devel.x86_64                       1.1.17-2.el5_2.2            installed

РЕДАКТИРОВАТЬ: Только что попробовал Java-версию Oracle, чтобы соответствовать старой / рабочей коробке, не радость, хотя немного другая ошибка, а именно:

$ ruby ​​-v

jruby 1.6.5 (ruby-1.8.7-p330) (2011-10-25 9dcd388) (Java HotSpot(TM) Server VM 1.6.0_29) [linux-i386-java]

$ rails c

LoadError: Could not open library 'xslt' : xslt: cannot open shared object file: No such file or directory. Could not open library 'libxslt.so' : libxslt.so: cannot open shared object file: No such file or directory
           ffi_lib at /home/prod/.rvm/rubies/jruby-1.6.5/lib/ruby/site_ruby/shared/ffi/library.rb:82
           collect at org/jruby/RubyArray.java:2318

EDIT2:

Пробовал обновлять mechanize и nokogiri, но кажется, что есть различия между cookie в механизме 2 - попытка получить версию github, которая, кажется, должна это исправить.

EDIT3:

Пробовал 1.4.7 Нокогири, но все равно выдает ошибку.На данный момент установили 1.5, которая устанавливает нормально - просто это не работает в моем dev env на OSX.Вероятно, нужно исправить ошибку с помощью nokogiri - но нужно написать тестовую программу, чтобы продемонстрировать проблему.

1 Ответ

1 голос
/ 21 ноября 2011

Есть ли причина, по которой вы используете Nokogiri 1.4.6 через FFI?Последняя версия 1.5.0 поставляется в чистом Java-стиле, который может работать для вас лучше.есть это.На моем Mac я получаю:

$ nm /usr/lib/libxml2.dylib  | grep RelaxNGSetParserStructuredErrors
00000000000a5bcd T _xmlRelaxNGSetParserStructuredErrors
...