0

同じ自作の Ruby の RPM がインストールされた 2 つのサーバーがあります。サーバーごとに、検索パスが異なり、次のスニペットに失敗します。

#!/usr/bin/env ruby
require 'openssl'
require 'digest/md5'
puts OpenSSL::Digest::MD5.new

壊れたサーバー出力:

/tmp/test.rb 
/tmp/test.rb:6: uninitialized constant OpenSSL::Digest::MD5 (NameError)

良いサーバー出力:

/tmp/test.rb
d41d8cd98f00b204e9800998ecf8427e

コマンド ライン フラグを使用して壊れたサーバーを動作させることができます。

ruby -I /usr/lib/ruby/1.8 /tmp/test.rb 
d41d8cd98f00b204e9800998ecf8427e

どちらも CentOS 4.4 x86_64、ruby 1.8.6 p369 です。Fedora 11 RPM 仕様ファイルに基づいて独自の RPM を構築しました。913 の他のボックスで動作します。ヘルプ?

4

1 に答える 1

0

インストールについて詳しく教えていただけない場合、私たちにできることはほとんどありません。どうやらライブラリの検索パスが壊れているようですが、すでにそれを知っていました。各マシンの $: 変数の値は?

編集: ああ、大げさな推測: env を使用しているため、呼び出された ruby​​ 実行可能ファイルは PATH の最初のものです。たとえば、この特定のマシンの /usr/local に他の ruby​​ がインストールされていません?

于 2009-10-08T00:05:13.193 に答える