brewでマイナーバージョンを指定してFormulaを入れる方法
brewでマイナーバージョンを指定してFormulaを入れる方法
mysqlをマイナーバージョンを固定してインストールさせたかった時にハマったのでメモ。
別にmysql以外にも使える
やりたかったこと
brew install [email protected]とかやりたかった
問題
- そもそもbrewにバージョンの概念はあんまりない。
- mysqlのあとにアットマークがついたものがあるのは、あくまで別パッケージとして配布されてるだけ
調べてわかったこと
- homebrewのパッケージの中身はrubyのスクリプト
- スクリプトの中でバイナリをakamaiとかから落としてコピーとかしてる
- homebrewの実態は、めちゃくちゃ大きいgitでrubyのスクリプト管理してるだけ(https://github.com/homebrew/homebrew-core/)
- パッケージの中身のスクリプトが更新され、新しいバージョンのパッケージがスクリプトの中から落とされるようになることでアップデートできる
- homebrewがgit cloneしてきたパッケージ全体は
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
以下にある。嘘だと思ったら上に書いてあるgithubリポジトリと見比べてみて。
- パッケージのrbファイルは
homrbrew/homebrew-core/Formula
にある(例: https://github.com/Homebrew/homebrew-core/blob/master/Formula/curl.rb)
- homebrewのパッケージの中身はrubyのスクリプト
- スクリプトの中でバイナリをakamaiとかから落としてコピーとかしてる
- homebrewの実態は、めちゃくちゃ大きいgitでrubyのスクリプト管理してるだけ(https://github.com/homebrew/homebrew-core/)
- パッケージの中身のスクリプトが更新され、新しいバージョンのパッケージがスクリプトの中から落とされるようになることでアップデートできる
- homebrewがgit cloneしてきたパッケージ全体は
/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
以下にある。嘘だと思ったら上に書いてあるgithubリポジトリと見比べてみて。 - パッケージのrbファイルは
homrbrew/homebrew-core/Formula
にある(例: https://github.com/Homebrew/homebrew-core/blob/master/Formula/curl.rb)
じゃあ、gitの古いコミットから、入れたいマイナーバージョンの時のrubyスクリプトを見つけて、手元で実行するだけでいいんじゃ?
→それであってた
やったこと
githubで検索をかけて、mysql.rbのコミットを全部みた
だめだった。タイムアウトが起こって(たぶん負荷が大きすぎた)、githubに「ちょっと荷が重いからお前自力でやれ!」って怒られた。
とりあえず自分の手元(/usr/.../homebrew-core/Formula
)で、git log [email protected]
してみた
なんとlogが一個しか(最新版しか)表示されない。それもそのはず、homebrewでは高速化のために最新コミットしかダウンロードしてきてないらしい。
git fetch --unshallow
した
このコマンドで、リポジトリの全コミットを落としてこれると聞いたのでやってみた。
10分くらいかかった。
もう一度git log [email protected]
してみた
ずら〜と出てきた。その中に自分が入れたいマイナーバージョンの最終コミットっぽいのがあったので、それのコミットIDをメモった。
例: 8a363290b68c1c6aa8fb22f90443f10b1fb70ecc
githubの方で確認した
コミット番号からソースコードを確認するために、適当なコミットを開いて、URLのコミットIDを書き換えて、ページに飛んだ。
インストールしてみる
- 直接実行は難しそうだし、そもそもbrewの監視外になってしまう。
- 自分の手元でcheckoutする手もあるらしいけど、そもそもgit fetchにめちゃくちゃ時間かかるからみんなでやりたくない
- brew install にURL渡すとよしなに入れてくれるらしい←これに決定
とりあえずデータをそのまま見られるrawのURLをgithubから取ってくる。
そして、そのままbrew installに渡してみる。ここで注意なんだけど、chromeとかのアドレスバーからコピペすると、chromeが丁寧に@を%40にURLエンコードしてくれる。これだとうまく動かないので手動で@に直す。
$ brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/8a363290b68c1c6aa8fb22f90443f10b1fb70ecc/Formula/[email protected]
インストールできた。めでたしめでたし。
Author And Source
この問題について(brewでマイナーバージョンを指定してFormulaを入れる方法), 我々は、より多くの情報をここで見つけました https://qiita.com/onokatio/items/51f5f623d8c24d78f6c7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .