Homebrewでインストールしたパッケージの管理をする Homebrew-file の使い方です。今はもう使えないbrew bundle
の代わりに使ってますがとても便利です。
事前準備
GitHubにBrewfileという名前のリポジトリを作ります。
Homebrew-fileのインストール
インストールには次のコマンドを実行します。
$ brew tap rcmdnk/file
$ brew install brew-file
または
$ brew install rcmdnk/file/brew-file # tapとinstallを同時にしてくれる
brew tap
したリポジトリは以下で確認できます。
$ ls /usr/local/Library/Taps/ caskroom homebrew rcmdnk sanemat
リポジトリの登録
インストールできたら最初に作成したBrewfileのリポジトリを登録します。SSHで接続しますので公開鍵を登録してない方は先に登録して下さい。 GitHubとBitbucketへの公開鍵の登録方法+SSHで複数鍵の使い分け - TASK NOTES
$ brew file set_repo -r tasukujp/Brewfile $ git clone git@github.com:tasukujp/Brewfile /usr/local/Library/tasukujp_Brewfile Cloning into '/usr/local/Library/tasukujp_Brewfile'...
登録したリポジトリは/usr/local/Library/Brewfile
に保存され、/usr/local/Library/<リポジトリ名>
にcloneされます。
$ cat /usr/local/Library/Brewfile git tasukujp/Brewfile $ ls -a /usr/local/Library/tasukujp_Brewfile/ .git Brewfile README.md
Brewfileを編集する
brew file edit
でBrewfileの編集ができますが失敗しました。
$ brew file edit
$ git clone git@github.com:tasukujp/Brewfile /usr/local/Library/tasukujp_Brewfile
fatal: destination path '/usr/local/Library/tasukujp_Brewfile' already exists and is not an empty directory.
can't clone git@github.com:tasukujp/Brewfile.
please check the repository, or reset with
$ brew file set_repo
リポジトリが空のままなので先にファイルを作っておかないといけないみたいです。
$ cd /usr/local/Library/tasukujp_Brewfile $ vi Brewfile # 空のまま保存する $ brew file edit
これで編集できるようになりましたが、当然まだ空のままなのでBrewfileを今いれているパッケージで初期化してみます。
$ brew file init You are using Brewfile of git@github.com:tasukujp/Brewfile. Do you want to overwrite it? [y/n]: y ########################################################## # Initialize /usr/local/Library/tasukujp_Brewfile/Brewfile ##########################################################
初期化されました。ここからは自由に追加や削除をして編集しましょう。普通のファイルの編集方法でOKです。
Brewfileをpush/pullする
編集したBrewfileはbrew file push
でリポジトリに登録する事ができ、逆にbrew file pull
でリポジトリから最新のBrewfileを取得することができます。
$ brew file pull cd /usr/local/Library/tasukujp_Brewfile $ git pull From github.com:tasukujp/Brewfile c853801..5f7997b master -> origin/master Updating c853801..5f7997b Fast-forward Brewfile | 55 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 39 insertions(+), 16 deletions(-)
パッケージをインストールした際にbrew file update
を実行するとBrewfileを更新してリポジトリにもpushしてくれます。参考までにbrew file update
の処理順は「pull -> install -> brew update/upgrade -> init -> push -> clean -C.」です。
また、パッケージのインストール時にBrewfileの更新も行ないたい場合はbrew file brew install <package>
という具合にラップして実行します。
Brewfileを元にパッケージをインストールする
Brewfileを自分で編集した場合はbrew file install
を実行することで、Brewfileに書かれてるパッケージをインストールしてくれます。既にインストールされているパッケージがあっても気にしなくて大丈夫です。
Homebrew-caskのアプリケーション確認
brew file casklist
を実行するとインストールしてるアプリケーションがHomebrew-caskでインストール可能かどうかを確認できます。
$ brew file casklist Total: 76 apps have been checked. Apps in ['/Applications', '/Applications/Utilities', '~/Applications'] Installed by Cask: /Applications/Utilities : 1 ~/Applications : 1 Installed by Cask (New version is availble, try `brew file cask_upgrade`): ~/Applications : 2 Installed directly, but casks are available: /Applications : 9 Installed from Appstore /Applications : 12 No casks /Applications : 33 /Applications/Utilities : 18
Installed directly, but casks are available
がHomebrew-caskでインストール可能なアプリケーションになります。brew file casklist
を実行したカレントディレクトリにCaskfile
が作成されていますのでファイルを開いて確認してください。Caskfileに書かれているアプリケーションを削除してBrewfileに追加したらbrew file install
を実行してみましょう。
ついでにInstalled by Cask
のメッセージを見るとアップデート可能なアプリケーションがありましたので実行しました。
$ brew file cask_upgrade $ brew cask install alfred ==> Downloading https://cachefly.alfredapp.com/Alfred_2.6_374.zip ==> Symlinking App 'Alfred 2.app' to '/Users/tasukujp/Applications/Alfred 2.app' ==> Symlinking App 'Alfred Preferences.app' to '/Users/tasukujp/Applications/Alfred Preferences.app' 🍺 alfred staged at '/opt/homebrew-cask/Caskroom/alfred/2.6_374' (284 files, 7.8M)
環境構築時の使い方
新しいPCにBrewfileを元に同じパッケージで環境を構築したい場合は、以下の順番で実行する必要があります。
- Homebrewをインストール
- Homebrew-fileをインストール
- Brewfileのリポジトリを登録
- brew file install を実行する
これで環境構築の手間が省けると同時にパッケージの管理も容易になりましたね。
関連記事
Homebrew-caskでMacのGUIアプリケーション管理 - TASK NOTES
Homebrew-versionsでcask installしたアプリケーションのバージョンを選択する - TASK NOTES