Open4
GoのソースコードをHomebrewでどのようにインストールさせるべきか
homebrewでインストールできるようにする予定のツールのレビューを受けた。
いまどきのHomebrewでgoのツールをインストールできるようにするのはどうするのがいいのだろうか。
気になっている点
- brew installしたユーザがローカル環境でビルドすべきか、バイナリインストールすべきか
- ソースビルドからスタートで、バイナリ配布が理想
- https://zenn.dev/link/comments/ecc5f555fc18b0
- バイナリインストールさせる場合、用意させるバイナリはどんな物が必要か。例えば、macOSのメジャーバージョン単位で必要なのか
- 後方互換性は確認した。おそらくOSのAPIに直接アクセスしてない限りは大丈夫なのでは(仮説)
- いろんなツールがいろいろ複数管理しているリポジトリからgo installできるのか。
- できない保証はないが簡単しらべたところわからず。
brew installしたユーザがローカル環境でビルドすべきか、バイナリインストールすべきか
- ビルドさせるとinstallがコスト高なので、バイナリを配布を基本としつつ、ビルドができるのが理想だろう
- ただし、複数OS、複数アーキテクチャをサポート仕様とするとバイナリ生成やアップロードが手間である
- goはGo 1である限りは古いソースコードがビルド出来るようなので、ビルドのみという選択肢もありだろう
- Xcodeがインストールされていない場合、installができない。しかし、brew installする際に基本インストールしているはずなので、そんなに気にしなくて良いはずである。
- メジャーバージョンアップしているとアップデートが必要なので、その後に更新が必要ならひと手間存在する -> ユーザの問題としてもよいだろう
- brewなのでwindowsサポートは不要だがLinuxサポートは最近されているのであるとベター
結論
- バイナリインストール可能が理想
- Go言語のツールチェーンをインストールは避けたいため
- 対応アーキテクチャの広さからソースビルド配布も初期状態としてはよいだろう
- すべてのアーキテクチャ、OSに対してバイナリ提供は実装コストが存在する。とりあえず、配布するためにソースビルドさせるのはありだろう
バイナリインストールさせる場合、用意させるバイナリはどんな物が必要か。例えば、macOSのメジャーバージョン単位で必要なのか
- 最小限
- x86_64
- Rosetta2 でarm64は動作できるはず
- OSのマイナーバージョンもおそらくご完成があるんじゃないだろうか
- x86_64
- 理想
- arm64_monterey
- arm64_big_sur
- x86_64_monterey
- x86_64_big_sur
- x86_64_catalina
- x86_64_linux
- これぐらいやってもいいだろう
- arm64
- x86_64
古いOSは過去2年分程度あれば十分ではないだろうか。(根拠0)
ここで気になるのは、 arm64とx86_64だけ用意すれば過去のmacOSで動作するのか。
試しにghqのバイナリをダウンロードして利用したところ利用できた。
後方互換性はある結論
一つだけで十分な可能性がある。後方互換性は確認できたので、古いOSビルドするのが確実だろう。
前方互換性は現時点で確認できてない。
いろんなツールがいろいろ複数管理しているリポジトリからgo installできるのか。
Goで書かれたツールなのでgo installでinstallできても良さそう。
githubのサブディレクトリに対してgo installできるのか。
go install github.com/xxx/xxx@ブランチ名
などためしたけどinstallできず。
そこまで調べる必要はないとおもったので、有識者にきく。