[chef] Re: knife bootstrap alter gem path


Chronological Thread 
  • From: Bryan McLellan < >
  • To:
  • Cc:
  • Subject: [chef] Re: knife bootstrap alter gem path
  • Date: Wed, 23 Nov 2011 12:50:30 -0500

On Wed, Nov 23, 2011 at 11:39 AM, Benoit Caron 
< >
 wrote:
> Comparing the config of my two servers, I see that my original VM had :
>   - GEM PATHS:
>      - /var/lib/gems/1.8
>      - /home/ubuntu/.gem/ruby/1.8
> and my chef-ized now have:
>   - GEM PATHS:
>      - /usr/lib/ruby/gems/1.8
>      - /home/ubuntu/.gem/ruby/1.8
>  So:
> - Why is Chef altering the gem path?
> - Gem newbie question: How can I fix this? What is the "correct" way to
> manage this system-wide? Adding a GEM_PATH environment variable in
> /etc/profile? Or is there a better way?

From the paths, I presume you're using Ubuntu which relies heavily on
packages from the Debian project which adheres pretty strictly to its
collective interpretation of the Filesystem Hierarchy Standard (FHS).
The FHS specifies that /usr should be able to be mounted read-only and
shared to network clients. The version of Rubygems that ships with
Debian and Ubuntu install to /var as it is debian policy that all
files under /usr be managed by a debian package; as rubygems installs
additional files (the gems) outside of the packaging, it is moved to
/var [1]. This is the cause for the disputed location of binaries in
/var/lib/gems/1.8/bin [2], although in Wheezy and later,
/usr/local/bin will be used.

Historically the versions of Rubygems shipped with Debian and Ubuntu
were too old and had too many bugs for reliable use with Chef, so
we've recommended installing Rubygems from source. The default knife
bootstrap template installs Rubygems from source [3], which defaults
to installing in /usr/lib.

The "correct" installation method becomes a matter of preference. If
you prefer debian packages, you could modify a bootstrap template from
the one included for installing on Ubuntu 10.04 (Lucid) using our apt
repository [4]. You can create custom bootstrap templates and specify
them to the knife bootstrap command using the '-d DISTRO' flag.
Additional information on where to locate these files is available on
the wiki:

http://wiki.opscode.com/display/chef/Knife+Bootstrap

Bryan

[1] http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=448639
[2] http://lists.debian.org/debian-ruby/2011/05/msg00104.html
[3] 
https://github.com/opscode/chef/blob/master/chef/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb
[4] 
https://github.com/opscode/chef/blob/master/chef/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb



Archive powered by MHonArc 2.6.16.

§