Stompserver not installed by running bootstrap-0.7.8


#1

I’m installing chef on a centos 5.3 system but I am NOT using
packages for anything ruby related.

When I got to this step:

sudo chef-solo -c solo.rb -j chef.json -r
http://s3.amazonaws.com/chef-solo/bootstrap-0.7.8.tar.gz

it made it through installing and starting couchdb but dies here:

[Fri, 21 Aug 2009 13:20:42 -0400] ERROR: gem_package[stompserver]
(/usr/local/lib/ruby/gems/1.8/gems/chef-0.7.8/lib/chef/recipe.rb line
191) had an error:
No such file or directory - gem list --local stompserver

FYI: here’s the full trace and the gems installed,

I just started looking at the code and here’s the default recipe for
stompserver from bootstrap-0.7.8

if platform?(“centos”,“redhat”) and dist_only?
package “rubygem-stompserver”

 service "stompserver" do
   supports [ :restart, :reload, :status ]
   action [ :enable, :start ]
 end

 return

end

include_recipe “runit”

gem_package “stompserver” do
action :install
end

runit_service “stompserver”

Is the problem related to the fact that I am NOT using packages to
install ruby and gems?

If so is there a way to run this so chef uses Ruby to install gems?

Here’s how I setup the system:

After getting git, ruby, and rubygems working I did this:

sudo gem sources -a http://gems.github.com
sudo gem source -a http://gems.opscode.com/

sudo gem install rake rspec cucumber webrat merb-core roman-merb_cucumber
sudo gem install mixlib-config mixlib-log mixlib-cli
sudo gem install ohai chef merb-slices

cat ~/solo.rb
file_cache_path "/tmp/chef-solo"
cookbook_path “/tmp/chef-solo/cookbooks”

cat ~/chef.json
{ “recipes”: “chef::server” }

sudo chef-solo -c solo.rb -j chef.json -r
http://s3.amazonaws.com/chef-solo/bootstrap-0.7.8.tar.gz


#2

At 6:53 PM -0400 8/21/09, Stephen Bannasch wrote:

I’m installing chef on a centos 5.3 system but I am NOT using
packages for anything ruby related.

When I got to this step:

sudo chef-solo -c solo.rb -j chef.json -r
http://s3.amazonaws.com/chef-solo/bootstrap-0.7.8.tar.gz

it made it through installing and starting couchdb but dies here:

[Fri, 21 Aug 2009 13:20:42 -0400] ERROR: gem_package[stompserver]
(/usr/local/lib/ruby/gems/1.8/gems/chef-0.7.8/lib/chef/recipe.rb
line 191) had an error:
No such file or directory - gem list --local stompserver

Turns out dist_only? was false when running the stompserver recipe so
… that recipe at least was trying to install using rubygems.

The problem was the root user as accessed through sudo doesn’t have
access to the Ruby I installed here: /usr/local/bin/ruby

After installing g++, modifying /etc/profile and getting a root shell
with sudo -i then running this got a bunch further:

sudo chef-solo -c solo.rb -j chef.json

(using the cookbook already downloaded into /tmp)

But … more problems

Later on the passenger_apache2 recipe installed the package versions
of ruby and friends instead of with rubygems:

[Fri, 21 Aug 2009 18:11:54 -0400] INFO: Installing package[ruby]
version 1.8.6.287-2.el5
[Fri, 21 Aug 2009 18:12:06 -0400] INFO: Installing
package[ruby-devel] version 1.8.6.287-2.el5
[Fri, 21 Aug 2009 18:12:12 -0400] INFO: Installing
package[ruby-docs] version 1.8.6.287-2.el5
[Fri, 21 Aug 2009 18:12:20 -0400] INFO: Installing package[ruby-ri]
version 1.8.6.287-2.el5
[Fri, 21 Aug 2009 18:12:35 -0400] INFO: Installing
package[ruby-mode] version 1.8.6.287-2.el5
[Fri, 21 Aug 2009 18:12:40 -0400] INFO: Installing
gem_package[passenger] version 2.2.4

So I’ll need to modify that recipe to install from gems because
having two system Ruby’s doesn’t make sense.

The next problem was presented by the passenger gem – there were
missing apache2 dependencies:

Some required software is not installed.
But don’t worry, this installer will tell you how to install them.

Press Enter to continue, or Ctrl-C to abort.

Installation instructions for required software

* To install Apache 2 development headers:
  Please run yum install httpd-devel as root.

* To install Apache Portable Runtime (APR) development headers:
  Please run yum install apr-devel as root.

* To install Apache Portable Runtime Utility (APU) development headers:
  Please download it from http://httpd.apache.org/
  (APR Utility is an integrated part of Apache.)

I’d assume that the apache2 recipe would have installed (or
delegated) those tasks.

This is a bit confusing because on this page:

http://wiki.opscode.com/display/chef/Installation+on+RHEL+and+CentOS+5+with+RPMs
step #4

states: “Uninstall the httpd package if it exists”

But now passenger is telling me I need to: “yum install httpd-devel apr-devel”

OK: sudo yum install httpd-dev

And try his again:

chef-solo -c solo.rb -j chef.json

Now rubygems can’t find the chef-server gem

ERROR: gem_package[chef-server]
(/usr/local/lib/ruby/gems/1.8/gems/chef-0.7.8/lib/chef/recipe.rb line
191) had an error:
gem install chef-server -q --no-rdoc --no-ri -v 0.7.8 returned 2, expected 0
---- Begin output of gem install chef-server -q --no-rdoc --no-ri
-v 0.7.8 ----
STDOUT: STDERR: ERROR: could not find gem chef-server locally or
in a repository

I had already added both github and opscode as gem repos with sudo
… but they aren’t there when logged in with sudo -i on centos:

Fri Aug 21 - 07:44 PM # gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.5
- RUBY VERSION: 1.8.6 (2009-08-05 patchlevel 384) [i686-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-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://gems.rubyforge.org/

This makes the gems available:

gem sources -a http://gems.github.com
gem source -a http://gems.opscode.com/

Now rubygems can find the other chef gems:

Fri Aug 21 - 07:47 PM # gem list chef-server -r

*** REMOTE GEMS ***

chef-server (0.7.8)
chef-server-slice (0.7.8)

Hey!!!

[Fri, 21 Aug 2009 19:52:23 -0400] INFO: Chef Run complete in
38.561518 seconds

Well, that took a while :wink: