Homebrewのパッケージバージョンを切り替える

Homebrewでインストールしたパッケージのバージョンを切り替える方法のメモ。
ググればいくらでも出てきますが、古い方法だったりしてよく迷うので改めてまとめました。

古いバージョンのパッケージをインストールする

そもそも古いバージョンを入れるところから。
まずは brew search でどのバージョンがインストールできるかを調べます。

$ brew search ffmpeg
==> Formulae
ffmpeg                            ffmpeg@2.8                        ffmpeg@5
ffmpeg2theora                     ffmpeg@4                          ffmpegthumbnailer

ここで brew install ffmpeg を実行するとlatestバージョンがインストールでき、 brew install ffmpeg@2.8 を実行すると2.8がインストールできます。

$ brew list | grep ffmpeg
ffmpeg
ffmpeg@2.8

バージョンを切り替える

ただ両バージョンをインストールしただけだとlatestバージョンとなっています。

$ ffmpeg -version
ffmpeg version 6.0 Copyright (c) 2000-2023 the FFmpeg developers
$ which ffmpeg
/usr/local/bin/ffmpeg
$ ls -l /usr/local/bin/ffmpeg
lrwr-xr-x  1 fwhy  admin  33 12 27 19:39 /usr/local/bin/ffmpeg -> ../Cellar/ffmpeg/6.0_2/bin/ffmpeg

古いバージョンを実行するにはフルパスで直接実行する必要がありますが、 それだと面倒なので brew link を使用してリンク先を変更します。

$ brew ln --overwrite ffmpeg@2.8
Linking /usr/local/Cellar/ffmpeg@2.8/2.8.22... 408 symlinks created.

If you need to have this software first in your PATH instead consider running:
  echo 'export PATH="/usr/local/opt/ffmpeg@2.8/bin:$PATH"' >> ~/.zshrc

こうすることで古いバージョンを使用できます。

$ ffmpeg -version
ffmpeg version 2.8.22 Copyright (c) 2000-2023 the FFmpeg developers

参考

Homebrew Documentation #link