Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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

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?

share|improve this question
up vote 4 down vote accepted

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
share|improve this answer
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
Thanks, this steered me in the right direction – Andrew Mar 1 at 10:41

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.

share|improve this answer
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 posting your answer, you agree to the privacy policy and terms of service.

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