Homebrew Caskでインストールしたアプリをダウングレードする


プライベートではWindowsを使っていますが、仕事ではもっぱらMacがメインです。アプリのインストールには利便性を考えて、macOS用パッケージマネージャのHomebrewと、その拡張機能であるHomebrew Caskを使っています。先日Caskでインストールしたアプリを更新したところトラブルが発生し、ダウングレードする機会がありました。割とあるあるなケースだと思うので、忘れないように手順を書き残します。

前提条件

  • Homebrew+Caskが使える環境
  • ダウングレードするアプリをSlackと仮定する
  • Git すこし わかる

戻したいバージョンのコミットを探す

ターミナルでCaskのディレクトリまで移動します。

$ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask/Casks

Gitのコマンドでログを表示します。

$ git log slack.rb
commit bb21222c6baea64c58e296ac325888f17f2850d4
Author: James Chevalier <[email protected]>
Date:   Thu Aug 1 12:14:25 2019 -0400

    Update slack from 4.0.0 to 4.0.1 (#67023)

commit 07039780b1748514316029607c0b83a4e51e6e7d
Author: HASHIMOTO Masayuki <[email protected]>
Date:   Wed Jul 17 08:11:25 2019 +0900

    Update slack from 3.4.2 to 4.0.0 (#66330)

commit db14404b644a5a3923f793c79faa3056554e0908
Author: HASHIMOTO Masayuki <[email protected]>
Date:   Tue Jun 4 12:07:00 2019 +0900

    Update slack from 3.4.0 to 3.4.2 (#64345)

commit 905cdea9e21f50d6d417152b3a66583be885b308
Author: Randall <[email protected]>
Date:   Fri Apr 19 03:10:51 2019 -0700

    Update slack from 3.3.8 to 3.4.0 (#62186)
:

ずらずらとコミットのログが表示されます。最新版は現時点で4.0.1です。これを1つ前の4.0.0に戻す場合、『Update slack from 3.4.2 to 4.0.0 (#66330)』とコメントされてるコミットのハッシュ値07039780b1748514316029607c0b83a4e51e6e7dを控えておきます。

アプリをアンインストールする

$ brew cask uninstall slack

アンインストールが完了したら、念のためキャッシュを削除しておきます。

$ brew cleanup -s

控えたハッシュ値を指定して再インストール

控えたハッシュ値を指定して、アプリを再インストールします。

$ brew cask install https://raw.githubusercontent.com/caskroom/homebrew-cask/07039780b1748514316029607c0b83a4e51e6e7d/Casks/slack.rb

補足(追記)

どのような仕組みでダウングレードしてるのか軽く補足します。Homebrew Caskは、Rubyで記述されたアプリの定義ファイルを元に、インストールを実行しています。控えたハッシュ値ですが、これは指定したバージョンの定義ファイルを参照するために使います。先ほどbrew cask installで指定したURLにアクセすると、GitHubにアップロードされたSlackのver. 4.0.0の定義ファイルが表示されるかと思います。URLを直接指定しなくても、Gitのコマンドでコミットを遡れば、同じようにbrew cask install slackでインストールが可能です。