Homebrewで任意のバージョンのパッケージをインストールする
過去のバージョンのImageMagick6をHomebrewでインストールしたかったのですが、色々と手順が必要だったのでまとめておきます。
# 環境
$ brew -v
Homebrew 4.2.20-83-gc09ef9a
Homebrewの用語が出てきますが、公式のドキュメントを参照してください。
課題
Homebrewでは最新のfomula(パッケージ)のみが保持されます。
Homebrew automatically uninstalls old versions of each formula that is upgraded with brew upgrade, and periodically performs additional cleanup every 30 days.
Homebrew は、brew upgrade でアップグレードされた各式の古いバージョンを自動的にアンインストールし、30 日ごとに追加のクリーンアップを定期的に実行します。
fomulaは Homebrew/homebrew-core/Fomula リポジトリで管理されています。
formula名@バージョン
のようにバージョン管理されているformulaもありますが、あくまで別パッケージとして提供されているだけのようです。
$ brew search imagemagick
==> Formulae
imagemagick
imagemagick@6
...
今回は imagemagick@6
の 6.9.12
をインストールしたかったのですが、普通に brew install
すると、現在の最新版である 6.9.13-9
がインストールされます。
$ brew install imagemagick@6
$ brew info imagemagick@6
...
Installed
/opt/homebrew/Cellar/imagemagick@6/6.9.13-9 (769 files, 27.9MB)
Poured from bottle using the formulae.brew.sh API on 2024-05-03 at 17:02:58
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/i/imagemagick@6.rb
License: ImageMagick
...
以前はfomuraのコミットハッシュを指定してインストールできたようですが、現在は使えません。
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8edbb4ffad0cb7a41eaf508f6b5d90b15222d458/Formula/i/imagemagick@6.rb
Error: Non-checksummed download of imagemagick@6 formula file from an arbitrary URL is unsupported! `brew extract` or `brew create` and `brew tap-new` to create a formula file in a tap on GitHub instead.
今回、ローカルにtap(formulaを入れるディレクトリ)とformulaを作成することで、過去バージョンのimagemagick@6を利用できました。
ローカルにtapを作成する
tapの説明は、ドキュメントの通りです。
directory (and usually Git repository) of formulae, casks and/or external commands
foluma、cask、外部コマンドのディレクトリ (通常は Git リポジトリ)
使用したいバージョンのfomulaを格納するためのディレクトリです。
brew tap-new ユーザー名/formura名
のように指定してください。
tapが作成されると、作成先のパスが表示されます。
$ brew tap-new mito/imagemagick@6
...
==> Created mito/imagemagick@6
/opt/homebrew/Library/Taps/mito/homebrew-imagemagick@6
...
tapに任意のformulaを保存する
先ほど作成したtapに、任意のバージョンのfomulaを格納します。
今回はこちらのコミットから欲しいバージョンを持ってきます。
(欲しいバージョンのコミットは git log | grep
などで良しなに探してください)
rawデータを先ほど作成したtapに保存します。
$ curl \
https://raw.githubusercontent.com/Homebrew/homebrew-core/8edbb4ffad0cb7a41eaf508f6b5d90b15222d458/Formula/i/imagemagick%406.rb \
-o /opt/homebrew/Library/Taps/mito/homebrew-imagemagick@6/Formula/imagemagick@6.rb
ローカルのfomulaをインストール
ローカルに保存したfomulaをインストールします。
$ brew install mito/imagemagick@6/imagemagick@6
$ brew info imagemagick@6
...
Installed
/opt/homebrew/Cellar/imagemagick@6/6.9.12-98 (767 files, 27.5MB)
Poured from bottle on 2024-05-03 at 16:58:12
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/i/imagemagick@6.rb
License: ImageMagick
...
無事に 6.9.12
がインストールできました!
用語もすべてビール関係で面白いですね。
Discussion