Redmine で RMagick が機能しなくなっていた


久しぶりに Redmine で遊んでいたら、「RMagickが利用可能 (オプション)」が×になっていることに気が付きました。調べると RMagick が libMagickCore.so を見つけられなくなったようです。yum update したせいでしょうか。

bundle console を使って RMagick を呼び出してみます。

# cd /path/to/redmine/
# bundle console
Unable to require rbpdf. NameError: uninitialized constant RBPDF::ActionView.
irb(main):001:0> require 'RMagick'
LoadError: libMagickCore.so.2: cannot open shared object file: No such file or directory - /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rmagick-2.13.4/lib/RMagick2.so
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rmagick-2.13.4/lib/rmagick_internal.rb:11:in `require'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rmagick-2.13.4/lib/rmagick_internal.rb:11:in `<top (required)>'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rmagick-2.13.4/lib/RMagick.rb:1:in `require'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/rmagick-2.13.4/lib/RMagick.rb:1:in `<top (required)>'
 from (irb):1:in `require'
 from (irb):1
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/lib/bundler/cli/console.rb:14:in `run'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/lib/bundler/cli.rb:300:in `console'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/lib/bundler/vendor/thor/command.rb:27:in `run'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/lib/bundler/vendor/thor/invocation.rb:121:in `invoke_command'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/lib/bundler/vendor/thor.rb:363:in `dispatch'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/lib/bundler/vendor/thor/base.rb:440:in `start'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/lib/bundler/cli.rb:10:in `start'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/bin/bundle:20:in `block in <top (required)>'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/lib/bundler/friendly_errors.rb:6:in `with_friendly_errors'
 from /opt/rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/bundler-1.8.0.pre/bin/bundle:18:in `<top (required)>'
 from /opt/rbenv/versions/2.1.5/bin/bundle:23:in `load'
 from /opt/rbenv/versions/2.1.5/bin/bundle:23:in `<main>'

どうやら libMagickCore.so.2 がないらしいです。ファイルの場所を調べるため、 ImageMagick がどこにインストールされているか見てみます。

rpm -ql ImageMagick
※一部抜粋
/usr/lib64/libMagickCore.so.5
/usr/lib64/libMagickCore.so.5.0.0
/usr/lib64/libMagickWand.so.5
/usr/lib64/libMagickWand.so.5.0.0

libMagickCore.so.2 なんてないじゃないですか。yum update で 5 になったのかもしれません。rmagick をリビルドしてみます。

# gem uninstall rmagick
Select gem to uninstall:
 1. rmagick-2.13.4
 2. rmagick-2.15.4
 3. All versions

3 の All で行きます。

Successfully uninstalled rmagick-2.13.4
Successfully uninstalled rmagick-2.15.4

消した rmagick を再インストールします。

gem install rmagick -v 2.13.4
gem install rmagick -v 2.15.4
Fetching: rmagick-2.13.4.gem (100%)
Building native extensions. This could take a while...
Please report any bugs. See https://github.com/gemhome/rmagick/compare/RMagick_2-13-2...master and https://github.com/rmagick/rmagick/issues/18
Successfully installed rmagick-2.13.4
Parsing documentation for rmagick-2.13.4
Installing ri documentation for rmagick-2.13.4
Done installing documentation for rmagick after 7 seconds
1 gem installed
Fetching: rmagick-2.15.4.gem (100%)
Building native extensions. This could take a while...
Successfully installed rmagick-2.15.4
Parsing documentation for rmagick-2.15.4
Installing ri documentation for rmagick-2.15.4
Done installing documentation for rmagick after 7 seconds
1 gem installed

無事インストールできたようです。

service httpd graceful

Apache 再起動して完了です。