2013-01-21 136 views
0

我刚刚安装红宝石的OEL 5.8服务器上,我看到了一些奇怪的行为红宝石LoadError上OEL

服务器的详细信息

Linux myhost 2.6.18-238.el5 #1 SMP Tue Jan 4 15:41:11 EST 2011 x86_64 x86 

的Ruby版本

ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] 

当我尝试运行一个红宝石程序我得到一个奇怪的错误

-sh-3.2$ ruby testing.rb 
ruby: No such file or directory -- ('» (LoadError) 

同样呼吁宝石返回一个类似的错误

-sh-3.2$ gem -v 
/usr/bin/ruby: No such file or directory -- (W 
(LoadError) 

运行在红宝石strace的显示了这个错误它死之前

lstat("/usr", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 
lstat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0 
lstat("/usr/lib/ruby", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 
lstat("/usr/lib/ruby/site_ruby", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 
lstat("/usr/lib/ruby/site_ruby/1.9.1", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 
lstat("/usr/lib/ruby/site_ruby/1.9.1/rubygems", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 
lstat("/usr/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb", {st_mode=S_IFREG|0644, st_size=1871, ...}) = 0 
open("(\227I\6", O_RDONLY)    = -1 ENOENT (No such file or directory) 
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 
write(2, "ruby", 4ruby)      = 4 
write(2, ": ", 2:)      = 2 
write(2, "No such file or directory -- (\227I"..., 33No such file or directory -- (I) = 33 
write(2, " (", 2()      = 2 
write(2, "LoadError", 9LoadError)    = 9 
write(2, ")\n", 2) 
)      = 2 
getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0 
rt_sigaction(SIGINT, {0x1, [], SA_RESTORER|SA_SIGINFO, 0x319d00eb10}, {0x4b1eb0, [], SA_RESTORER|SA_SIGINFO, 0x319d00eb10}, 8) = 0 
rt_sigaction(SIGINT, {SIG_DFL, [], SA_RESTORER|SA_SIGINFO, 0x319d00eb10}, {0x1, [], SA_RESTORER|SA_SIGINFO, 0x319d00eb10}, 8) = 0 
write(4, "!", 1)      = 1 
munmap(0x2ac6c5784000, 1052672)   = 0 
exit_group(1) 

我有充分的输出,如果任何人希望看到它

strangly每次我打电话给红宝石,我得到一个稍微不同的错误信息(例如)

-sh-3.2$ ruby testing.rb 
ruby: No such file or directory -- (Ç/ (LoadError) 
-sh-3.2$ ruby testing.rb 
ruby: No such file or directory -- Ç (LoadError) 
-sh-3.2$ ruby testing.rb 
ruby: No such file or directory -- 0w; (LoadError) 
-sh-3.2$ ruby testing.rb 
ruby: No such file or directory -- NULLCMD (LoadError) 
-sh-3.2$ ruby testing.rb 
ruby: No such file or directory -- 07î (LoadError) 

,并在每一种情况下我使用strace显示了这样的错误它死

lstat("/usr/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb", {st_mode=S_IFREG|0644, st_size=1871, ...}) = 0 
open("\20\7\3\30", O_RDONLY)   = -1 ENOENT (No such file or directory) 

我两周前注意到了这种情况的发生,做了红宝石其中固定它的重新安装,但在凌晨4点昨天的问题再次发生,这是非常奇怪之前因为没有被在此期间使用的盒子

我也做了平常的东西比如检查红宝石的其他版本和所有看起来很好,所以我有点停留在这一个

没有人有任何想法什么可能导致它?更重要的是如何解决它

干杯

迈克

+0

那个盒子上的其他东西是否正常工作?几乎看起来像内存或磁盘损坏发生,因为每次的错误是不同的。然而,因为错误似乎来自rubygems,所以你可以尝试运行它,看看会发生什么:'ruby --disable-gems testing.rb'。 – Casper

+0

一切都很好,该问题不只是链接到rubygems这只是一个其他影响的例子 我上面调用我的测试脚本只是回声出一行文本,所以它不使用任何宝石 这真的很奇怪 – user891380

+0

只是为了测试,也许尝试编译和安装红宝石1.8,看看会发生什么?还有1.9版本的更新版本(p374)。你是从头开始编译它的吗? – Casper

回答

0

跑进运行RHEL 6.3的系统上这个问题。预链接包每天运行一次并破坏ruby二进制文件。我卸载了prelink并替换了ruby二进制文件。

+0

啊我正在寻找预先链接,因为它似乎一次又一次地发生,因为我会立即摆脱那个cronjob – user891380