WindowsにCygwin+Ruby(rbenv)を入れてveeweeを使うための準備をする

最近流行のVagrant+ChefをWindowsでも試してみたいと思います。Vagrantは1.1からインストーラを使うようになったのでこれはそのまま入れます。

次にChefの動作環境を用意する前に、Vagrantで使うためのboxを作成するveeweeをインストールします。公開されているboxもいくつかありますが、それを使うのは若干不安があるのと、使わないもの(ruby+puppet+chef)を除いたboxを作るためです。

まずはveeweeを動かすためのベースとなるRubyをrbenvでインストールします。

Cygwinのインストール

WindowsでRubyを使う方法はいくつかありますが、Cygwinを入れて自前でビルドする方法にしました。恐らくかなり面倒くさい方法ですが、後々VagrantやChefを使う際にCygwinsshrsyncが使えるので便利です。

Cygwin+Ruby(rbenv)のインストールについては、このページが非常にわかりやすいのでこれをベースに進めるのが良いと思います。

Cygwin本体のインストール

上記ページに従ってsetup.exeをダウンロードして実行します。この時インストールするパッケージを選択することになるのですが、ここでは以下の2つのパッケージをインストールします。これは後でapt-cygを使う際に必要となる最低限のパッケージになります。

apt-cygのインストール

Cygwinにパッケージを追加する場合、毎回setup.exeを起動してダイアログからパッケージ選択することになり非常に面倒です。そこでapt-cygをインストールすることによって、yumやaptのようにコマンドラインからパッケージを追加できるようになります。

インストールはページに書いてある手順通りに行います。

$ svn --force export http://apt-cyg.googlecode.com/svn/trunk/ /bin/
$ chmod +x /bin/apt-cyg

これでコマンドラインからパッケージがインストールできるようになります。

$ apt-cyg install vim

Rubyのインストール

Rubyはコンパイル済みのものを使わずに、Cygwinでコンパイルしたものを使います。Cygwin環境へのRubyインストールはいろいろ罠がありました。

コンパイラのインストール

コンパイラgccパッケージをインストールすれば使えると思ったのですが、これだけではgccコマンドが使えませんでした。gcc4パッケージを追加することによって使えるようになりました。

$ apt-cyg install gcc gcc4

しかしこの状態ではgccコマンドが正常に動きませんでした。試しに適当なソースファイルをコンパイルしようとしたところエラーが出ました。

$ echo "int main() {return 0;}" >> test.c
$ gcc test.c
/usr/lib/gcc/i686-pc-cygwin/4.5.3/cc1.exe: error while loading shared libraries: cygmpfr-4.dll: cannot open shared object file: No such file or directory

調べたところ、"libmpfr4"パッケージを追加すれば良いと言うことが分かりました。

$ apt-cyg install libmpfr4

これでようやくgccが動作するようになりました。

ライブラリ・ツールのインストール

Rubyをビルドするために、このページに書いてあるライブラリとツールをインストールします。微妙にパッケージ名が違うものがあったので調整しました。

$ apt-cyg install git \
  make \
  patch \
  libncurses-devel \
  openssl-devel \
  readline \
  libsqlite3-devel \
  libxml2-devel \
  libxslt-devel

rbenvのインストール

rbenvは手順通りにインストールを行います。

$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile

ruby-buildのインストール

rbenvに対してビルド・インストール機能を追加するためのruby-buildプラグインをインストールします。これもページに書いてある手順通りに行います。

$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/rucby-build

Rubyのインストール

後はruby-buildの機能を使ってRubyをビルド・インストールします。

$ rbenv install --list
    :
    :
  1.9.3-p374
  1.9.3-p385
  1.9.3-p392
  1.9.3-preview1
  1.9.3-rc1
  2.0.0-dev
    :
    :

1.9.3-p392を入れることにします。Cygwinでビルドするとかなり遅いので気長に待ちます。

$ rbenv install 1.9.3-p392
$ rbenv rehash
$ rbenv global 1.9.3-p392
$ ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [i386-cygwin]

まずはRubyのインストールまで完了しました。次はここにveeweeを追加します。