rmagick を回避した Redmine 1.4 (trunk) のインストール

Redmine の 1.4 対応用に一足早く開発版(trunk:r9244)をインストールしてみました。
このとき、かなりハマったのですが、なんとかインストールできたので、解決方法を書いておきます。 同じポイントで困っているようでしたら、参考にしてみてください。

ハマるポイントは gem の rmagick (2.13.1) のインストールです。 これをインストールするのは相当大変なので、これ抜きで Redmine をインストールしています。
インストールした環境は Windows ですが、回避方法は Linux 等でも使えると思います。

ソースの入手

まず、 Redmine のソースを入手します。 開発版なので、 Subversion からチェックアウトします。

Ruby のインストール

Redmine 1.4 の一番の売りはおそらく Ruby の 1.9 対応でしょう。
私の場合 Ruby は いろいろ一緒にインストールしてくれる rumix を使っていました。 これを 1.9 も使おうと思ったのですが、 1.9 のバージョンで用意されていたパッケージが 1.9.1 とちょっと古く(2012-3-23 時点)、 インストールできませんでした。

そこで、英語ですがこちらもいろいろ一緒にインストールしてくれる RubyInstaller で 1.9.3 をインストールしました。 そのあと、念のため、 gem を最新版にアップデートしています。
gem update --system

必要なパッケージのインストール (ハマる前まで)

Redmine のいつもの手順でインストールします。
最初の rake コマンドを実行するところで、メッセージがでて止まります。
$ rake generate_session_store
Redmine requires Bundler. Please install it with `gem install bundler`.

いわれた通りに bundler パッケージのインストールをすると、これは上手くいきます。
$ gem install bundler

もう一度、 rake コマンドを実行すると今度は別なメッセージがでます。
$ rake generate_session_store
Some gems may need to be installed or updated.
Please run `bundle install --without development test`.

また、いわれた通りにコマンドたたくと、必要な gem パッケージのインストールをダーっとやってくれます。
$ bundle install --without development test
おぉ、便利と思っていたら、 rmagick のところで失敗してしまいました。
Installing rmagick (2.13.1) 
Gem::InstallError: The 'rmagick' 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'
An error occured while installing rmagick (2.13.1), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.13.1'` succeeds before bundling.
ここがハマるポイントです。 メッセージに書かれているように DevKit をインストールしてみても rmagick のところで、 やっぱり失敗します。
DevKit のサイトに書かれている DevKit のテストは上手くいったので、 DevKit のインストール自体は問題なさそうでした。

いろいろ試したけど、上手くいきませんでした。 ググって調べてみると、 rmagick 2.13.1 のインストールは結構みんなハマるみたいです。
で、わかったのは Windows に rmagick 2.13.1 をインストールするのは、すっごく大変ってことだけです。
追記 2012-03-29
教えていただいた方法によると、 次項のようにわざわざコメントアウトしなくても、 省略するパッケージの指定に rmagick を追加すればスキップできました。
$ bundle install --without development test rmagick 
追記 2012-04-18
--without の指定で rmagick をスキップした場合、 rake コマンドを実行するところで、引き続き rmagick のインストールエラーが出力されることがあります。

この場合は、 一旦 OS を再起動するとうまくいくようです。

rmagick のインストールをスキップさせる

前のバージョンではこの rmagick はオプションだったので、 今度は、なんとか rmagick なしでインストールできないか 調べてみました。

Redmine のソースの直下に今までのバージョンにはなかった Gemfile というファイルがあります。
中身を確認してみると、どうやら bundler ではこのファイルに書かれたパッケージを順にインストールしていっているみたいです。

rmagick の部分は次のような記述です。
# Optional gem for exporting the gantt to a PNG file
group :rmagick do
  # RMagick 2 supports ruby 1.9
  # RMagick 1 would be fine for ruby 1.8 but Bundler does not support
  # different requirements for the same gem on different platforms
  gem "rmagick", ">= 2.0.0"
end

やっぱり、オプションみたいです。 ガントチャートを PNG ファイルにエクスポートするのに使うと書かれていますが、 無くても困りません。
この rmagick の部分をコメントアウトします。
# Optional gem for exporting the gantt to a PNG file
#group :rmagick do
  # RMagick 2 supports ruby 1.9
  # RMagick 1 would be fine for ruby 1.8 but Bundler does not support
  # different requirements for the same gem on different platforms
#  gem "rmagick", ">= 2.0.0"
#end
コメントアウトした後、再度 bundle を実行します。
$ bundle install --without development test

rmagick がスキップされて、 今度は止まることなく、 残りの gem パッケージのインストールが行われました。

後は rake generate_session_store から、いつものように インストールをつづけると無事に Redmine のインストールが完了しました。

以前のバージョンの Redmine では、 Rails や Rack など動作に必要な gem パッケージを redmine.org のインストール方法のページで確認しながら インストールする必要があって、面倒でした。 1.4 からは Bundler を使って、自動でできるようになっています。
これ自体は非常に嬉しい改良なのですが、問題はオプションなのにインストールの難しい rmagic まで、 そこに含まれてしまっている点です。
実際の 1.4.0 がリリースされるときにはここが改良されているといいのですが。
スポンサーサイト



 

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 のライブラリーを探すしか無いみたいです。
 
このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
26位
アクセスランキングを見る>>

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

05月 | 2023年06月 | 07月
- - - - 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 -


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

yohshiy

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

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

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