首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nokogiri上的“不兼容库版本”

nokogiri上的“不兼容库版本”
EN

Stack Overflow用户
提问于 2015-09-28 22:38:31
回答 1查看 1.7K关注 0票数 0

我升级了我的Ubuntu14.03服务器,包括gitlab。现在,我的Ruby (齿条)网站似乎不再工作了。我得到以下错误:

代码语言:javascript
复制
incompatible library version - /home/taco/.rvm/gems/ruby-2.1.2/gems/nokogiri-1.6.6.2/lib/nokogiri/nokogiri.so (LoadError)
/home/taco/.rvm/gems/ruby-2.1.2/gems/nokogiri-1.6.6.2/lib/nokogiri.rb:29:in `require'
/home/taco/.rvm/gems/ruby-2.1.2/gems/nokogiri-1.6.6.2/lib/nokogiri.rb:29:in `rescue in <top (required)>'
/home/taco/.rvm/gems/ruby-2.1.2/gems/nokogiri-1.6.6.2/lib/nokogiri.rb:25:in `<top (required)>'
/home/taco/.rvm/gems/ruby-2.1.2/gems/nokogumbo-1.4.1/lib/nokogumbo.rb:1:in `require'
/home/taco/.rvm/gems/ruby-2.1.2/gems/nokogumbo-1.4.1/lib/nokogumbo.rb:1:in `<top (required)>'
/home/taco/.rvm/gems/ruby-2.1.2/gems/sanitize-4.0.0/lib/sanitize.rb:3:in `require'
/home/taco/.rvm/gems/ruby-2.1.2/gems/sanitize-4.0.0/lib/sanitize.rb:3:in `<top (required)>'
...

我在Nginx公司经营乘客,这通常很好,现在仍然是。双子座还能用。我认为这与Nginx或乘客无关,而只是一些不能相处的宝石。有人对这种错误有经验吗?

更新

我的客户网站的功能在这一时刻并不真正需要消毒,所以我禁用了这一部分,使客户网站再次工作。

在这个过程中,我注意到它对zipruby宝石也是这样说的。我还注意到更多的宝石会产生这个错误。因此,这不是宝石本身,而是一个地下图书馆。我在产生这个错误的宝石上做了一些ldd,也就是对nokogiri的ldd

代码语言:javascript
复制
ldd /home/taco/.rvm/gems/ruby-2.1.5/gems/nokogiri-1.6.6.2/lib/nokogiri/nokogiri.so
linux-vdso.so.1 =>  (0x00007fff5b1fd000)
libruby.so.2.1 => /home/taco/.rvm/rubies/ruby-2.1.5/lib/libruby.so.2.1 (0x00007fc4e9ae4000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc4e97de000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc4e95c5000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc4e93a7000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc4e8fe2000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc4e8dde000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fc4e8ba5000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc4ea3f5000)

我还尝试过nokogumbo、zipruby、rest-client和其他几种。我还没找到什么奇怪的东西。

顺便说一句:正如您可能注意到的,我尝试了几种方法,比如通过rvm使用不同的ruby版本,等等,所以在上面的例子中,ruby版本是不同的。

EN

回答 1

Stack Overflow用户

发布于 2015-09-28 22:51:10

在我的系统(Mac )上安装Nokogiri时,我发现Nokogiri的c扩展部分使用以下库:

代码语言:javascript
复制
/Users/me/.rvm/rubies/ruby-1.9.3-p550/lib/libruby.1.9.1.dylib (compatibility version 1.9.1, current version 1.9.1)
/usr/lib/libxml2.2.dylib (compatibility version 10.0.0, current version 10.9.0)
/usr/lib/libxslt.1.dylib (compatibility version 3.0.0, current version 3.26.0)
/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.5)
/usr/lib/libicucore.A.dylib (compatibility version 1.0.0, current version 53.1.0)
/usr/lib/libexslt.0.dylib (compatibility version 9.0.0, current version 9.15.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
/usr/local/Cellar/gcc48/4.8.3/lib/gcc/x86_64-apple-darwin14.0.0/4.8.3/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

其中,我很确定Nokogiri在其他平台上使用libxml2、libxslt、libz、libicucore和libexslt。我假设通过升级您的Ubuntu版本,它升级了一些与安装Nokogiri所针对的库不同的系统库。

我要做的是找到包含所有c代码并在其上运行ldd的Nokogiri安装所生成的库。您的系统应该告诉您它是否正在寻找它试图链接的库。我猜你至少会失踪一次。

简单的解决方案是重新安装Nokogiri,这样它就可以针对新的库版本进行编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32832899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档