RVMをインストールするとchefが"Could not find chef"となってしまう場合の対処方法
chefがOmnibus Installationで/opt/chef/配下に組み込みRubyと一緒にインストールされている環境にて、別途RVMのRubyを入れると、以下のようなエラーが表示されて動作しなくなりました。
# chef-solo -c /var/chef/config/solo.rb -j /var/chef/nodes/devel.localdomain.json
/opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find chef (>= 0) amongst [bundler-1.3.5, bundler-unload-1.0.1, rake-10.1.0, rubygems-bundler-1.2.0, rvm-1.11.3.8] (Gem::LoadError)
from /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
from /opt/chef/bin/chef-solo:22:in `<main>'
そんでちょっと調べてみたら、公式サイトにもこの現象について書かれています。
http://wiki.opscode.com/display/chef/Installing+Omnibus+Chef+Client+on+Linux+and+Mac
OmnibusのGemよりRVMのGemを先に探しに行くらしいのでエラーになるらしい。
対処法ですが、sudoかsudo -sを使って実行すれば、/etc/profile.d/rvm.shをロードしなくなるのでRVMの影響をさけることができ、Omunibusの閉じた環境で実行してくれます。
# sudo chef-solo -c /var/chef/config/solo.rb -j /var/chef/nodes/devel.localdomain.json
現在のログインユーザがrootでもsudoするのがミソです。
RVMでRuby2.0をCentOS6にインストールする
Ruby2.0のインストールなのですが、最初はcheckinstallでソースからRPM化しようとしてみたものの、いろいろ無理があったりうまく行かなかったりしたので見送り。rvmを使います。
rvm公式サイト
ユーザごとの独立した環境
最近はユーザのHOMEディレクトリ配下の独立した環境にインストールするのが流行りらしいです。 個人的には一人でサーバー管理やっていて、常時rootユーザでオペレーションしている身なので、システム(/usr/local配下)にインストールするのがいつものスタイルです。ですが、ここでは推奨される方法にしたがってみます。
依存パッケージのインストール
epelリポジトリを入れておく(いくつかの依存パッケージが標準のリポジトリにないため)
# wget http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
依存パッケージをインストール
# yum install gcc-c++ patch readline readline-devel
# yum install zlib zlib-devel libffi-devel
# yum install openssl-devel make bzip2 autoconf automake libtool bison
# yum install gdbm-devel tcl-devel tk-devel
# yum install libxslt-devel libxml2-devel
# yum install --enablerepo=epel libyaml-devel
rvmをインストール
以下のコマンドを叩く。
$ curl -L https://get.rvm.io | bash -s stable
ちなみにシステム(/usr/local配下)にインストールするときはrootユーザで作業するか、以下のようにsudoで実行します。
$ curl -L https://get.rvm.io | sudo bash -s stable
rvmのパスを設定するための記述が以下のファイルに追記されるので、確認しておく
$ vim .bash_profile
$ vim .bashrc
再ログインしてbash_profileと.bashrcの変更をロードする。
rvmの確認
バージョン確認
$ rvm -v
対応しているRubyの一覧
$ rvm list known
Ruby2.0.0をインストール
以下のコマンドを叩く。
$ rvm install 2.0.0
RubyGemsのインストールでエラーが出力される
Extracting rubygems-2.0.3 ...
Removing old Rubygems files...
Installing rubygems-2.0.3 for ruby-2.0.0-p0.............................................................................................................................
Error running 'env GEM_PATH=/home/kohkimakimoto/.rvm/gems/ruby-2.0.0-p0:/home/kohkimakimoto/.rvm/gems/ruby-2.0.0-p0@global:/home/kohkimakimoto/.rvm/gems/ruby-2.0.0-p0:/home/kohkimakimoto/.rvm/gems/ruby-2.0.0-p0@global GEM_HOME=/home/kohkimakimoto/.rvm/gems/ruby-2.0.0-p0 /home/kohkimakimoto/.rvm/rubies/ruby-2.0.0-p0/bin/ruby -d /home/kohkimakimoto/.rvm/src/rubygems-2.0.3/setup.rb --verbose',
please read /home/kohkimakimoto/.rvm/log/ruby-2.0.0-p0/rubygems.install.log
Installation of rubygems did not complete successfully.
が、害はないらしいので、よしとする。以下参考サイト
バージョン確認しておしまい。
$ ruby -v
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux]