Rubyの開発環境を構築【Windows編】
せっかくなので、Cygwin環境でrbenvを使ってみる。
Cygwin環境を作成
Cygwinのインストール
Cygwinのサイトから、setup.exeをダウンロードして実行。
基本的に、標準の設定のままでどんどん進める。
ダウンロードサイトの選択は、何となく近そうな.jpのサイトを選択。
パッケージの選択では、以下の項目を選択しておく。
- subversion(Develの中)
- wget(Webのなか)
あとは、必要なパッケージがインストールされるのを待つだけ。
なぜか、「キーボード履歴ユーティリティは動作を停止しました」なんて出るけどスルーで。
apt-cygのインストール
Cygwinのsetup.exeで必要なパッケージをインストールするのは果てしなく面倒なので、apt-cygをインストールしてコマンドラインからパッケージを設定できるようにする。
$ svn --force export http://apt-cyg.googlecode.com/svn/trunk/ /bin/
$ chmod +x /bin/apt-cyg
これで、とりあえずCygwinの環境は出来たはず。こんな感じで実験。
$ apt-cyg install nano
$ nano
必要なパッケージのインストール
Rubyのインストールに必要になるパッケージを、あらかじめ準備しておく。
$ apt-cyg install gcc gcc4
$ apt-cyg install make patch git
$ apt-cyg install libncurses-devel openssl-devel readline
$ apt-cyg install libsqlite3-devel libxml2-devel libxslt-devel
rbenvをインストール
あとは、CentOSの時とほとんど同じ。
本体とプラグインをインストール
$ git clone git://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/rucby-build
環境変数を設定
rbenvを入れた場所にPATHを通して、rbenvの初期化処理も入れておく。
「~/.bashrc」に以下の行を追加。
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
ログイン仕直して、rbenvが使えることを確認しておく。
$ rbenv --version
rbenv 0.4.0-45-g060f141
Rubyのインストール
インストール
rbenvで使えるRubyの一覧を確認。
$ rbenv install -l
あえて、「1.9.3-p429」をインストール。
$ rbenv install 1.9.3-p429
$ rbenv rehash
Rubyをインストールしたら、「rbenv rehash」が必要。gemをインストールしたときや、bundleを実行したときも必要なはず。たぶん。
しかし、Rubyのインストール中に経過が何も表示されないのは不安だな。
動作確認
rbenvで使えるRubyの一覧を確認。
$ rbenv versions
* system (set by /home/[ユーザー名]/.rbenv/version)
1.9.3-p429
Rubyを切り替え。
$ rbenv global 1.9.3-p429
Rubyのバージョンを確認。
$ ruby -v
ruby 1.9.3p429 (2013-05-15 revision 40747) [i386-cygwin]
あとは、同じ要領で必要なバージョンのRubyをインストールしておくだけ。
Ruby 2.0系統のインストール
rbenvからのインストールでエラー
CygwinのrbenvからRuby 2.0系統をインストールしようとしすると、エラーが発生してインストールできない。
こんな感じ。
$ rbenv install 2.0.0-p195
Downloading ruby-2.0.0-p195.tar.gz...
-> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz
Installing ruby-2.0.0-p195...
BUILD FAILED
Inspect or clean up the working tree at /tmp/ruby-build.20130603111006.5816
Results logged to /tmp/ruby-build.20130603111006.5816.log
Last 10 log lines:
In file included from ./include/ruby/ruby.h:1567:0,
from process.c:14:
./include/ruby/intern.h:412:1: 警告: ‘struct timeval’ declared inside parameter list
./include/ruby/intern.h:413:79: 警告: ‘struct timeval’ declared inside parameter list
./include/ruby/intern.h:414:32: 警告: ‘struct timeval’ declared inside parameter list
process.c: In function ‘rb_f_sleep’:
process.c:4105:2: error: 正式な仮引数 1 の型が不完全です
Makefile:325: recipe for target `process.o' failed
make: *** [process.o] Error 1
make: *** 未完了のジョブを待っています....
ソースコードを手直し
仕方がないので、手動でコンパイルしてrbenvで使えるようにする。
$ wget ftp://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p195.tar.gz
$ tar zxvf ruby-2.0.0-p195.tar.gz
$ cd ruby-2.0.0-p195
このタイミングでソースコードを修正。「include/ruby/intern.h」を以下のように修正する。
・修正前(該当する箇所のみ)
#if defined(HAVE_SYS_TYPES_H) #include <sys/types.h> #endif #include "ruby/st.h"
・修正後(該当する箇所のみ)
#if defined(HAVE_SYS_TYPES_H) #include <sys/types.h> #endif #include <sys/time.h> #include "ruby/st.h"
「#include <sys/time.h>」を追加しただけ。
手動でインストール
インストール先をrbenvの管理先にするのがポイント。たぶん。
$ ./configure --prefix="$HOME/.rbenv/versions/2.0.0-p195"
$ make
$ make install
$ rbenv rehash
rbenvで使えるRubyの一覧を確認。
$ rbenv versions
* system (set by /home/[ユーザー名]/.rbenv/version)
1.9.3-p429
2.0.0-p195
Rubyを切り替えてバージョンを確認。
$ rbenv global 2.0.0-p195
$ ruby -v
ruby 2.0.0p195 (2013-05-14 revision 40734) [i386-cygwin]
結論
わざわざ、Cygwin入れてRubyの環境を作るぐらいなら、RubyInstallerで普通にインストールした方が楽だな。圧倒的に。
RubyInstaller for Windows
http://rubyinstaller.org/
情報元
WindowsにCygwin+Ruby(rbenv)を入れてveeweeを使うための準備をする - トカゲの独り言
http://lizy.hatenablog.com/entry/2013/04/16/095129
Rubyのスナップショットをビルド―2.1.0dev & 2.0.0対応― - わさっき
http://d.hatena.ne.jp/takehikom/20130516/1363359600
自分でコンパイルしたRubyをrbenvで管理する(Mac OS X) #Mac #Ruby #rbenv - Qiita [キータ]
http://qiita.com/items/1f6b396a26984ba2c0b6