CentOSに ruby と gem と chef をインストールする

ちょうどサーバの契約更新だったので、以前から気になっていた お名前.com VPS を借りてみました。まあ、それ自体はどうでもいいんですが、新しいサーバに環境をセットアップするにあたって chef を使いたいなと。

で、chef をつかうためには ruby が必要なので、いつものようにサクッとインストールしようとしたら意外に手間取ったので、これからやる人のために備忘録的なものをエントリー。

ruby をインストールする前の下準備

これから chef をつかいたいが為に ruby をインストールしていくのですが、ただ普通に ruby だけインストールすると肝心の chef をインストールするときにエラーが出たりします。

具体的には「no such file to load –zlib」とか「no such file to load –openssl」なんてエラー。

これはライブラリがないからロードできませんでしたエラーなので、ruby を入れる前に必要な物を揃えておきましょう。ついでに gcc も必要なので yum でサクッとインストールです。

ruby をインストール

下準備がおわったら ruby をインストールします。

このあと使いたい gem が yum で入手できる ruby のバージョンに対応していないので、公式サイトから最新版を入手してソースからコンパイルします。

ruby の公式ページに行って最新版をダウンロード。
https://www.ruby-lang.org/ja/downloads/

この時点では 2.1.2 が安定版だったのでこれを使います。

URLをコピペして wget で取得して展開。

つづけてコンパイル。

念のための動作確認。

OKです。

zlib と openssl を組み込む

ruby をソースからインストールして chef を入れようとすると引っかかる最大のポイントがココ。

コンパイルしてサクサクつぎに行ってしまうと、下準備のときに言っていた zlib や openssl まわりのエラーが出てしまうので、ちょっと寄り道をします。

ruby のソースディレクトリから zlib のライブラリをつくります。

つぎに同じくソースディレクトリから openssl のライブラリをつくります。
が、同じ流れで make してもエラーが……。

No rule to make target `/thread_native.h

バグなのかなんなのかわかりませんが、元々の Makefile に top_srcdir の記述が足りないので追記します。

その辺のもろもろを含めてこんな感じ。

sed の 「$(cd ../.. && pwd)」という部分は ruby のソースディレクトリを指定してあげればOKです。

これでようやく gem に入ります。

gem をインストール

最終目的が chef を入れることなので ruby に引き続き gem をインストールします。

こちらもソースからセットアップ。

rubygem の公式サイトに行って最新版をダウンロード。
https://rubygems.org/pages/download

rubygems_org_pages_download

この時点では 2.2.2 が最新版だったので URL をコピペしてゲットして展開。

そしてセットアップ。

とくに問題なく無く完了。

gem から chef をインストール

なかなか険しい道のりでしたがついにココまでたどり着きました。
メインイベントの chef をインストールです。

これだけ。
念のための動作確認。

あっけない。あまりにもあっけない。
これまでの面倒くささが嘘のようにサクッとインストール完了です。

こんな感じで紆余曲折ありますが、この流れでいけば概ね大丈夫だと思いますので chef をこれから使いたいという方はお試しあれ!

参考:
http://fujiiyuuki.blogspot.jp/2010/03/centosrails.html
http://ameblo.jp/nikatabushi/entry-11783310218.html