【小ネタ】homebrewでインストールされるimagemagickのバージョンを固定する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

丹内です。
よく使われるImageMagickですが、RubyからImageMagickを使うためのRMagickはバージョン不一致によるエラーを起こすことが多いです。

https://github.com/rmagick/rmagick/issues/234

his installation of RMagick was configured with ImageMagick 6.8.9 but ImageMagick 6.9.0-3 is in use. (RuntimeError)

私はbrew updatebrew upgradeを叩くのが好きで、ほぼ毎日更新を見て適用しているのですが、ImageMagickの更新が来るとRMagickを使っている実務への影響が出かねないので、すぐには適用せず様子を見ています。 恒久的な対策としては、

  • Dockerでプロジェクト毎にImageMagickを使うようにする(MacのImageMagickのバージョンに左右されない)
  • git checkoutで特定バージョンのformulaにする(参考URL)

などがありますが、本番運用されているプロジェクトを今からDocker化をするのは腰が重い、git checkoutも後から忘れがちということで、もっと簡単に行う方法を探してみたところ、brew pinを使う方法(URL)が見つかりました。

$ convert | head -n 1
Version: ImageMagick 6.9.2-10 Q16 x86_64 2015-12-21 http://www.imagemagick.org

$ brew pin imagemagick

$ brew upgrade
==> No packages to upgrade
==> Not upgrading 1 pinned package:
imagemagick 6.9.3-0

$ convert | head -n 1
Version: ImageMagick 6.9.2-10 Q16 x86_64 2015-12-21 http://www.imagemagick.org

もちろん時間ができたら最新のRMagickに更新したり場合によってはforkしたり、可能であればDocker化をする必要はありますが、brew pinを使ってみました。 なお、brew unpin <formula>で固定を解除できるそうです。