Homebrew使い方まとめ


#概要
mac用のパッケージマネージャーであるHomebrewのコマンド一覧です。
自分用なので見にくいかもしれません。

# インストール
javaとCommand Line Toolsが必要。  
terminalで

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

###zshのコマンド補完設定
"/usr/local/Library/Contributions/" 配下にbashやzsh用のbrewコマンドの補完関数が追加される。それをzshに読み込ませる。

```
cd /usr/local/share/zsh/site-functions
ln -s ../../../Library/Contributions/brew_zsh_completion.zsh _brew
```

# 用語
formula  
>Homebrew では、いわゆるパッケージ名のことを formula と呼ぶ。  
	
keg  
>/usr/local/Cellar/keg/version/  

Cellar  
>デフォルトは /usr/local/Cellar  
インストールしたパッケージの実体は /usr/local/Cellar にあり、/usr/local/bin/ や /usr/local/lib/ にシンボリックリンクが作られる。  


config.log  
*/Users/izuku/Library/Logs/Homebrew/php55*にある

# コマンド
###インストール
```
brew install formula
```

###検索
'/'で囲むと正規表現で検索できる。 
 
```
brew search text
brew search /text/
```

###一覧
インストールされたformulaの一覧を表示

```
brew list
brew -v list
```

###アンインストール
```
brew uninstall formula
```

###更新のあるformulaを見る
```
brew outdated
```

###古いバージョン(outdated)のformulaを削除
```
brew cleanup
brew cleanup -n #何が消されるのか一覧を表示する。
```

###Homebrewとformulaをアップデートする
```
brew update
brew upgrade (formula|無しですべて) #更新があるパッケージを再ビルドする
```

###formulaの情報を見る
```
brew info formula
```

###依存関係をみる。
```
brew deps formula
brew deps --tree formula   #tree式
```

###formulaの有効化無効化
```
brew link formula
brew unlink formula
```

###brewに問題がないか調べる。
```
brew doctor
```

###Homebrewprefixからデッドシンボリックリンクを削除する。
```
brew prune
```

###tap/untap
```
brew tap ユーザー名/リポジトリ名
brew untap ユーザー名/リポジトリ名 #このリポジトリでインストールしたformulaは先に削除しておく
```

###tapしたリポジトリの一覧を表示する
```
brew tap
```

###brewへのpull requestをpullする
```
brew pull アドレス
```
brewへのpull requestが出されているものをインストール出来る？

# 設定

###gitをfast-forward onlyにする
一旦/usr/localをいじるかなにかすると、その後updateごどにマージコミットをしなければならずとてもめんどくさいことになります。なので、fast-forward onlyにしておくと邪魔なマージコミットを除けます。(git version>=2.0.0)

```
git config --global pull.ff only
```

もし```fatal: Not possible to fast-forward, aborting.```というエラーが出てきた場合、localをresetしてリモートと同じ状態にします。

```
cd `brew --prefix`
git fetch origin
git reset --hard origin/master
```

# 拡張

## brew-cask
macのディスクトップアプリもbrewでインストールできるようになる拡張。

### インストール
[最近比較的簡単にインストール出来るようになったらしい。](http://rcmdnk.github.io/blog/2015/12/18/computer-homebrew-brew-file-mac/)

```
brew tap caskroom/cask
```

### 使い方

```
brew cask install formula
brew cask upgrade
brew cask list
などなど。
```

大体brewコマンドと同じように使える。
しかし、`brew upgrade`に相当するコマンドがないようなので、次に紹介するbrew-fileを使ってupgradeしている。

```
brew cask install formula
```
でそのformulaはアップデートできるが、この時前のformulaとは別のディレクトリに出来るので、それは手動で消すかuninstallしてからinstallする必要がある。

[こういうワンライナーもある。](http://qiita.com/2k0ri/items/9fe8d33a72dbfb15fe6b)

## brew-file
brewの設定やインストールしたformulaの一覧を管理できるので移行に便利。
まあ移行なんでほとんどしないからcaskのupgradeに使っている。

### インストール

```
brew install rcmdnk/file/brew-file
```

.zshrcや.bash_profileに以下を追記。

```
if [ -f $(brew --prefix)/etc/brew-wrap ];then
  source $(brew --prefix)/etc/brew-wrap
fi
```

これで、`brew install`などをすると、`~/.brewfile/Brewfile`にパッケージリストを作ってくれるらしい。

### 使い方

基本的にcask_upgradeしか使ってない。

```
brew file cask_upgrade -C
```
でインストールしているcaskのupgardeが出来る。（-Cをつけるとcleanupもしてくれる。）

また、以下のコマンドで、インストールcaskの数や、`/Application/`以下にあるアプリでcaskでもインストール出来るアプリの数を確認できます。

```
brew file casklist
```


#### 普通の使い方

最初に現在の状態を書き出すために以下を実行。

```
brew file init
```
gitレポジトリでBrewfileを管理出来るらしい。

brewfileの中身を表示

```
brew file cat
```

brewfileの内容をインストール

```
brew file install
```



# トラブルシューティング

+ Xcodeをアップデートするとbrew upgradeできなくなった。
	- xcodeはappstoreで更新しただけではインストールされてないので一度起動しCommand Line Tools をインストールする。
+ brew updateするとマージできないと怒られる。
	- いらないリポジトリがtapしたままだった。
	- ```cd $(brew --prefix) && git fetch origin && git reset --hard origin/master```する
	- 最悪そのformulaを再インストールする
	- dependencyの問題は一回```--universal```オプションを付けて再インストールしてみる。
	- 関連のものをrelinkするのも手

+ あるはずのformulaが無いと言われたら。
	- brew tapした中にあるなら、一度untapして再度tapしてみる。
+ ```insufficient permission for adding an object to repository database .git/objects```と出たら
	- ↑のマージ出来なかった時と同様にreset --hardをする。