0

我们有两台服务器安装了相同的自制 Ruby RPM。一台一台服务器,搜索路径不同,以下代码段失败。

#!/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 回答