開発メモ

開発関係のメモをいろいろと。たぶん。

Rubyの開発環境を構築【Windows編】

Rubyの開発環境を構築した話。今回はWindows編。

せっかくなので、Cygwin環境でrbenvを使ってみる。

Cygwin環境を作成

Cygwinのインストール

Cygwinのサイトから、setup.exeをダウンロードして実行。

Cygwin
http://www.cygwin.com/

基本的に、標準の設定のままでどんどん進める。

f:id:see_ku:20130604094009p:plain

ダウンロードサイトの選択は、何となく近そうな.jpのサイトを選択。

f:id:see_ku:20130604094029p:plain

パッケージの選択では、以下の項目を選択しておく。

あとは、必要なパッケージがインストールされるのを待つだけ。

なぜか、「キーボード履歴ユーティリティは動作を停止しました」なんて出るけどスルーで。

f:id:see_ku:20130604094100p:plain

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/

情報元

WindowsCygwin+Ruby(rbenv)を入れてveeweeを使うための準備をする - トカゲの独り言
http://lizy.hatenablog.com/entry/2013/04/16/095129

Cygwin
http://www.cygwin.com/

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