Homebrewで過去バージョンのパッケージをインストールする手順
IT技術
導入
Javaのバージョンを下げて入れ直そうとしたところ、Homebrewだとそのままではできません。
というのも、Homebrewのスタンスとしてbrew install は最新バージョンのパッケージをインストールするためです。
最終的には過去バージョンをインストールできたので、今回はその紹介になります。
Homebrewについて
Homebrewは独自の概念(登場人物)があるため、簡単に整理します。
Formula (調理法)
・パッケージの情報が定義されたファイル
・このファイルを読み込んでローカルにビルドする
・パッケージの元(リポジトリ)と紐づける操作およびディレクトリ
・デフォルトでは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$ ls // インストールしたいパッケージのFormulaファイルを探す
2$
今回は`3511bcd192f openjdk@11 11.0.16.1`をインストール対象とする。
3.そのコミットにHEADを移す
1$ git switch -d 3511bcd192f
※作業後元のブランチに戻しておきましょう。
4.該当パッケージをインストール
1$ brew install openjdk@11
2// openjdk@11の箇所はインストールしたいパッケージ名を指定
ここでインストールが成功すれば完了です。(PATHを通す、リンクを貼るなどは今回の対象外とします。)
インストール時にエラーが出た場合
1Error: Calling Installation of <パッケージ名> from a GitHub commit URL is disabled! Use 'brew extract <パッケージ名>' to stable tap on GitHub instead.
4.のインストール時にこのようなエラーがでる場合があります。
その場合はbrew tap を使って、公式以外のリポジトリからインストールするようにする。
外部リポジトリを作成&tap接続
brew tap-new <ユーザー名>/<リポジトリ名> // <ユーザー名>/<リポジトリ名>は任意(GitHubの命名規則に則るためこのような指定) // /usr/local/hoewbrew/Library/Taps/<ユーザー名>/homebrew-<リポジトリ名> のディレクトリを作成
この操作で、ローカルの適当に名付けたディレクトリを作成&そのディレクトリをhomebrewがソース元として認識
インストールしたいパッケージ(バージョン指定で)を作成したtapに持ってくる
1brew extract --version=X.Y.Z <packageName> <ユーザー名>/<リポジトリ名>
2// /usr/local/hoewbrew/Library/Taps/<ユーザー名>/homebrew-<リポジトリ名>/Formula 配下にダウンロードされる
指定したバージョンのパッケージをインストールする
1brew install <packageName>@X.Y.Z
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ
2022年7月に入社しました。開発未経験で未知の領域だらけですが、楽しく学びつつ、早く戦力になれるようにがんばります!
おすすめ記事
immichを知ってほしい
2024.10.31