読者です 読者をやめる 読者になる 読者になる

二つ目の信号を右

メモ、記録

rmagickをwindows7 (x64) にインストール (2014 Dec.)

サーバ側でちょっとした画像処理をしたいとき(サムネイルの作成など)、Rubyではrmagickを使います。rmagickはrubyの画像処理用の汎用ライブラリで、内部的にはImageMagickのライブラリを利用しています。

Windows7上で、特に64bit版のrubyを用いている場合、rmagickのインストールがかなり厄介だったのでメモしておきます。

Windows上でrmagickをインストールする上で問題になるのは以下の2点です。

  1. C言語の実装を含んでおり、ビルドが必要であること。
  2. 内部で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 と

梅田地下街シームレス検索 http://www.umeda-ug.net