Brewall というスクリプトを作ってHomebrewのパッケージを簡単に管理しようとしてるのですが、 その管理のためのリストファイルをGitのレポジトリから取ってきたり レポジトリに送ったり出来る様にしました。
Brewall
Brewallについてはこちら。
Homebrewで管理してるパッケージを一括管理して、 リストを更新して一括でインストールしたりアンインストールすることが出来る スクリプトです。
以前からの更新は
curlでのインストールスクリプトを追加した。 (Homebrew入れる前でもワンラインコマンドで直接入れられてHomebrewまでインストールしてくれる)brewall installの様なコマンド型の引数を-i等に加えて導入した。- Gitのレポジトリでリストファイルを管理できる様にした。
と言った所です。
Gitのレポジトリでリストファイルを管理
初期段階では/usr/local/Library/Brewfileというファイルに
リストを書き出してこのファイル中心に管理を行います。
これに対して、
$ brewall set_repo -r [email protected]:user_name/repo_name
等とすると、このレポジトリを/usr/local/Library/user_name-repo_nameへ
cloneしてきて、レポジトリ内にあるBrewfileというファイルで管理する様になります。
この際、/usr/local/Library/Brewfileへはこのレポジトリ情報が代わりに書き込まれます。
もし、repo_nameがBrewfileというファイルを持ってない場合は、最初に
$ brewall init
とすれば、レポジトリ内にBrewfileというファイルを作りパッケージ情報を書き込みます。
その後、
$ brewall push
とすると、このレポジトリをリモートへpushします。
これで、他のMacから
$ brewall set_repo -r https://github.com/user_name/repo_name
$ brewall install
とすれば、同じパッケージ群をインストール出来るようになります。 いらないパッケージも同期して消したい場合には
$ brewall clean -C
もしてあげればOK。
(上のレポジトリのオプションを-rにしたかったので、
clean upを実際に走らせるオプションをこの-Cへ変更してるのでもし使ってたら注意して下さい。)
まとめて行うには
$ brewall update
行うと、pull, install, brew upgrade, push, cleanと一連のコマンドを実行します。 ただ、自分でインストールしてBrewfileに書き込んで無いものがあると それもcleanしてしまうので注意が必要です。
常にインストールしたものを書き込むにはbrew install <package>の代わりに
$ brewall brew install <package>
とbrewallコマンドにbrewコマンドを噛ませます。
第一引数がbrewの場合には、brewコマンドを実行してinitをする、
という作業が行われます。
Brewfile用に使うレポジトリは、基本的にはBrewfileと言う名前のファイルだけが必要です。
レポジトリ名はなんでも構いません。
最初にローカルでinitするのであれば空のレポジトリでも構いません。
(適当なREADMEだけとかでも)
レポジトリの指定はGitHubであれば前の部分を除いて
$ brewall set_repo -r user_name/repo_name
だけでも解釈します。
まとめ
ということでリストファイル自体をGitで管理することで、 他の端末との同期を簡単にして、 さらにリストの履歴も簡単に取る事が出来るようになります。
こんな感じ。
今のところ、途中でpull/pushで衝突が起こった際には 手動でレポジトリをいじる必要が有りますが、 Brewfileを下手に書き換えない限りはそんなに衝突する事もないと思います。
管理リストの履歴が残るのは一台の端末だけでも便利だと思うので 良かったら使ってみてください。
