HomeBrewのFormulaを作ってみました。ということで備忘録。

作り方

サンプルはこちらです→tzmfreedom/homebrew-clipserver: HomeBrew formula for clipserver using go.

HomeBrewはgitとRubyで出来ており、gitでFormulaのRubyスクリプトをpullして、pullしてきたRubyスクリプトでインストールを行うフローになっています。

以下でFormulaのテンプレートを作成可能です。

配布ファイルのURLはxxx-{VERSION}.tar.gzの形式になっていると、Formulaのsha256にファイルのハッシュがセットされます。また、デフォルトで配布ファイルのURLに対してGETするようになっているので、配布ファイルをまだWebに上げていない場合は、以下のように–no-fetchオプションを指定する必要があります。その場合はダウンロードをしないのでsha256はセットされません。

上記コマンドを実行すると、エディタが自動的に開き、Formulaのスクリプトを記述していきます。

クラスメソッドでFormulaの属性値(description、ホームページ、配布ファイルのURL、配布ファイルのsha256、依存パッケージなど)を設定してinstallメソッドでインストール時の挙動(主にビルドやファイルの移動)を定義することになります。上記のurl属性はgitのリポジトリになっていますが、ファイルのダウンロードができればS3でも何でもOKです。また、対象のファイルは単一のファイルでも良いですし、gunzipで圧縮しても良いです。

bin.installをすると展開したファイル(/usr/local/Cellar/{PACKAGE}/{VERSION}内のファイル)に対するシンボリックリンクを/usr/local/binの中に作成してくれます。

インストール後に対象のシンボリックリンクの削除や再作成を行う場合は、以下のコマンドを叩きます。

今回は公式ではないリポジトリを自身で作成し、そのリポジトリをローカルのMacから利用します。その際、tapのコマンドを使ってリポジトリを追加する必要があります。以下のコマンドで公式ではないリポジトリを追加できます。

URLの形式ではなく{USER}/{REPOSITORY}の名前を入れた場合は、githubに取得しに行くことになります。githubのリポジトリ名は以下の形式にする必要があります。

リポジトリ直下には上記のFormulaのスクリプトを置く必要があります。

tapでリポジトリを追加したら以下のコマンドでパッケージをインストールできます。

参考URL