0

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?

2 Answers 2

4

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
2
  • 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, 2012 at 14:00
  • Incidentally, R.I. Pienaar wrote mcollective. :)
    – Rilindo
    May 9, 2012 at 1:01
0

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.

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .