はじめに
ちょっとしたことをやろうとbundle installを気軽にしたところ
こんなエラーでコケました
$ bundle install ~ 省略 ~ An error occurred while installing rmagick (2.16.0), and Bundler cannot continue. Make sure that `gem install rmagick -v '2.16.0'` succeeds before bundling. ~ 省略 ~
その際にちょっとはまったのでメモ
もくじ
- はまったこと
- 対処法
1. はまったこと
結果、あとでぐぐることにはなるのですが、
へたにエラー文字列にgem install rmagick -v '2.16.0'
をやれよな!と出てくるのでそれを信じて実行しだしてハマります。
ちなみに実行してみた結果はこんな感じ
# 書いてあるとおりに実行すると... $ gem install rmagick -v '2.16.0' Building native extensions. This could take a while... ERROR: Error installing rmagick: ERROR: Failed to build gem native extension. current directory: /Users/tweeeety/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/rmagick-2.16.0/ext/RMagick /Users/tweeeety/.rbenv/versions/2.4.1/bin/ruby -r ./siteconf20180323-8727-1v6xnw6.rb extconf.rb checking for clang... yes checking for Magick-config... no checking for pkg-config... yes checking for outdated ImageMagick version (<= 6.4.9)... no checking for presence of MagickWand API (ImageMagick version >= 6.9.0)... no checking for Ruby version >= 1.8.5... yes checking for stdint.h... yes checking for sys/types.h... yes checking for wand/MagickWand.h... no Can't install RMagick 2.16.0. Can't find MagickWand.h. *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/Users/tweeeety/.rbenv/versions/2.4.1/bin/$(RUBY_BASE_NAME) To see why this extension failed to compile, please check the mkmf.log which can be found here: /Users/tweeeety/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-13/2.4.0-static/rmagick-2.16.0/mkmf.log extconf failed, exit code 1 Gem files will remain installed in /Users/tweeeety/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/rmagick-2.16.0 for inspection. Results logged to /Users/tweeeety/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-13/2.4.0-static/rmagick-2.16.0/gem_make.out
なんでやねん!と思ってログを見るとこんな感じ
find_executable: checking for clang... -------------------- yes -------------------- find_executable: checking for Magick-config... -------------------- no -------------------- find_executable: checking for pkg-config... -------------------- yes -------------------- configure_compile_options: checking for outdated ImageMagick version (<= 6.4.9)... -------------------- no
imagemagickのversionがダメみたい...!?
2. 対処法
調べるとrmagickはimagemagickのバージョン7に対応していないからとのこと
ログにもImageMagick version (<= 6.4.9)
と出てましたね。
imagemagickのversionを確認する
とはいえ目で見てみないとわからないのでversionを確認してみます。
$ brew info imagemagick imagemagick: stable 7.0.7-27, HEAD Tools and libraries to manipulate images in many formats https://www.imagemagick.org/ ~ 省略 ~
確かに7.0.7-27
です
また、imagemagickのコマンドである
convert
コマンドを見てみるとこんな感じになっています。
# シンボリックリンクになっている $ ls -al /usr/local/bin/convert lrwxr-xr-x 1 tweeeety tweeeety 42 3 23 22:36 /usr/local/bin/convert -> ../Cellar/imagemagick/7.0.7-27/bin/convert
これはなに
brewでinstallすると、/usr/local/Cellar
配下に置かれます。
実行するコマンドは/usr/local/bin
配下にあり、/usr/local/Cellar
配下の実態へのシンボリックリンクになっています。
なので、imagemagickの6を入れてシンボリックリンクを貼り直せば良いです。
imagemagickのversionをさげる
ということで、任意のversionを入れてlinkを貼り直します。
# 念のため確認 $ ls -al /usr/local/bin/convert lrwxr-xr-x 1 tweeeety tweeeety 42 3 23 22:36 /usr/local/bin/convert -> ../Cellar/imagemagick/7.0.7-27/bin/convert # 6をインストール $ brew install imagemagick@6 # 最初にlinkをはずしておく $ brew unlink imagemagick # imagemagick@6をリンクする $ brew link --force imagemagick@6 # 確認 # ../Cellar/imagemagick@6/6.9.9-39/bin/convertへのリンクになってる $ ls -al /usr/local/bin/convert lrwxr-xr-x 1 tweeeety tweeeety 44 3 24 00:04 /usr/local/bin/convert -> ../Cellar/imagemagick@6/6.9.9-39/bin/convert
ここまできたら
gem install rmagick -v '2.16.0'
をする必要はなく、
bundle install
が通るようになります
注意
brew unlink
をするまえに brew link
をすると怒られます
$ brew link --force imagemagick@6 Linking /usr/local/Cellar/imagemagick@6/6.9.9-39... Error: Could not symlink bin/Magick++-config Target /usr/local/bin/Magick++-config is a symlink belonging to imagemagick. You can unlink it: brew unlink imagemagick To force the link and overwrite all conflicting files: brew link --overwrite imagemagick@6 To list all files that would be deleted: brew link --overwrite --dry-run imagemagick@6
参考
おわり
ちょっとしたことでハマるーーーーーーー\(^o^)/