🖥

Homebrew で複数パッケージのバージョンを切り替える方法

2023/08/26に公開

$ brew link & $ brew unlink で切り替え

既に複数バージョンのパッケージをインストール済みの場合は、以下コマンドでだいたいうまくいくはず。

1回の切り替えで unlinklink にどちらも同じパッケージバージョンを指定するのがミソっぽい。

最新版への切り替え例

$ brew unlink [パッケージ名] && brew link --force --overwrite [パッケージ名]

コマンドの具体例:

$ brew unlink ansible && brew link --force --overwrite ansible

過去バージョンへの切り替え例

$ brew unlink [パッケージ名]@[バージョン番号] && brew link --force --overwrite [パッケージ名]@[バージョン番号]

コマンドの具体例:

$ brew unlink ansible@2.0 && brew link --force --overwrite ansible@2.0

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

まだ複数バージョンをインストールしていない場合は、以下のような手順で実行する。

まずはインストール可能パッケージの確認

まずは brew search [キーワード] で利用可能パッケージ・バージョンを探す。

$ brew search ansible

==> Formulae
ansible                                          ansible-lint                                     ansible@2.0  
ansible-cmdb                                     ansible@1.9                                      terraform-provisioner-ansible
  • ansible 最新版
  • ansible 2.0系
  • ansible 1.9系

が使えそう。

  • この例だと、あまり細かくパッケージのバージョンが分かれているわけではないのが分かる。
  • ansibleというキーワードに引っかかって、ansible本体でないものも紛れているのが分かる。

複数のバージョンをインストール

最新版

$ brew install ansible

初回インストールしたバージョンはすぐに使えるようになる。

$ ansible --version
ansible 2.6.1

過去バージョン

  • $ brew install ansible@2.0

過去バージョンをインストールしても、まだパッケージのバージョンは変わっていない。

$ ansible --version
ansible 2.6.1

link する

複数バージョンのパッケージをインストールしている場合は link コマンドでバージョンを切り替える。

最新版を unlink して、過去バージョンを link してみる。

brew unlink ansible && brew link --force ansible@2.0

バージョンが切り替わったのが分かる。

$ ansible --version
ansible 2.0.2.0

その後の切り替え

よく分からないところで怒られたりするので、冒頭に書いたとおり、以下のようなコマンドで切り替える。

$ brew unlink ansible && brew link --force --overwrite ansible
$ brew unlink ansible@2.0 && brew link --force --overwrite ansible@2.0

感想

いまだに brew link の仕組みがよく分からない。

環境

  • Homebrew 1.6.15-7-g7c18efe
  • Homebrew/homebrew-core (git revision 86e1c; last commit 2018-07-14)

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2018-07-14

Discussion