Someone has run a
yum update on the CentOS box (
Linux 22.214.171.124-xxxx-std-ipv4-32 #2 SMP Fri Jan 30 09:55:02 UTC 2009 i686 i686 i386 GNU/Linux) that runs a Ruby on Rails app (Redmine) served with Passenger (
Phusion Passenger version 3.0.7). As a result the RoR app stopped working and this is what happens now.
My uderstanding is that the
yum update command updated the OpenSSL library, which is now at version
OpenSSL 0.9.8e-fips-rhel5 01 Jul 2008. I suppose this version is no longer compatible with the version of Ruby installed on the machine (
ruby 1.8.5 (2006-08-25) [i386-linux]). Indeed, if I do
require 'openssl' inside
irb, I get the following:
$ irb irb(main):001:0> require 'openssl' TypeError: Cipher is not a class from /usr/lib/ruby/site_ruby/1.8/openssl/cipher.rb:22 from /usr/lib/ruby/site_ruby/1.8/openssl.rb:20:in `require' from /usr/lib/ruby/site_ruby/1.8/openssl.rb:20 from (irb):1:in `require' from (irb):1
which is the same error as printed when accessing the application via HTTP.
I suspect that downgrading the OpenSSL version now is a risky business, since the
yum update command probably updated other packages (e.g. mod_ssl) that now rely on the new OpenSSL library.
I decided instead to check whether Ruby 1.8.7 would work better with the new OpenSSL version. I downloaded it, built it and
make install'ed it such that the Ruby binary resides in
/usr/local/bin/ alongside the system's Ruby (1.8.5) which is in
/usr/bin/ as usual. Doing a
require 'openssl' in irb shows that it indeed works.
Now, my question is as follow: should I remove my own built version of Ruby and rather update the system's Ruby to 1.8.7? Or should I somehow instruct Passenger to use the ruby binary that I built myself (the one in
Thanks for your help.