我安装了至少十几台(或更多)运行CentOS 5.5的服务器,i386和x86_64两种口味都完美无缺.我刚刚设置了两个新的CentOS 5.5 x86_64服务器并安装了God,但是我遇到了一个事件系统错误:
$tail /var/log/god.log E [2011-04-22 12:33:17] ERROR: Condition 'God::Conditions::ProcessExits' requires an event system but none has been loaded $god check using event system: none [fail] event system did not load $uname -a Linux server2.example.com 2.6.18-238.9.1.el5 #1 SMP Tue Apr 12 18:10:13 EDT 2011 x86_64 x86_64 x86_64 GNU/Linux
我在任何CentOS服务器上都找不到任何cn或netlink内核模块.然而,我有其他服务器工作正常:
$god check using event system: netlink starting event handler forking off new process forked process with pid = 17559 killing process [ok] process exit event received $uname -a Linux server1.example.com 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
所有服务器都运行ruby v1.8.6-399:
# ruby -v ruby 1.8.6 (2010-02-05 patchlevel 399) [x86_64-linux]
Ruby来自ELFF回购:
# rpm -qi ruby Name : ruby Relocations: (not relocatable) Version : 1.8.6.399 Vendor: Bravenet ELFF <elff@bravenet.com> Release : 2.el5 Build Date: Fri Apr 16 18:53:48 2010 Install Date: Thu Mar 24 11:23:48 2011 Build Host: el-build.local Group : Development/Languages Source RPM: ruby-1.8.6.399-2.el5.src.rpm Size : 1738695 License: Ruby or GPLv2 Signature : DSA/SHA1,Fri Apr 16 19:07:49 2010,Key ID 551751dfe8b071d6 Packager : Bravenet ELFF <elff@bravenet.com>
我做了一点挖掘,可以看到当上帝试图加载Netlink事件处理程序时抛出的异常:
no such file to load -- netlink_handler_ext
我的服务器之间可能有什么不同?我错过了一些简单的事吗?
netlink_handler_ext是一个红宝石原生扩展,是上帝的一部分.看起来上帝无法加载这些原生扩展,因为它从未被编译过,并且gem从未正确安装,或者它没有被添加到它的加载路径中.
使用“gem env”来检查你的gem环境,你应该能够找到gem的安装位置,并手动检查是否存在原生扩展.