rmagickをwindows7 (x64) にインストール (2014 Dec.)
サーバ側でちょっとした画像処理をしたいとき(サムネイルの作成など)、Rubyではrmagickを使います。rmagickはrubyの画像処理用の汎用ライブラリで、内部的にはImageMagickのライブラリを利用しています。
Windows7上で、特に64bit版のrubyを用いている場合、rmagickのインストールがかなり厄介だったのでメモしておきます。
Windows上でrmagickをインストールする上で問題になるのは以下の2点です。
- C言語の実装を含んでおり、ビルドが必要であること。
- 内部でImageMagickのライブラリを呼び出しているが、64bitに対応していないライブラリが存在すること。
ビルドに関しては、ビルドに必要なソフトやコンパイラが全て入っているDEVELOPMENT KITをダウンロード&解凍して、直下にできるbinフォルダと、mingwフォルダの直下にあるbinフォルダにPATHを通しておけばOKです。makeやらgccやらが使えるようになります。
問題は2番目のライブラリの問題です。32bit版のrubyを用いている場合は、32bit版のImageMagickをインストールして、あとは参考リンク(1)の通りに作業を進めれば問題ないはずです。。
しかし、64bit版のRubyを用いている場合は、参考リンク(1)にある手順 1,2,3 (DevkitとImageMagickのインストールとかパス設定とか)を済ませた上で、
(Rubyをインストールしたフォルダ)\lib\ruby\gems\(バージョン)\gems\rmagick-2.13.3\ext\RMagick
にある、extconf.rbを修正して、手動でインストールする必要があります。修正する内容はシンプルで、64bitに対応していないライブラリの読み込みを除外します…!なんと、実際の動作には関係ないので問題無いんです。。
extconf.rb 167行目付近の
$LOCAL_LIBS = '-lCORE_RL_magick_ -lX11'
から -lX11 を削除!
$LOCAL_LIBS = '-lCORE_RL_magick_'
削除した上で、rmagick-2.13.3フォルダ直下のsetup.rbを呼び出す…のですが、ImageMagickのフォルダを渡してあげないとこけてしまうようです。
$ ruby setup.rb -- '--with-opt-dir="(ImageMagickをインストールしたフォルダ)" --with-opt-lib="(ImageMagickをインストールしたフォルダ)\lib" --with-opt-include="(ImageMagickをインストールしたフォルダ)\include" --platform=ruby'
そして、インストール!
$ ruby setup.rb install
これで、
require 'RMagick'
とすると(大文字注意!)、rmagickが使えるようになります。
ちなみに、Herokuでrmagickを使いたい場合は、Gemfileに
gem 'rmagick' , :require=>'RMagick'
とするだけで使用することができます…おのれWindows…
参考リンク(1):RMagick を Windows 7 にインストールする方法 - 君の瞳はまるでルビー - Ruby 関連まとめサイト
参考リンク(2):Windows 7 に Ruby 2.0 x64 を その2 ~RMagick が入らない問題と対策~|Ruby と iPhone と UI と