1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Homebrewで過去インストールしたパッケージのバージョンがbrew listからなくなったときの対処法

Last updated at Posted at 2025-01-16

homebrewで過去にインストールしたパッケージのバージョンがいつの間にかなくなってしまっていたことって経験したことないでしょうか。
私はあります。というかさっき2回目に遭遇して過去どのようにしたのか忘れていたので、備忘録がてらその時とった対処法を記載しときます。
※ 公式の対処法ではありませんので自己責任でお願いいたします。

結論

  1. homerew-coreリポジトリ内のFormulaディレクトリで必要なパッケージを探す(masterになければ過去コミットにcheckoutして探す)
  2. Formulaディレクトリからインストールしたいパッケージのrbファイルをダウンロード
  3. 以下コマンド実施
    $ brew install 2でインストールしたrbファイル
    

そもそもHomebrewってどうやってパッケージをインストールしてるの?

Homebrew は Homebrew用に作成されたrubyスクリプトを実行して各パッケージのダウンロードURLからパッケージをDL、インストールしています。
各パッケージ用のrubyスクリプトはhomerew-coreリポジトリ内のFormulaディレクトリにて管理されており、基本はここからrbファイルを取得してスクリプト実行することでパッケージがインストールされる仕組みになっております。

こちらの方の図解が分かりやすかったです。
MacのHomebrewとは?仕組み・使い方と用語整理

公式以外からパッケージをインストールする方法

homerew-coreリポジトリ内に存在しないパッケージは以下のいずれかで取得することができます。

  1. brew tapで任意のFormulaディレクトリを追加してインストールする方法
  2. rbファイルを用意してインストールする方法

正攻法としては1だと思います。ただ、自分の理解力が乏しくやり方がいまいちピンとこなかったため、今回は2の方法で実施することにしました。

※ 1についてはここあたりで解説されていましたので、ご興味ある方はどうぞ。
HomebrewでFormulaにない任意のバージョンのパッケージをインストールする - ひよこまめ
Homebrewで任意のバージョンのパッケージをインストールする

rbファイルの取得方法

rbファイルはFormulaディレクトリに存在しており、過去配布していた実績があるのであればhomerew-coreリポジトリの過去コミットに戻ることで過去インストールした際のバージョン向けのrbファイルを取得することができます。
git cloneして git checkoutで取得する方法もあるので、そこはやりやすい方で試し見ると良いと思います。

私の場合はプロジェクトで利用しているmysql-clientがversion 8.3でいつの間にかしれっとhomebrewのインストール可能nバージョンから8.3が消えていて絶望しましたが、色々調べてなんとか過去配布されていたrbファイルから取得できたので良かったです。
(バージョン変更はマイナーバージョンでもホント面倒手間がかかるので、何としてでも8.3をインストールしたかった…)

最後に

今回ご紹介した方法はあくまで一時的な解決策です。
本来あるべき姿としては最新の安定版にアップデートしていくことが大事ですので、そこのほどご留意いただけると幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?