消してしまった Homebrew の過去バージョンをインストールし直してバージョンを固定する方法

imagemagick と rmagick のバージョン問題に出くわしたので、過去バージョンのインストール方法を探りました。

```
% brew --version
Homebrew 1.1.11
Homebrew/homebrew-core (git revision c09e; last commit 2017-03-15)
```

なお、`brew versions` コマンドは deprecated していますので利用できません。

> [Homebrew/homebrew-versions: Homebrew/versions (deprecated)](https://github.com/Homebrew/homebrew-versions)




## 過去バージョンの bottle を入手する

bottle のダウンロード URI を確認します。

```
% brew install imagemagick@6
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/imagemagick@6-6.9.8-0.sierra.bottle.tar.gz
```


imagemagick の公式サイトで過去バージョン（ImageMagick-6.9.7-10）を確認します。

https://www.imagemagick.org/download/releases/


これらの情報を元に URI を組み立てると、ダウンロードできました。

```
https://homebrew.bintray.com/bottles/imagemagick@6-6.9.7-10.sierra.bottle.tar.gz
```


展開したファイルを Cellar に移動します。

```
% mv ~/Downloads/imagemagick@6/6.9.7-10 /usr/local/Cellar/imagemagick@6
```




## 過去バージョンに切り替える

`brew info` を実行すると、追加した bottle が認識されています。

```
% brew info imagemagick@6
imagemagick@6: stable 6.9.8-0 (bottled) [keg-only]
Tools and libraries to manipulate images in many formats
https://www.imagemagick.org/
/usr/local/Cellar/imagemagick@6/6.9.7-10 (1,467 files, 22.6MB)
  Built from source
/usr/local/Cellar/imagemagick@6/6.9.8-0 (1,469 files, 22.6MB)
  Poured from bottle on 2017-03-15 at 11:14:24
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/imagemagick@6.rb
```


過去バージョンに切り替えます。
過去バージョンを消していなければ、`brew switch` だけですみますね。

> [Activate a previously installed version of a formula](https://github.com/Homebrew/brew/blob/master/docs/Tips-N'-Tricks.md#activate-a-previously-installed-version-of-a-formula)

```
% brew switch imagemagick@6 6.9.7-10
Cleaning /usr/local/Cellar/imagemagick@6/6.9.7-10
Cleaning /usr/local/Cellar/imagemagick@6/6.9.8-0
Opt link created for /usr/local/Cellar/imagemagick@6/6.9.7-10
```

`brew link` を張り直します。

```
% brew link imagemagick@6 --force
Linking /usr/local/Cellar/imagemagick@6/6.9.7-10... 75 symlinks created
```


バージョンを確認します。

```
% convert -version
Version: ImageMagick 6.9.7-10 Q16 x86_64 2017-03-04 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules
Delegates (built-in): bzlib freetype jng jpeg ltdl lzma png tiff xml zlib
```




## バージョンを固定する

さて、今後うっかりバージョンアップをしないような処置 `brew pin` をしておきます。

> [How do I stop certain formulae from being updated?](https://github.com/Homebrew/brew/blob/edbdaae6f3dd3ab646a5d90933ec6143ed4a287a/docs/FAQ.md#how-do-i-stop-certain-formulae-from-being-updated)

```
% brew pin imagemagick@6
```

するとこのようになります。

```
% brew info imagemagick@6
imagemagick@6: stable 6.9.8-10 (bottled) [pinned at 6.9.8-10, keg-only]
Tools and libraries to manipulate images in many formats
https://www.imagemagick.org/
/usr/local/Cellar/imagemagick@6/6.9.7-10 (1,467 files, 22.6MB) *
  Built from source
/usr/local/Cellar/imagemagick@6/6.9.8-0 (1,469 files, 22.6MB)
  Poured from bottle on 2017-03-15 at 11:14:24
/usr/local/Cellar/imagemagick@6/6.9.8-10 (1,469 files, 22.5MB)
  Poured from bottle on 2017-06-23 at 14:39:21
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/imagemagick@6.rb
```

`brew upgrade` でバージョンアップがあった場合には、このような表示がされます。

```
% brew upgrade
Updating Homebrew...
==> No packages to upgrade
==> Not upgrading 1 pinned package:
imagemagick@6 6.9.8-10
```

アップグレードが必要な場合には、`brew unpin` 後に `brew upgrade` を実行します。