CentOS 5.5

I'm facing with this problem when restarting mcollective:

# service mcollective restart
Shutting down mcollective: 
Starting mcollective: /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- stomp (LoadError)
    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
    from /usr/lib/ruby/site_ruby/1.8/mcollective.rb:2
    from /usr/sbin/mcollectived:3:in `require'
    from /usr/sbin/mcollectived:3

The STOMP protocol Ruby library is already installed:

# gem list stomp

*** LOCAL GEMS ***

stomp (1.2.2, 1.1.8)

I'm running ruby 1.8.7 with belows RubyGems environment:

# ruby -v
ruby 1.8.7 (2008-05-31 patchlevel 0) [x86_64-linux]
# gem env
RubyGems Environment:
  - RUBY VERSION: 1.8.7 (2008-05-31 patchlevel 0) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/bin
    - ruby
    - x86_64-linux
     - /usr/local/lib/ruby/gems/1.8
     - /root/.gem/ruby/1.8
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - http://rubygems.org/

As @R.I.Pienaar pointed out, I'm mixing up 2 Ruby versions: one was installed by yum and another was compiled from source.

I've uninstalled all binary ruby-* packages and the question should change to:

How to make MCollective find out the Ruby which was compiled from source (into /usr/local/bin)?:

# cd /usr/local/src/marionette-collective
# rake rpm
Building RPM for mcollective-2.0.0-1
which: no rpmbuild-md5 in (/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/bin:/opt/redis/bin)
error: Failed build dependencies:
    ruby is needed by mcollective-2.0.0-1.el5.noarch
    ruby(abi) = 1.8 is needed by mcollective-2.0.0-1.el5.noarch
rake aborted!
Failed: rpmbuild -D 'version 2.0.0' -D 'rpm_release 1' -D 'dist .el5' -D 'use_lsb 0' -ba /usr/src/redhat/SPECS/mcollective.spec
/usr/local/src/marionette-collective/Rakefile:35:in `safe_system'
(See full trace by running task with --trace)

or how to compile MCollective from source?


Looks like you have 2 rubies or some missconfiguration on your system,

mcollective is using the system ruby which is in /usr/lib/ruby/*

Starting mcollective: /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- stomp (LoadError)

While your gems are installing into /usr/local/*

  - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/1.8
  • Thanks. How can I make the MCollective found out the Ruby which was compiled from source (into /usr/local/bin)? Updated my question. – quanta May 7 '12 at 14:00
  • Incidentally, R.I. Pienaar wrote mcollective. :) – Rilindo May 9 '12 at 1:01

You are trying to building a RPM packages off from a .spec file that requires that the ruby package be installed. Since you compiled ruby from scratch, that will be a problem.

So you solution is to create or find a spec file for ruby and build a ruby binary package off based off that spec. Here is mine, for example (which I forked from 1.9.2):


Once the binary package is built, reinstall ruby with that package, remove/disable the current ruby install that you compiled manually, then build mcollective package from the .spec file.

  • Thanks. I installed Ruby 1.8.7 binary package from the RBEL repo and now it works fine. – quanta May 13 '12 at 4:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.