Hatena::ブログ(Diary)

ドレッシングのような このページをアンテナに追加 RSSフィード

2009-12-03

Windows で使う Ruby を自分でビルドする方法

(id:mrknRuby Advent Calendar jp: 2009 を応援しています。この記事は3日目です。)

Windows で Ruby を使いたい人は自分でビルドしましょう。簡単です。

後述の準備が終わってない人は、先に準備編を読んでください。ビルド→インストール→テストの順に作業します。

Ruby のビルド

(1) svngit を使って trunk の先っぽを落としてください。以下では、ruby.git というディレクトリの中に Ruby のソースツリーが存在していることを前提とします。

> git clone http://github.com/shyouhei/ruby ruby.git

(2) ビルド用ディレクトリを作ります。ディレクトリ名は好きに決めてください。たとえば初恋の人の名前でもいいです。

> mkdir ruby.git/build-for-hiroko

(3) ビルド用ディレクトリの中に入ります。

> cd ruby.git/build-for-hiroko

(4) コンフィギューレします。

../win32/configure.bat --prefix=c:\opt\ruby --target=i686-mswin32 --with-ntver=0x501

--with-ntver オプションに注目です。このオプションで指定している16進法の値は、_WIN32_WINNT というプリプロセッサマクロの値として、ターゲット Windows のバージョンを指定するために使用されます *1

Windows の種類--with-ntver
Windows NT 4.00x400
Windows 20000x500
Windows XP0x501
Windows Server 20030x502
Windows Vista0x600
Windows Server 20080x600
Windows 70x601

(5) メイクします。

> nmake main

ターゲット main を省略すると、RDoc が動いてドキュメンテーションを生成してしまいます (べらぼうに遅いです)。

インストール

インストールは簡単です。

> nmake install-nodoc

"-nodoc" を付けないと、せっかく省略した RDoc の生成が動いてしまう気がします (エラーになった記憶もある)。

テスト

テストも簡単です。

> nmake test

エラーや失敗が出力されたときは IRCnet の #ruby:*.jp チャネル、もしくは redmine で報告しましょう。

準備編

準備は少しだけ大変です。

(i) Visual Studio 2008 Express Edition をインストールしてください。詳しくは Google で。

(ii) gnuwin32 の bison と sed をインストールしてください。

(iii) 標準添付ライブラリのうち、自分が使いそうな拡張ライブラリが依存しているライブラリを用意します。たとえば zlib、openssl、readline、ncurses (pdcurses)、gdbm などは gnuwin32 からコードを手に入れることができます。できるだけ Visual Studio 2008 Express Edition を用いて自分でビルドし、これからビルドする Ruby とセットで管理しましょう。

(2009.12.04 追記) よく考えると openssl は gnuwin32 の配布物ではないので嘘書いてましたw

(iv) tk を使いたい人は ActiveTcl をインストールしたらいいと思います。

最後に

上に出てきた hiroko さんは、今年の7末に元気な男の子を出産されました。僕は何年も前にフラれました。いい思い出です。

*1:このコンフィギューレ用オプションは、僕が困っているのを見かねた神様によって追加されました

なかむら(う)なかむら(う) 2009/12/03 22:24 いやあの、バグ報告はredmineを優先してくだちゃい。
あと、神様ならよかったんですが、--with-ntverを追加したのは単なる丁稚らしいです。

nursenurse 2009/12/04 12:12 openssl のビルドの仕方も欲しいな−。
もっと言えば、Redmine の Wiki に書いておいて欲しいなー

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close