2011-11-20 62 views
0

收到此错误:Centos的5.7 /红宝石/引入nokogiri - 获取NotFoundError xmlRelaxNGSetParserStructuredErrors

# 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/[email protected]/gems/nokogiri-1.4.6-java/lib/nokogiri/ffi/libxml.rb:305 
      Nokogiri at /home/prod/.rvm/gems/[email protected]/gems/nokogiri-1.4.6-java/lib/nokogiri/ffi/libxml.rb:42 
      (root) at /home/prod/.rvm/gems/[email protected]/gems/nokogiri-1.4.6-java/lib/nokogiri/ffi/libxml.rb:41 
      require at org/jruby/RubyKernel.java:1038 

我有工作在旧服务器上,但似乎缺少点什么的新的。红宝石和lib版本似乎是两个服务器,即在同一个:

红宝石-v =>的jruby 1.6.5(红宝石1.8.7-P330)(2011-10-25 9dcd388)(OpenJDK的64-位服务器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 

编辑: 只是尝试了Oracle Java版本来匹配旧的/工作箱,没有喜悦,虽然有一个稍微不同的错误,即:

$红宝石-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] 

$轨道ç

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:

尝试更新机械化和引入nokogiri,但似乎有在机械化2饼干有关的差异 - 努力得到似乎应该解决这个问题的github版本。

EDIT3:

试过1.4.7引入nokogiri,但仍然给出错误。现在已经安装了1.5,安装好 - 只是它不适用于OSX的我的开发环境。可能需要提高nokogiri的错误 - 但必须编写一个测试程序来演示该问题。

回答

1

有没有理由通过FFI使用Nokogiri 1.4.6?最新版本1.5.0具有纯Java风格,可能对您更好。

https://rubygems.org/gems/nokogiri/versions/1.5.0-java

如果符号是从您libxml2.so丢失,你需要有它的版本。在我的Mac上,我得到:

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

感谢 - 一直避免从1.0.0的机械化升级到2.0.0(+) - 这可能是为什么nokogiri是旧的。可能是我咬这颗子弹的时间。 “nm /usr/lib/libxml2.so”给了我“没有符号” - 也许它是CentOS/.so文件中的一个不同选项:( –