homebrew-file で色々機能を付け加えていってREADME がごちゃごちゃしてしまったので 簡潔化してみました。
Brew-fileのコンセプト
元々やりたかったのは自分で何かをごちゃごちゃ書いたりしなくても、 今使ってる環境の情報をキープしたり他で簡単に使える様にしたい、ということ。
BOXEN とか、最近だとAnsible とか、環境設定を書いておくとその状況をすぐに作れる、と言うものがありますが、 こういうのは最初に書き方を覚えるのが大変です。 YAMLだろうとなんだろうと分からないものは分からない。(単にコマンドを並べるだけなのが一番簡単だとは思いますが。)
それから環境を新しくしたかったら書き直さないといけません。 色々インストールしたりして試す場合には適当な頃合いを見つけて 手動で書きなおす必要があります。
何か開発とかを行ってて特定の環境を共有したり何度も再現しないといけない場合は必要なこともありますが、 個人用Macでは面倒すぎます。 とにかく自分で何か書いたりするのは避けたい所。勝手にやってもらいたい。
そこでHomebrewを使ってインストールとかアンインストールを 普通にしながら勝手に記録を取って共有してくれるものがほしい、 ということで homebrew-file を使っています。
最初はある程度インストールしたりアンインストールしたら自分で
init
とかしてファイルをアップデートする必要はありましたが、
今はbrew-wrap
を使ってbrew install
等普通のbrew
コマンドを使ってるだけで
勝手にBrewfileがアップデートされる様になっています。
以下、ローカルファイルでそのまま使うのと、 Dropboxとかオンラインストレージで共有する方法、 更にGitHubとかで共有する方法について。
インストールとbrew-wrapの設定
インストールはHomebrewで
$ brew install rcmdnk/file/brew-file
で。
次にオリジナルのbrew
コマンドを使った後に
自動でBrewfileをアップデートするようにするため
1 2 3 |
|
と言う設定を.bashrcなり.zshrcに書いておきます。
ローカルファイルで使う
homebrew-fileではデフォルトでは /usr/local/Library/Brewfile という場所にパッケージリストファイルを作ります。
最初に使う時は、まず今のパッケージを書き出すために
$ brew file init
します。
中を見るためには
$ brew file cat
とすると表示してくれます。
後は普通にbrew install <package>
とかbrew uninstall <package>
とかすると、
上のbrew-wrap
の設定がしてあれば
自動でBrewfileをアップデートします。
もし他のMacで作ってあるBrewファイルがあったり 自分で作ったものがあったりしたら、そのBrewfileを /usr/local/Library/Brewfile へコピーして
$ brew file install
すればリストにあるパッケージをインストールしてくれます。
Dropboxとかのオンラインストレージを使う
上の使い方に加えて、自動で他と同期したりするために オンラインストレージを使うことも出来ます。
Brewfileの場所は
export HOMEBREW_BREWFILE=~/Dropbox/Brewfile
とすると指定することが出来ます。
上にもあるように、Brewfileを初めて使う場合には
$ brew file init
これで~/Dropbox/Brewfileが初期化されます。
新しいMacで既にあるBrewfileを使う場合には、
まずDropboxとかで同期して、HOMEBREW_BREWFILE
の値を設定して
$ brew file install
すればOK。
後は各Macで普通にbrew install
とかしてると共通のBrewfileをアップデートしていきますが、
他でインストールされたものは他でインストールされないので、
$ brew file install
とかする必要があります。 また、他で消したものも同期して消したい場合には
$ brew file update
すると他で削除されたものの削除も同時にしてくれます。
これを毎回やるのは面倒なのでcronジョブとかで
30 12 * * * brew file update
とか設定しておけば毎日お昼に自動でアップデートしてくれます。 (複数のMacでやる場合は同時に触らないように適当に時間をずらして設定してください。)
GitHubとかのGitのレポジトリを使う
GitHubとかでファイルの管理をするとこれまでの履歴とかも簡単に 見れるので便利です。
用意するのはBrewfileというファイル(空でO)を持ったGitのレポジトリ。
もしGitHubを使う場合はhomebrew-fileで直接作ることも出来ます。
$ brew file set_repo
Set repository, "non" for local Brewfile.
<user>/<repo> for GitHub repository,
or full path for the repository:
とset_repo
コマンドでレポジトリをセットしますが、
GitHubのレポジトリなら省略してrcmdnk/Brewfile
みたいに
ユーザー名とレポジトリ名だけでもOK。
もし、レポジトリが存在しない場合、GitHubを指定した時には レポジトリの作成に入ります。
レポジトリを設定したら後は上の方と同じように一番最初は
$ brew file init
後は普通にbrew install
とかをしていけばOK。
レポジトリのアップデートをするには
$ brew file update
を行います。
レポジトリがセットされてる場合、update
コマンドは
git pull
in Brewfile repositorybrew file install
brew file clean
brew update && brew upgrade --all
brew file init
git commmit && git push
を行います。
これも適当にcronジョブとかで
30 12 * * * brew file update
と設定しておけば自動でレポジトリの方へも送ってくれます。