2015年3月25日水曜日

Homebrew で Mac の環境を移行したり同期する


新しい Mac にアプリやライブラリ等を Homebrew によって自動で移行させて、かつ双方 の Mac で環境を同期させるやり方の覚え書き。

古い Mac での設定

Homebrew と git (Developer tool が入っているなら大丈夫) が既に入っている前提。

Homebrew のアップデート

brew update
brew upgrade

Homebrew-Cask のインストール

/Applications/ フォルダ内のアプリを Homebrew で入れられるようにするツール。
brew install caskroom/cask/brew-cask

Homebrew-file の設定

Homebrew-Cask で入れたアプリも含め、Homebrew 経由で入れたアプリ、パッケージ等を一元管理するためのツール。

git の設定

自分は使い回している .gitconfig ファイルがあるのでそれを使っている。 無ければ以下のように設定する。
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

ssh-keygen -t rsa -C "your_email@example.com"
して ~/.ssh/id_rsa.pub の内容を GitHub に登録。
この辺の話は以前の記事にも書いてある。
Ochiailab Tips: Git と GitHub か Bitbucket を利用してソースのバックアップを取る

GitHub 上に Brewfile レポジトリを作る

最初は空っぽでいい。 Brewfile に Homebrew 経由でインストールしたアプリやパッケージを一覧にしておくことになる。

brew-file のインストール

brew tap rcmdnk/file
brew install brew-file

GitHub 上の Brewfile と Homebrew に紐付け

brew file set_repo -r [GitHub のアカウント名]/Brewfile

初期化

brew file init
うまくいったら
brew file edit
でエディタが立ち上がって、Brewfile が編集できるはず。 何もいじらずに閉じる。
この辺で若干つまずいたけど、支持通りにやればなんとかなった気がする。

Brewfile の編集

/Applications/ フォルダ内の既存アプリのうち Homebrew-Cask で入れられるも のを Cask で入れ直して Brewfile に登録する作業。

Cask でインストールできるアプリをチェック

以下のコマンドはカレントディレクトリに Caskfile というのを生成するので注意。
brew file casklist
そしたら、英語で
  1. Cask でインストールされたアプリ
  2. brew install で入れたアプリ
  3. /Applications/ フォルダに手動で入れたけど、Cask で入れられるアプリ
  4. Appstore から入れたアプリ
  5. Cask では手に入らないアプリ
の数が表示される。 これらのアプリ一覧は生成された Caskfile に記入されている。 このうち 3 のアプリをこれからインストールする。

Cask でアプリをインストール

例えば iTerm2 をインストールする場合は以下。
brew cask install iterm2
アプリは何個でも書いて大丈夫。
Cask 上でアプリがどういう名前で登録されているか確認する場合は
brew cask search amazon
などと検索すれば出てくる。
ちなみに、Cask 経由で入れたアプリはデフォルトでは /opt/homebrew-cask/Caskroom/ にインストールされて、 /Applications/ フォルダにはシンボリックリンクが貼られる仕様になっている。 この挙動を変える方法もあるけど、ここでは触れない。
あと、一度既存アプリを削除したほうがいいらしいけど、面倒くさかったのでやらなかっ た。 特に問題は発生していない。

Brewfile のアップデート

Brewfile を更新して GitHub に同期。
brew file update

新 Mac での設定

以下、前節の設定と被る部分もあり。

Developer tool のインストール

xcode-select --install
sudo xcodebuild -license
スペースキーで最後まで読んで agree する。

git の設定

自分は使い回している .gitconfig があるのでそれを使っている。 無ければ設定する。
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

ssh-keygen -t rsa -C "your_email@example.com"
して ~/.ssh/id_rsa.pub の内容を GitHub に登録。

Homebrew のインストール

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor

Homebrew-Cask のインストール

brew install caskroom/cask/brew-cask

Homebrew-file のインストール

brew-file のインストール

brew tap rcmdnk/file
brew install brew-file

GitHub 上の Brewfile を紐付け

brew file set_repo -r [GitHub のアカウント名]/Brewfile

アプリのインストール

以下を行えば、Brewfile に書いてあるアプリ、パッケージをダウンロードしてくれる。
brew file install
ちょくちょくパスワードが必要になったりする。

複数 Mac で同期

新しくパッケージをインストールするとき

新しく Homebrew 経由で入れるパッケージは、 brew install <package> ではなく、
brew file brew install <package>
とする。 これにより、自動的に Brewfile が更新される。
この更新を GitHub に反映させるには
brew file push
でいける。
もし普通に brew install で入れてしまっても
brew file update
でなんとかなる。

他の Mac での更新を反映させたいとき

brew file pull
で GitHub の Brewfile をダウンロードして、
brew file install
で不足分をインストール。
もしくは
brew file update
でもなんとかなる。 ただ、時間はかかる。

brew file update について

以下の一連のコマンドを実行する
  1. brew file pull
  2. brew file install
  3. brew update & brew upgrade
  4. brew file init
  5. brew file push
  6. brew file clean -C

Cask で入れたアプリのアップデート

Cask で入れたアプリは brew update やっても アップデートされないので以下を実行する。
brew cask update
ただし、これだと古いバージョンも残ってしまうので、最新版だけ残す場合は以下。
brew file cask_upgrade -C

参考サイト



2 件のコメント :