Yosemiteをインストールする前に/usr/localをどこかへ退避して時間短縮（ただしインストーラ任せの方が安全）

![yosemite.png](https://qiita-image-store.s3.amazonaws.com/0/19597/dc6c5643-1b5a-42a4-d719-8b09ea185ce9.png)
Yosemite まだ入れてないのですが、 Homebrew とか TeXLive/MacTeX とかで /usr/local をいじっている人向けの tips を拾ったのでご紹介。
その他もろもろも。
#2015/10/1追記：El Capitanでは/usr/localを移動させないほうが安全
>Yosemite のアップグレード時間を短縮するための hack でやっていたような /usr/local を退避して～というのを何も考えずにやると大いに事故る確率が高いという結果となった。


>- [El Capitan の rootless について, 黒船亭でディナー - HsbtDiary(2015-09-16)](http://www.hsbt.org/diary/20150916.html#p01)

El Capitan で Homebrew を使いたい場合には別エントリを書きましたのでそちらもご覧ください。

- [Mac - HomebrewはEl Capitanへアップグレードする前に入れておくほうがよい - Qiita](http://qiita.com/riocampos/items/525ec4b35744ad586c5a)

（追記ここまで）

#/usr/localを退避しない場合でも時間が掛かるだけ
この記事を見て「死んだ」「遅かった」「あぶねー」などとはてブ又はツイートしてる人が多いようなので、念のために先に掲げておきます。
**/usr/local を退避しなかった場合でも単に時間が余計に掛かるだけ** で、特に弊害は生じないはずです。更に言えば、この手順に倣って **不用意に /usr/local を移動させたことにより弊害が生じるおそれもあります** （責任は負いかねます）。
追記：[コメント欄](http://qiita.com/riocampos/items/a0f58b63b82844a24140#comment-62ce0ec82d3e2df48f08)にトラブル報告が上がっています（ @marmot1123 さんご報告ありがとうございます）。

#tips
1. Yosemite のインストーラは /usr/local を移動させるので、インストールする前に手動で退避させておくとインストール時間が短くなる
* Yosemite インストーラのログは ⌘L で見れる
* /usr/local を退避せずに、できるだけ /usr/local を小さくして Yosemite インストール実行という方法もある（[後半にその方法を解説](http://qiita.com/riocampos/items/a0f58b63b82844a24140#usrlocal%E9%80%80%E9%81%BF%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%ABusrlocal%E3%82%92%E6%95%B4%E9%A0%93%E7%B8%AE%E5%B0%8F%E3%81%97%E3%81%A6%E6%99%82%E9%96%93%E7%9F%AD%E7%B8%AE)しました）
* もしかしたら `/usr/local/Library/brew.rb` の shebang が `#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0` のようにRuby 1.8 指定になっているかもしれない（このままだと Yosemite で Homebrew が動かない）。ので `#!/System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0` に変更しておく（なお私の環境での shebangは `Current` でしたので、 Homebrew を入れた時期によるかも）（追記：[2014年6月に変更してますね。](https://github.com/Homebrew/homebrew/commit/1bbcc4b5110f5a0573dfc78175d05fe454bbbda0) →[brew.rb の shebang の治し方を追記しました](http://qiita.com/riocampos/items/a0f58b63b82844a24140#usrlocallibrarybrewrb%E3%81%AEshebang%E3%82%92git%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E6%B2%BB%E3%81%99)。）
* OSXFUSE や Trim Enabler など未署名 kext は野良扱いされて読み込まれないらしい。 `sudo nvram boot-args="kext-dev-mode=1"` で基本的には回避できそう（ただし **自己責任** でヨロ （特に  Trim Enabler 。下のAppleちゃんねるリンク参照））
* 起動可能な Yosemite インストールディスクを（8GB以上の） USB メモリやSDカードなどに作成しておきましょう
* **「残り○分」を信用しない**(w

#/usr/local退避
##警告：シェルを/usr/local/bin以下のものに設定している場合
元に戻しておきましょう。 **本当に死にかけます** （[コメント欄参照](http://qiita.com/riocampos/items/a0f58b63b82844a24140#comment-62ce0ec82d3e2df48f08)）。
##注意：最近 `brew update` してない場合
すぐに `brew update` しましょう。
これだけで上記4番を回避できる（はず）。
`brew doctor` して `brew update` というコンボを強くオススメします。

##作業手順
前準備を全て終えてから `sudo mv /usr/local ~/local` 、そして Yosemite インストール。そして `sudo mv ~/local /usr/` で戻す。
ただしその際に **/usr/localが存在する** ならば移動に失敗します。移動に失敗した場合には、 **状況を確認しながら移動する必要があります** 。
#/usr/local退避が面倒ならば
もう一度書きます。
/usr/local を退避しなかった場合は、単に時間が余計に掛かる **だけ** です。
ので、上記作業が面倒であれば、寝る前にインストール作業を開始しましょう。朝には終わっているでしょう。 **そのほうが安全** だと思います。

#/usr/local退避の代わりに/usr/localを整頓/縮小して時間短縮
タイトルと違ってくるのですが… /usr/local の整頓を行うことで Yosemite インストールの時間短縮を図るやりかたもあります。
[Faster Mac OS X 10.10 Yosemite Upgrades for Developers – Jim Lindley](https://jimlindley.com/blog/yosemite-upgrade-homebrew-tips/)
の Option 2 に載ってます。
**正直なところ、こちらのほうが /usr/local 退避よりも適切な方法かと思われます**。

0. 追記：まず `brew update` を行うことで `/usr/local/Library/brew.rb` を更新しておく
1. フルバックアップを取る（Time Machine で取っておけば大丈夫でしょう
2. `brew doctor` と `brew missing` で問題ないことを確認
3. `brew leaves` で依存性のない Formula をリストアップし、不要なもの FORMULA をまとめて削除 `brew uninstall FORMULA --force` する（`brew rm` / `brew remove` / `brew uninstall` は全て同じです）
4. `brew cleanup` で古い Formula をまとめて削除
5. Homebrew 以外で /usr/local に入れたライブラリや実行ファイルなども整頓（一旦アンインストールして Yosemite インストール後に再度インストールするのも一考
6. 最後にまた `brew doctor` で確認
7. Yosemite インストール
8. Homebrew 動作確認。うまく動かなければ `brew doctor` や `brew update` で確認

2015/5/2追記：以下で作られるシェルスクリプトを作成して控えておき、 Yosemite インストール前に Homebrew を全て消してしまい、インストール後にシェルスクリプトを実行する、のも良いと思います。

- [brew install済みのformula一覧を元にbrewfile.shを作るワンライナー - Qiita](http://qiita.com/macoshita/items/dbc9b46b4ad0c270241a)

なお、 Homebrew の全削除は以下で行えます。

>##How do I uninstall Homebrew?
To uninstall Homebrew, paste the command below in a terminal prompt.
```bash
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
```
[homebrew/FAQ](https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/FAQ.md)

#トラブル対策
Yosemite インストールに伴う<del> Homebrew の</del>対策用資料を貼っておきます。
（つまり Yosemite にした **あと** の対処法）

- [Mac - Yak shaving in Yosemite - Qiita](http://qiita.com/naoya@github/items/8793fe9227f2b144b1ff)

>    - [インストール中残り1分で止まって時間がかかる](http://qiita.com/naoya@github/items/8793fe9227f2b144b1ff#%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E4%B8%AD%E6%AE%8B%E3%82%8A1%E5%88%86%E3%81%A7%E6%AD%A2%E3%81%BE%E3%81%A3%E3%81%A6%E6%99%82%E9%96%93%E3%81%8C%E3%81%8B%E3%81%8B%E3%82%8B)
>    - [/usr/local/bin に PATH が通ってなくていろいろコマンドが動かない](http://qiita.com/naoya@github/items/8793fe9227f2b144b1ff#usrlocalbin-%E3%81%AB-path-%E3%81%8C%E9%80%9A%E3%81%A3%E3%81%A6%E3%81%AA%E3%81%8F%E3%81%A6%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8C%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84)
>    - [reattach-to-user-namespace が Yosemite で動かない](http://qiita.com/naoya@github/items/8793fe9227f2b144b1ff#reattach-to-user-namespace-%E3%81%8C-yosemite-%E3%81%A7%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84)
>    - [iPhone アプリをビルドしたら iPhone シミュレータが真っ黒、動かない](http://qiita.com/naoya@github/items/8793fe9227f2b144b1ff#iphone-%E3%82%A2%E3%83%97%E3%83%AA%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%97%E3%81%9F%E3%82%89-iphone-%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%81%8C%E7%9C%9F%E3%81%A3%E9%BB%92%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84)

---
>brewのinstall時を思い出して、慌てず騒がず `xcode-select --install` を実行して、コマンドラインツールを入れればOK。
>- [Yosemiteにしてbrew doctorするclangがない！と怒られる場合の対応 - Qiita](http://qiita.com/yudoufu/items/383938102584440bc656)

---
- [Homebrew relink if necessary](https://gist.github.com/sorah/48b372dbe5b304afa3ac)

<blockquote class="twitter-tweet" lang="en"><p>Yosemite アップグレードによる homebrew 倒壊でつかえるか分からないけど、OSXアップグレード時にありがちな /usr/local 以下の symlink (linked kegs) 消失をなおすスクリプト <a href="https://t.co/mPjMTcVIlF">https://t.co/mPjMTcVIlF</a></p>&mdash; そらは (@sora_h) <a href="https://twitter.com/sora_h/status/522980736815480832">October 17, 2014</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

---
- [Yosemite & Homebrew — Medium](https://medium.com/@Dom_T4/yosemite-homebrew-81695c3dac31) ← Homebrew のコントリビュータのお言葉

##/usr/local/Library/brew.rbのshebangをgitコマンドで治す
>```
$ cd /usr/local
$ git fetch origin master:refs/remotes/origin/master -n
$ git checkout origin/master -- Library/brew.rb
```

>- [Yosemiteで動かないHomebrewをgitコマンドで治す - Qiita](http://qiita.com/riocampos/items/b27952faa24524e2919f)

#参考
* [Faster Mac OS X 10.10 Yosemite Upgrades for Developers – Jim Lindley](https://jimlindley.com/blog/yosemite-upgrade-homebrew-tips/) (1-3.
* [Yosemite - MacTeX - TeX Users Group](http://www.tug.org/mactex/yosemite.html) (1.
* [HomebrewやTeXなどをOS Xで使用し/usr/localディレクトリが存在する場合、OS X Yosemiteのインストールが数時間かかるもよう。 - Appleちゃんねる](http://applech2.com/archives/41401526.html) (1-2. & 5.
* [Fixing Homebrew for OS X 10.10 Yosemite - Hans van Gent a.k.a. @jcvangent](http://jcvangent.com/fixing-homebrew-os-x-10-10-yosemite/) (4.
* [HomebrewでインストールしたOSXFUSE入りのMacをYosemiteにアップデートしたらやること - Qiita](http://qiita.com/Eiryyy/items/2d71932f5344e3c24ad1) (5.
* [OS X 10.10 Yosemite Developer PreviewでTrimを有効にする方法。 - Appleちゃんねる](http://applech2.com/archives/39303282.html) (5.
* [createinstallmediaツールを使ったOS X 10.10 Yosemiteのインストールディスクの作成方法。 - Appleちゃんねる](http://applech2.com/archives/41393614.html) (6.
* [OS X Yosemiteをインストール中「残り約1分」のまま固まっている人へ。](http://wayohoo.com/mac/troubles/measures-when-it-was-stopped-during-the-installation-of-os-x-yosemite.html) (7.
* [Homebrewメモ - Qiita](http://qiita.com/saba1024/items/0f397b3f59d28e0ef527) （brew コマンド簡易リファレンス