2

Rails プロジェクトにはビルド パイプラインがあります。テスト サーバーでアプリケーションをバンドルしてテストし、それ (gem を含むコードvendor/) をステージング サーバーにコピーしてパッセンジャー サーバーにデプロイします。

以前は機能していましたが、今では次のエラーが表示されますapache.error.log:

WARNING: Nokogiri was built against LibXML version 2.7.6, but has dynamically loaded 2.6.26
/usr/local/rvm/rubies/ruby-1.9.2-p318/bin/ruby: 
  relocation error: /home/project/vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.2/lib/nokogiri/nokogiri.so: 
  symbol xmlNextElementSibling, version LIBXML2_2.7.3 not defined in file libxml2.so.2 with link time reference

そしてerror 500ブラウザで。

ステージング サーバーで webbrick を実行すると、最初の要求で同様のエラーが発生します。どうすれば解決できますか?

編集: のこぎりバージョンのスタンジ。同じバイナリは、スタンドアロンと呼ぶか、次のように呼ぶかによって、異なる libxml バージョンをロードしますbundle exec

vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.2/bin/nokogiri  -v
# Nokogiri (1.5.2)
---
warnings: []
nokogiri: 1.5.2
ruby:
  version: 1.9.2
  platform: x86_64-linux
  description: ruby 1.9.2p318 (2012-02-14 revision 34678) [x86_64-linux]
  engine: ruby
libxml:
  binding: extension
  compiled: 2.6.26
  loaded: 2.6.26

$ bundle exec vendor/bundle/ruby/1.9.1/gems/nokogiri-1.5.2/bin/nokogiri  -v
WARNING: Nokogiri was built against LibXML version 2.7.6, but has dynamically loaded 2.6.26
# Nokogiri (1.5.2)
---
warnings:
- Nokogiri was built against LibXML version 2.7.6, but has dynamically loaded 2.6.26
nokogiri: 1.5.2
ruby:
  version: 1.9.2
  platform: x86_64-linux
  description: ruby 1.9.2p318 (2012-02-14 revision 34678) [x86_64-linux]
  engine: ruby
libxml:
  binding: extension
  compiled: 2.7.6
  loaded: 2.6.26
4

3 に答える 3

1

エラーは本当にそれをすべて言います。サーバー上とは異なるバージョンのLibXMLがローカルマシン(gemがコンパイルされた場所)にあり、開発マシンをダウングレードするか、サーバー上にgemをビルドしますversion 2.7.62.6.26

于 2012-05-08T13:00:22.407 に答える
1

問題を解決しました。libxml2ソースからビルドしてからbundler、この新しいバージョンを使用するように構成しました。

bundle config build.nokogiri --with-xml2-dir=/usr --with-xslt-dir=/usr/local

(ロードされたバージョンは、のこぎりのビルドに使用されたバージョンよりも新しいため、警告が表示されますが、問題はありません)。

于 2012-05-09T08:04:01.263 に答える
0

64 ビットのベア マシンで問題が解決しない場合は、zlib1g を 1.2.3 から 1.2.7 に更新して解決しました。

$> aptitude update
$> aptitude install zlib1g
于 2012-05-24T10:58:15.953 に答える