Windows にいろんな Ruby をインストール(MatzRuby, IronRuby, JRuby, Topaz, mruby)

Ruby には本家 Ruby だけでなく、いろいろな処理系があります。
今回はそれらの Windows へのインストール方法について紹介します。 また、各処理系での gem (パッケージ管理ツール)についても簡単に触れています。

  1. MatzRuby (本家 Ruby)
  2. IronRuby (.NET Framework)
  3. JRuby (JVM 言語)
  4. Topaz (Ruby の PyPy 実装)
  5. mruby (組み込みシステム向け軽量 Ruby)
IronRuby, JRuby, Topaz はそれぞれ .NET 、 JVM 、 PyPy 上で動作する ruby です。 これらを良く知らないという方は以前の記事をご覧ください。

MatzRuby (本家 Ruby)

公式の Ruby 処理系です。
他の処理系と区別するため、 MRI(Matz' Ruby Implementation), MatzRuby, CRuby などと呼ばれることもあります。

インストール

Windows 用のインストーラーが用意されているので、簡単にインストールできます。


まず、以下のサイトからインストールしたいバージョンをダウンロードします。
ダウンロードしたrubyinstaller-X.X.X-pXXX.msi ファイルを実行します。

インストールウィザードの最初にセットアップ時の言語を選ぶことができ、日本語にも対応しています。
ruby_install_ruby_wlang.png

インストール先の変更もできます。
オプションにチェックを入れると環境変数 PATH の設定もインストーラーが行ってくれます。
ruby_install_ruby_wopt.png

後はそのままウィザードに従っていけば、インストールは完了します。

インストールすると bin フォルダーに以下の exe ファイルができています。
実行ファイル 説明
ruby.exe 通常版
rubyw.exe GUI スクリプト用
irb 対話モード用

通常使う exe は ruby.exe です。
~ $ ruby -v
ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
では rubyw.exe は何かというと ruby で GUI アプリを作った場合に使う実行ファイルです。 GUI アプリを起動するときにコンソール画面を出さないようにするために用意されています。

gem (RubyGems)

gem は Ruby のパッケージ管理ツールで、ライブラリーなどを追加したいといった時に使います。
ネット上からパッケージ(gem)を取ってきて、インストールします。 そのパッケージが依存しているパッケージもあれば、それらも一緒に入れてくれます。

パッケージのインストールは以下のように行います。
  gem instal GEM名 [オプション]
  (例) $ gem install rails -v "= 1.4.1"
バージョンは -v で指定できます。 何も指定しない場合は最新版がインストールされます。
更新、 削除の場合は install ではなく update, uninstall をそれぞれ指定します。

その他、次のようなコマンドも覚えておくと良いかもしれません。
コマンド 説明
gem help [コマンド名] ヘルプ
gem list インストール済みパッケージの一覧を表示
gem list -d GEM名 インストールしたパッケージの詳細情報表示
gem update --system RubyGems 自身を最新版にアップデートする

なお、 プロキシー経由でないと外部にアクセスできない場合には環境変数 http_proxy でプロキシーサーバーとポート番号を指定しておきます。
プロキシーサーバー:ポート番号
(例) foo.bar.co.jp:8080


どんな gem パッケージが利用できるかは gem list -r で見れます。
しかし、大量に出て来るので、 Web 上見つけてからインストールすることが多いです。 以下のサイトなどで探すことができます。 ただし、 C/C++ の拡張ライブラリーを使っている gem パッケージの場合には DevKit が必要になります。 DevKit のインストールについては以下の記事をご覧ください。

Bundler

RubyGems は依存している必須のものをインストールするので、 オプション機能やテスト機能で使うパッケージの選択といったことができません。
そこで、 Ruby で作ったアプリケーションなどでは Bundler という gem を更に管理するツールを使うのが主流になって来ています。

gem の練習がてら Bundler もインストールしておきましょう。
なお、使う前は Bundler が古いと動かないことがあるので、使う前には update もしておいた方がいいと思います。
~ $ gem install bundler
~ $ gem update bundler
使い方はアプリケーションにもよりますが、基本的にソースをダウンロード、展開して、 Gemfile ファイルがあるフォルダーで次のようなコマンドを実行します。
d:/redmine/redmine-2.3.0 $ bundle install
d:/redmine/redmine-2.3.0 $ bundle install --without development test
インストールしない機能は --without オプションで指定します。
どのような機能が指定できるのかは各 Gemfile の中身で確認して下さい。

IronRuby (.NET Framework)

IronRuby は .NET Framework 上で動作する Ruby です。
Ruby のソースコードを事前にコンパイルして使う Ruby.NET もあったのですが、 .NET では IronRuby というのが最近の流れのみたいです。

インストール

ダウンロードページからIronRuby.msi のインストーラーをダウンロードします。
IronRuby の 1.0 系が Ruby の 1.8 系で、 1.1 系が Ruby の 1.9 系としているようです。
ダウンロード後、インストーラーを実行するとインストールが完了し、 PATH の登録もインストーラーが行ってくれます。

ウィザードに従っていけば問題ないと思いますが、変更するとしたら、インストール先をかえるか、 Silver Light や Visual Studio 用のモジュールを外すくらいでしょう。
ruby_install_ir_w.png

インストールすると bin フォルダーに ir.exe ができています。 これが IronRuby の実行ファイルです。
~ $ ir -v
IronRuby 1.1.3.0 on .NET 4.0.30319.18052

igem

IronRuby 用の RubyGems である igem もあります。使い方は基本的に gem と同じです。


ただし、そのまま igem を使うと次のようなエラーが発生します。(Ver. 1.1.3)
~ $ igem install json_pure
ERROR:  While executing gem ... (NoMethodError)
    undefined method `set_params' for #<OpenSSL::SSL::SSLContext:0x00001a8>
OpenSSL のライブラリーを使っているところでエラーが発生しているようなので、 設定で一旦 SSL のチェックをしないようにします。

~(環境変数 HOME で指定したフォルダー) の直下にある .gemrc ファイルに以下の記述を追加します。 (なければ作成)

~/.gemrc :
:ssl_verify_mode: 0
これで igem が使えるようになりますが、 SSL のチェックをしないのはお勧めできない状態です。
OpenSSL のライブラリー(rubysl-openssl)をインストールした後、追加した行を削除します。 削除後も OpenSSL のエラーはでないようになっています。
 ~ $ igem install rubysl-openssl
また、ライブラリーではなく、実行ファイルのような gem の場合は管理者として実行する必要があるようです。

JRuby (JVM 言語)

JRuby は JVM 上で動作する Ruby です。
IronRuby とは違い、 JRuby だけで 3 つのモードがあります。
  • 事前コンパイル
  • ソースコードを直接実行
    • JIT コンパイルモード
    • インタープリターモード
なにが違うかというと "速さ" です。 インタープリターモードよりも JIT コンパイルした方が速く、 また、手間は増えますが、事前コンパイルするとさらに速くなります。

インストール

JRuby をつかうためにはまず JDK をインストールしておく必要があります。 JRE だけでも動作しそうなのですが、 JRuby プロジェクトのインストール方法のページにはそう書いてあるので、 一応インストールして JAVA_HOME の環境変数も設定しておきます。

JDK のインストール方法については以前の記事をご覧ください。 JDK や JRE といった用語の説明も行っています。 ダウンロードは JRuby のダウンロードページから JRE 無し版のインストーラーを選んでください。 ダウンロード後、インストーラーを実行するとインストールが完了します。
PATH の登録もオプションのチェックを入れたままであれば、インストーラーが行います。
ruby_install_jruby_w.png

インストールすると bin フォルダーに jruby.exe ができています。 これが JRuby の実行ファイルです。
また、 JRuby 用の RubyGems である jgem.bat もあります。 こちらも使い方は gem と同じです。

ただし、 bin フォルダーの中には gem.bat もあります。 本家 Ruby と共存させる場合には、 PATH で JRuby のフォルダーが後にくるよう変更するか、 gem.bat を別名に変更してください。

jruby

デフォルトでは JIT コンパイルモードで動作します。通常これで問題ないと思います。


インタープリターモードなどの最適化動作を変更したい場合はオプションで指定します。 このオプション指定については以下ページに詳しい説明があります。 事前コンパイルする場合は jrubyc のコマンドを使います。 こちらは以下のサイトが参考になるのではないかと思います。
また、 現在 の JRuby (Ver. 1.7.4) は本家 1.9.3 互換で動作します。 オプションで 1.8 系として動作させることもできます。
 ~ $ jruby -v
 jruby 1.7.4 (1.9.3p392) 2013-05-16 2390d3b on Java HotSpot(TM) Client VM 1.7.0_21-b11 [Windows 7-x86]
 ~ $ jruby -v --1.8
 jruby 1.7.4 (ruby-1.8.7p370) 2013-05-16 2390d3b on Java HotSpot(TM) Client VM 1.7.0_21-b11 [Windows 7-x86]

jgem

jgem は gem と同じように使えます。
~ $ jgem install mirah

ただし、 jgem 自身のアップデート(update --system)を実行すると次のようなエラーが発生することがあります。
RubyGems system software updated
'inNT' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
この場合、カレントフォルダーを jruby.exe のあるフォルダーにして実行すると、 エラーは残っているみたいですが、一応インストールは最後まで終わります。
c:\>where jgem
c:\jruby-1.7.4\bin\jgem
c:\jruby-1.7.4\bin\jgem.bat

c:\>cd c:\jruby-1.7.4\bin

c:\jruby-1.7.4\bin>jgem update --system

Topaz (Ruby の PyPy 実装)

PyPy という JIT コンパイルできる Python の処理系があります。この PyPy は Python (正確には RPython) で実装された Python で、 他の言語処理系の基盤としても使えます。
で、 実際に RPython で実装された Ruby が Topaz です。

Topaz はまだまだ開発段階ですが、インストールも簡単ですし、ちょっと試すのにはいいのではないかと思います。
なお、互換としては本家 Ruby の 1.9.3 が対象となっています。
インストールは、まず Topaz の Nightly ビルドのページから windows32 のファイル (topaz-windows32-XXXXXXXX.tar.bz2)をダウンロードし、適当なフォルダーに展開します。 展開したフォルダー内の bin の中にある topaz.exe が実行ファイルです。 Topaz 用の gem コマンドはまだないようです。
 d:/usr/topaz/bin $ ./topaz.exe -v
 topaz (ruby-1.9.3p125) (git rev 42c875e) [i686-windows]
よく使うという場合は bin フォルダーを PATH に追加するとパス指定なしで起動できます。

mruby (組み込みシステム向け軽量 Ruby)

mruby は組み込みシステム向けの軽量 Ruby です。
組み込みシステム向けですが、 Windows でも動作することができ、 アプリケーションへの組み込みにも向いています。 JVM 、 .NET のアプリへの組み込みには、 JRuby や IronRuby がいいと思いますが、 Native な C, C++ アプリへの組み込みにはいいのではないかと思います。
とはいえ、いきなり組み込みというのは大変でしょう。 今回はお試しでちょっと動かしてみるということでインストールします。
ただ、インストールいってもバイナリーファイルが公開されているわけではないので、自分でビルドする必要があります。 ここでは Visual Studio を使ったビルドを紹介します。 ちなみに mruby には Mrbgems という gem 風の機能があります。
こちらはライブラリーをインストールするのではなく、ビルド時に機能モジュールを追加して実行ファイルを作成します。詳しくは mruby の Readme.md ファイルを見てください。

必要プログラムのインストール

Visual Studio
VS2010 または VS2012 が必要となります。
gcc を使う場合は Cygwin や Mingw などになると思います。

本家 Ruby
最初の章を参考にインストールしておいて下さい。

Windows 版 Bison
以下のページからインストーラーをダウンロードします。 インストーラーを実行します。この時インストール先はスペースを含まないようにする必要があります。 デフォルトは "C:\Program Files\..." となっているので、変更しておきます。
ruby_install_mruby_bison_w.png

PATH の設定まではおこわないので、 手動でインストール先の bin フォルダーを PATH に追加します。

ダウンロード

mruby の GitHub のページからソースコードをダウンロードします。
とくにリビジョン(バージョン)は切られていないようなので、最新版を zip で取得し、任意の場所に展開します。

ビルド

デフォルトの設定では ToolChain(制作に使うツールの集合)が gcc に設定されています。
そこで build_config.rb ファイルのツールチェインの記述を :vs2010に変更します。
 MRuby::Build.new do |conf|
   # load specific toolchain settings
   toolchain :gcc   # <= ここを :vs2010 に変更
Visual Studio 2012 の場合は :vs2012 です。利用可能なツールチェインについては以下のページで確認できます。 展開したフォルダー上で次のコマンドを実行します。
 d:/src/mruby-master $ ruby ./minirake
自分の環境では設定済みなので確認していませんが、 VS のコンパイラーの PATH の設定が必要かもしれません。 上手くいかない場合は以前の記事を見てください。 ビルドが完了すると bin フォルダーに mruby.exe が作成されます。
 d:/src/mruby-master/bin $ ./mruby.exe --version
 mruby - Embeddable Ruby  Copyright (c) 2010-2013 mruby developers

その他

その他の Ruby 処理系としては LLVM を使った MacRuby や Rubius なども有名です。
しかし、 MacRuby は Mac 用ですし、 Rubius の Windows 版はまだ安定板がリリースされておらずビルドも必要なため、今回は記述していません。

また、 Ruby っぽいというだけでよければ他にもいろいろあります。 Erlang VM(BEAM)、 LLVM については、以下の記事を参考にしてください。
今回、種々の処理系のインストール方法を紹介しましたが、 Ruby の複数環境の構築としては Windows には pik というツールがあります。 これは Ruby の違ったバージョンや IronRuby や JRuby を切り替えて使えるツールです。
ただし、残念ながらこちらは開発が止まっているらしく、 3 年ほど更新されていません。 そのため、 ruby 2.0.0 や 1.9.3 など新しいバージョンはありませんが、 1.8 系と 1.9.2 を切り替えて使いたいといった目的には使えると思います。
スポンサーサイト



 

DevKit のインストール

Windows 版の Ruby では Native 拡張ライブラリーの gem をインストールするためには DevKit が必要になります。
前回の記事の補足として、今回はこの DevKit のインストール方法について説明したいと思います。

DevKit とは

Ruby には Native 拡張ライブラリーというものがあり、 これは Native な言語である C/C++ 言語で書かれたライブラリーです。
なぜ、そのようなライブラリーがあるかというと動作が速くなるためです。

ただ、そういったライブラリーを使っているパッケージを gem でインストールしようとすると次のようなエラーが出ます。
Installing json (1.7.7)
Gem::InstallError: The 'json' native gem requires installed build tools.

Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'
gem は拡張ライブラリーをインストールするとき、 通常バイナリーファイルを取ってくるのではなく、ソースからビルドしようとします。 そこでビルドができなくてエラーになります。

この時 Windows でも簡単にビルドできるようにするためのツールが DevKit です。
これをインストールしていると Native 拡張ライブラリーを使ったパッケージでもインストールできるようになります。

DevKit のインストール

まず、 DevKit をダウンロードします。 これは Windows 版の本家 Ruby をダウンロードするページと同じところにあります。
ここから DevKit-tdm-32-X.X.X-XXXXXXXX-XXXX-sfx.exe をダウンロードします。 自己解凍形式の圧縮ファイルなので、実行して、適当なところに展開して下さい。


次に展開したフォルダーへ行き、 以下のコマンドを実行します。
d:/devkit $ ruby dk.rb init
d:/devkit $ ruby dk.rb install
これでインストールは完了です。 DevKit がインストール済みであれば gem から自動的に呼ばれてビルドするようになります。


ちなみに init ではインストールされている ruby のパスを調べるといったことをやっています。 この時、古いバージョンの Ruby をちゃんとアンインストールできていないと install 時に次のようなエラーが出ることがあります。
d:/devkit $ ruby dk.rb install
[ERROR] Unable to find RubyGems in site_ruby or core Ruby. Please
install RubyGems and rerun 'ruby dk.rb install'.
init 実行後には、カレントフォルダーに config.yml というファイルができています。 エラーがでるといった場合には、これを編集して再度 install してみて下さい。

config.yml :
# This configuration file contains the absolute path locations of all
#  :
#
---
- C:/Program Files/ruby-1.9.3       #  ← 不要な行を削除 
- D:/Ruby200

JRuby, IronRuby の場合

JRuby, IronRuby は Native 拡張ライブラリーのビルドに対応していないようです。
ただ、 JRuby の場合は Java プラットホーム用のパッケージが用意されていて、 ビルドなしでインストールできることも多いです。

JRuby でパッケージがない場合や IronRuby の場合には、今のところは残念ながら 諦めるか、代替となる pure Ruby のライブラリーを探すしか無いみたいです。
 

Windows 版 Ruby 2.0.0 で sqlite3 を使えるようにする

Windows 版の Ruby 2.0.0 では普通に gem を使ってインストールした sqlite3 を使うと Rails でエラーが発生するようになりました。
今回はこのエラーを出さない sqlite3 の対処方法について紹介したいと思います。

これは Windows に Redmine をインストールしようとしたとき、ハマった点で、 以下のページにもともと書いていた対処法です。 Redmine 以外にも役に立つかなと思って、別記事としてもう少し詳しく書いています。 対応法に関しては以下のページを参考にさせて頂きました。

エラー内容

普通にインストールすると次のような感じです。
~ $ gem install sqlite3
~ $ gem list sqlite3
sqlite3 (1.3.8 x86-mingw32)
インストールは成功するのですが、このまま使用すると 2.0.0 では次のようなエラーが出ます。
d:/redmine/redmine-2.3.2 $ rake generate_secret_token 
rake aborted!
Could not find sqlite3-1.3.7-x86-mingw32 in any of the sources
d:/redmine/redmine-2.3.2/config/boot.rb:6:in `<top (required)>'
d:/redmine/redmine-2.3.2/config/application.rb:1:in `<top (required)>'
d:/redmine/redmine-2.3.2/Rakefile:5:in `<top (required)>'
(See full trace by running task with --trace)
このため、 エラーのでない別の sqlite3 をインストールする必要があります。

インストール

sqlite3 のアンインストール

sqlite3 をインストールする前に x86-mingw32 版の sqlite3 がインストールされている場合にはアンインストールします。
~ $ gem uninstall sqlite3

SQLite 3

sqlite3.dll をインストールする必要があります。 こちらは通常の方法と同じです。

SQLite のサイトから、圧縮ファイル(sqlite-dll-win32-x86-XXXXXXX.zip)をダウンロードします。 ファイル内の sqlite3.dll を ruby.exe のあるフォルダーか環境変数 PATH で指定されているフォルダーに置きます。


この時、同じページにあるソースファイル(sqlite-amalgamation-XXXXXXX.zip)もダウンロードして、 適当なフォルダーに解凍しておきます。 なお、こちらはインストール後、消しても構いません。
ruby_sqlite3_source.png

DevKit のインストール

DevKit がインストールされていない場合はインストールしておく必要があります。 DevKit のインストールに関しては以下の記事をご覧下さい。

sqlite3 パッケージのインストール

次のコマンドを実行して、 sqlite3 をビルド、インストールします。 これでエラーはでないようになります。
~ $ gem install sqlite3 -v "=1.3.7" --platform=ruby -- --with-sqlite3-include=D:/redmine/sqlite-amalgamation-3071700 --with-sqlite3-lib=d:/Ruby200/bin
unable to convert "\x90" from ASCII-8BIT to UTF-8 for lib/sqlite3/sqlite3_native.so, skipping
Temporarily enhancing PATH to include DevKit...
Building native extensions with: '--with-sqlite3-include=D:/redmine/sqlite-amalgamation-3071700 --with-sqlite3-lib=d:/Ruby200/bin'
This could take a while...
Successfully installed sqlite3-1.3.7
Parsing documentation for sqlite3-1.3.7
Installing ri documentation for sqlite3-1.3.7
1 gem installed
指定したオプションについて説明していきます。

-v "=1.3.7" :
インストールするバージョンを指定しています。 Rails の依存関係にもよるのでしょうが、 バージョンを指定していないと最新版の 1.3.8 がインストールされ(2013-08-20 時点) 、 エラーが発生してしまいます。

--platform=ruby :
通常、複数のプラットホームの gem が登録されている場合、環境にあったものが使用されます。 デフォルトだと x86-mingw32 版になるので、明示的に指定しています。


-- :
これ以降はビルドに渡されるオプションとなります。

ビルドのオプションで指定しているパスはそれぞれ次のようなものです。
オプション パス
--with-sqlite3-include 展開したソースファイルのフォルダー D:/redmine/sqlite-amalgamation-3071700
--with-sqlite3-lib sqlite3.dll を置いたフォルダー (ruby.exe のあるフォルダー) d:/Ruby200/bin

ちなみにビルドしているのは、 sqlite3.dll ではなく、 それを ruby から使うための Native 拡張ライブラリー sqlite3_native.so です。ソースファイルも正確には "sqlite3.h" のみ使用しています。
ビルド内容の詳細を見たい場合はインストール時に --verbose も一緒に付けてみてください。


 
このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
26位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
8位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

07月 | 2013年08月 | 09月
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。