If, following a RedHat linux (EL5) update, your ruby is broken with a message such as this:
/usr/bin/ruby: symbol lookup error: /usr/local/lib/ruby/gems/1.9.1/gems/json-1.7.7/lib/json/ext/parser.so: undefined symbol: rb_intern2
have a look at your ruby path. RedHat puts the updated ruby executable in /usr/local/bin/ruby. You will probably need to do this:
# mv /usr/bin/ruby /usr/bin/ruby_old
# ln -s /usr/local/bin/ruby /usr/bin/ruby
Another problem that is commonly encountered is with the gem command after an update:
You get an error dump like this:
# gem list
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:82:in `rescue in rescue in': uninitialized constant Gem::ConfigFile::RbConfig (NameError)
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:64:in `rescue in'
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:60:in `'
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:36:in `'
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:9:in `require'
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:9:in `'
from /usr/local/bin/gem:9:in `require'
from /usr/local/bin/gem:9:in `'
The key here is the bit that says "Gem::ConfigFile::RbConfig (NameError)"
What this is telling you is that it cannot find the RbConfig class. This is a bug in the upgrade from 1.8 to 1.9. There is a line that needs to go into your gem command. Add this to your gem file:
require "rbconfig"
You can locate the gem command on Linux using this command:
which gem
Then simply vi the file and add the above line in.
/usr/bin/ruby: symbol lookup error: /usr/local/lib/ruby/gems/1.9.1/gems/json-1.7.7/lib/json/ext/parser.so: undefined symbol: rb_intern2
have a look at your ruby path. RedHat puts the updated ruby executable in /usr/local/bin/ruby. You will probably need to do this:
# mv /usr/bin/ruby /usr/bin/ruby_old
# ln -s /usr/local/bin/ruby /usr/bin/ruby
Another problem that is commonly encountered is with the gem command after an update:
You get an error dump like this:
# gem list
/usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:82:in `rescue in rescue in
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:64:in `rescue in
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:60:in `
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/config_file.rb:36:in `
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:9:in `require'
from /usr/local/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:9:in `
from /usr/local/bin/gem:9:in `require'
from /usr/local/bin/gem:9:in `
The key here is the bit that says "Gem::ConfigFile::RbConfig (NameError)"
What this is telling you is that it cannot find the RbConfig class. This is a bug in the upgrade from 1.8 to 1.9. There is a line that needs to go into your gem command. Add this to your gem file:
require "rbconfig"
You can locate the gem command on Linux using this command:
which gem
Then simply vi the file and add the above line in.
Thank you so much!
ReplyDeleteAdditional info: Place the require before other requires in the gem file.