Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

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
                                                           [FAILED]

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:
  - RUBYGEMS VERSION: 1.3.7
  - 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
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/local/lib/ruby/gems/1.8
     - /root/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - 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?

share|improve this question
add comment

2 Answers

up vote 3 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
add comment

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):

https://github.com/rilindo/ruby-1.9.3-rpm

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
add comment

Your Answer

 
discard

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.