
Homebrewで過去バージョンのパッケージをインストールする手順
2022.12.27
導入
Javaのバージョンを下げて入れ直そうとしたところ、Homebrewだとそのままではできません。
というのも、Homebrewのスタンスとして brew install は最新バージョンのパッケージをインストールするためです。
最終的には過去バージョンをインストールできたので、今回はその紹介になります。
Homebrewについて
Homebrewは独自の概念(登場人物)があるため、簡単に整理します。
Formula (調理法)
・パッケージの情報が定義されたファイル
・このファイルを読み込んでローカルにビルドする
Tap (蛇口)
・パッケージの元(リポジトリ)と紐づける操作およびディレクトリ
・デフォルトではGitHub上にある「Homebrew/homebrew-core」というリポジトリがTapされている(=指定不要)
・独自・外部のリポジトリに対してTapすることもできる
Cellar (貯蔵庫)
・ローカルにある、brewコマンド経由でインストールしたパッケージ群の保管場所(の大元)
Rack (ラック)
・パッケージ単位で用意されるディレクトリ(=パッケージ名)
Keg (小樽)
・パッケージのバージョン毎に用意されるディレクトリ
・内部には実行可能ファイルやライブラリ本体が置かれる
・/usr/local/binなどからシンボリックリンクが貼られる(別途リンク作成、PATH通し必要なこともあり)
リポジトリにある調理方法が書かれたファイル(Formula)を取得するための窓口(Tap)を取り付け、インストールを実行して入れ物に格納&棚に整理するイメージです。
Homebrewで過去バージョンをインストール
Homebrewの概要を整理したので、早速実践していきます。(以降では、Homebrewは/usr/localにインストールされているものとします。)
1.ローカルにあるFormulaファイルが置かれている場所に移動する
1 | $ cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula |
2.コミットログを調べ、インストールしたいバージョンのコミットIDを把握する
1 2 3 4 5 6 7 8 9 10 11 | $ ls // インストールしたいパッケージのFormulaファイルを探す $ <span style="color: #000000;">git log --oneline openjdk@11.rb</span> // 今回は`openjdk@11`を指定 205a5432700 openjdk@11: update 11.0.17 bottle. 27d3fa42b1f openjdk@11 11.0.17 ~~~~~~~~中略~~~~~~~~~~~~~~~~~~ 65b9968a6b5 openjdk@11: Ensure library rpath has server/lib f17561a6361 openjdk@11: update 11.0.16.1 bottle. 3511bcd192f openjdk@11 11.0.16.1 // 古いバージョン 8c6c29bf363 openjdk@11: update 11.0.16 bottle. 4d4fee2eabf openjdk@11 11.0.16 |
今回は3511bcd192f openjdk@11 11.0.16.1
をインストール対象とする。
3.そのコミットにHEADを移す
1 | $ git switch -d 3511bcd192f |
※作業後元のブランチに戻しておきましょう。
4.該当パッケージをインストール
1 2 | $ brew install openjdk@11 // openjdk@11の箇所はインストールしたいパッケージ名を指定 |
ここでインストールが成功すれば完了です。(PATHを通す、リンクを貼るなどは今回の対象外とします。)
インストール時にエラーが出た場合
1 | Error: Calling Installation of <パッケージ名> from a GitHub commit URL is disabled! Use 'brew extract <パッケージ名>' to stable tap on GitHub instead. |
4.のインストール時にこのようなエラーがでる場合があります。
その場合は brew tap を使って、公式以外のリポジトリからインストールするようにする。
外部リポジトリを作成&tap接続
1 2 3 | <strong>brew tap-new <ユーザー名>/<リポジトリ名></strong> // <ユーザー名>/<リポジトリ名>は任意(GitHubの命名規則に則るためこのような指定) // /usr/local/hoewbrew/Library/Taps/<ユーザー名>/homebrew-<リポジトリ名> のディレクトリを作成 |
この操作で、ローカルの適当に名付けたディレクトリを作成&そのディレクトリをhomebrewがソース元として認識
インストールしたいパッケージ(バージョン指定で)を作成したtapに持ってくる
1 2 | brew extract --version=X.Y.Z <packageName> <ユーザー名>/<リポジトリ名> // /usr/local/hoewbrew/Library/Taps/<ユーザー名>/homebrew-<リポジトリ名>/Formula 配下にダウンロードされる |
指定したバージョンのパッケージをインストールする
1 | brew install <packageName>@X.Y.Z |
書いた人はこんな人

- 2022年7月に入社しました。開発未経験で未知の領域だらけですが、楽しく学びつつ、早く戦力になれるようにがんばります!
IT技術11月 30, 2023APIの認証について学んで実装してみた(by rails API)
IT技術8月 4, 2023TDD入門してみた by Laravel
IT技術6月 12, 2023型に詳しくなりたいのでPHPの勉強会に参加してみた
IT技術12月 27, 2022Homebrewで過去バージョンのパッケージをインストールする手順