概要

macOSにおいて、Homebrewでいくつかのアプリケーションを管理しているのですが、中にはバージョンを固定して使いたいものがあります。

Formulaeであれば、Homebrewにあらかじめある機能で実現可能ですが、Caskを利用したものは通常の方法ではできません。

ここでは、HomebrewのCaskでインストールしたソフトウェアのバージョンを固定する方法を紹介します。

環境

  • macOS Monterey 12.3.1
  • Homebrew 3.4.7

実現方法

Homebrewのデフォルトの機能では、Caskで提供されているソフトウェアのバージョンを固定することができません。通常であれば、このようにすることで可能です。

$ brew pin Formulae名

Caskについてはこれを使うことができないので、次のものを利用します。

GitHub - buo/homebrew-cask-upgrade: A command line tool for upgrading every outdated app installed by Homebrew Cask

これは、有志の方が作成しているCaskのソフトウェアの管理をするためのツールです。このツールにはバージョンを固定する機能があり、今回はこれを利用して、バージョンの固定を実現します。

ターミナルから次のコマンドを実行して、ツールをインストールします。

$ brew tap buo/cask-upgrade

こちらをインストールすることで、Caskに関連する便利な機能が使えるようになります。例えば、次のコマンドで、インストールしているCaskのソフトウェアの一覧を確認できます。

$ brew cu
==> Options
Include auto-update (-a): false
Include latest (-f): false
==> Updating Homebrew
Already up-to-date.
==> Finding outdated apps
     Cask               Current    Latest     A/U    Result
1/7  font-fira-code     6.2        6.2             [   OK   ]
2/7  font-hackgen       2.6.1      2.6.1           [   OK   ]
3/7  font-hackgen-nerd  2.6.1      2.6.1           [   OK   ]
4/7  mactex-no-gui      2022.0321  2022.0321       [   OK   ]
5/7  r                  4.2.0      4.2.0           [ PINNED ]
6/7  skim               1.6.7      1.6.10      Y   [  PASS  ]
7/7  xquartz            2.8.1      2.8.1       Y   [  PASS  ]  

インストールしているもので表示は異なりますが、このようにわかりやすく確認することができます。今回インストールしたツールでは、brew cuというコマンドを追加するので、それを利用して様々な操作を行います。

バージョンを固定する場合は次のようにします。

$ brew cu pin Cask名

私は、rについてバージョンを固定しています。バージョンを固定するとbrew cuでの確認時に、Resultの部分が「PINNED」となりますので、ちゃんと設定されているかを確認する際は、そのようにすることで確認可能です。または、次のように専用のコマンドも用意されています。

$ brew cu pinned
     Cask  Current  Latest
1/1  r     4.2.0    4.2.0 

もしもバージョンの固定を解除する場合は次のように実行します。

$ brew cu unpin Cask名

これで、目的の特定のCaskアプリのバージョンを固定したり、解除したりすることができました。

さいごに

Homebrewの標準機能で実現できれば良かったのですが、Caskについては別途tapをインストールする必要がありました。これをインストールしてしまえば、かなり簡単にバージョンの固定ができるので、みなさんも利用してください。