【初心者必見】homebrewについて

## はじめに
Macを操作しているとhomebrewという名前を聞くことはありませんか？
言われるがままコマンドをコピペして実行したら、、、なんとなく出来た。
出来たからまぁいいか！とそのままになりがちでした。

そんなhomebrewについて勉強ついでにまとめてみました。

## 概要
wikipediaによると、
> homebrewとは、Mac OS Xオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつである。

とあります。と言われても難しいですね。。。
ひとまず簡単に言うとAppStoreみたいなやつのことなんです。
![http---blog.iconfinder.com-wp-content-uploads-2014-06-appstore.jpg](https://qiita-image-store.s3.amazonaws.com/0/75257/abe05ac9-64d8-4246-ee50-cb2894b8f334.jpeg "http---blog.iconfinder.com-wp-content-uploads-2014-06-appstore.jpg")

サードパーティのアプリはAppStoreにアップロードをすると他のユーザー全員に見えるようになってインストールやアンインストールが出来ますよね。
それと同じことがhomebrewでも出来ますよ！っていうことです。

**実際にhomebrewをインストールしながら見て行きましょう。**

## homebrewのインストール
homebrewの[公式サイト](http://brew.sh/index_ja.html)に次のコマンドを打てばインストールできるよ！って書いてあります。

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

- `ruby -e`というのは、次のスクリプトをrubyで実行する
- `"$(curl URL)"`でURL先のコンテンツをDLする

実際に
[https://raw.githubusercontent.com/Homebrewinstall/master/install](https://raw.githubusercontent.com/Homebrew/install/master/install)
このURLを叩いてみるとrubyのコードがずらりと書いてあるのがわかりますね。
これでhomebrewをインストールしているということです。
では実際に実行してみてください。

![スクリーンショット 2015-09-14 20.21.54.png](https://qiita-image-store.s3.amazonaws.com/0/75257/93956734-8d34-fffa-fe8e-8ae7b5abe68f.png "スクリーンショット 2015-09-14 20.21.54.png")
こんな感じに出たらOKです！
ためしに`brew doctor`を叩いてみてください。
![スクリーンショット 2015-09-14 20.22.19.png](https://qiita-image-store.s3.amazonaws.com/0/75257/78ae6f2d-83ef-a66d-29db-2b8056f0fcd5.png "スクリーンショット 2015-09-14 20.22.19.png")
これが出たら完璧です！！
もしもErrorやWarningが出てきたら書いてある英語通りに実行してみてください。

## 試しにパッケージをインストール！してみる前に、、、
冒頭で話をしたとおりhomebrewはパッケージ管理システムです。
今回はちょっと中身を理解してもらいたいので、すんなりインストールはしません。
まずは今回使うコマンドを見てみましょう。

### `brew install ○○`
これは「○○」をインストールするコマンドです。

### `brew unistall ○○`
これは「○○」をアンインストールするコマンドです。

### `brew info ○○`
これは「○○」のインストール状態や必要なパッケージをみるコマンドです。

**この3つのコマンドを使って中を見て行きましょう**

## パッケージをインストール
今回は試しに「mysql」をインストールしてみましょう。
まずはmysqlのインストール状態を見て行きます。
`brew info mysql`を実行してみてください。
![スクリーンショット 2015-09-14 20.31.13.png](https://qiita-image-store.s3.amazonaws.com/0/75257/e7bcde78-14ba-9b3b-f8f0-73a2ce4ece64.png "スクリーンショット 2015-09-14 20.31.13.png")
こんな感じで出てきましたか？これはBuildに「cmake」というパッケージを使います。opensslというパッケージが必須です。と言っています。

「☓」はまだパッケージを持っていないよということでしょう。
じゃあ「openssl」のパッケージを見てみましょう。
例に習って`brew info openssl`を叩いてみてください。
![スクリーンショット 2015-09-14 20.34.08.png](https://qiita-image-store.s3.amazonaws.com/0/75257/9896bb4d-eebc-6cfd-4e1b-e7969c5038ee.png "スクリーンショット 2015-09-14 20.34.08.png")
次はBuildに「makedepend」というパッケージを使うと言っています。

では`brew info makedepend`をしてみてください。
![スクリーンショット 2015-09-14 20.35.22.png](https://qiita-image-store.s3.amazonaws.com/0/75257/de3f72c4-b12c-2ab9-ea14-4130babe7990.png "スクリーンショット 2015-09-14 20.35.22.png")
「makedepend」はpkg-configでBuildすると言っています。

`brew info pkg-config`をしてみてください。
![スクリーンショット 2015-09-14 20.36.17.png](https://qiita-image-store.s3.amazonaws.com/0/75257/86cdfa7f-2c2d-769e-5b34-f351be57e5e5.png "スクリーンショット 2015-09-14 20.36.17.png")
「pkg-config」は特に必要な物はないようですね。

試しに「pkg-config」だけインストールしてみます。
`brew install pkg-config`
![スクリーンショット 2015-09-14 20.37.52.png](https://qiita-image-store.s3.amazonaws.com/0/75257/bbbe83f3-bd48-da8c-7260-991389aafe8f.png "スクリーンショット 2015-09-14 20.37.52.png")
これで「pkg-config」がインストールできました！

「pkg-config」を必要としていた「makedepend」の情報を見てみましょう。
`brew info makedepend`
![スクリーンショット 2015-09-14 20.41.03.png](https://qiita-image-store.s3.amazonaws.com/0/75257/a12691df-7a79-feeb-7644-6af0219f5b04.png "スクリーンショット 2015-09-14 20.41.03.png")
「pkg-config」が☓からチェックマークに変わりましたね！！

---

これをみてわかるように一つのパッケージは何かのパッケージに依存しています。
これを管理してくれているのがhomebrewなんです。
**今回は色々中身を見ていきましたが、`brew install mysql`をすることで
依存するこれらいろんなパッケージをすべてインストールしてくれます。**

## いろんなパッケージ
いままでパッケージと呼んでいましたがhomebrewではパッケージのことを「formula」と呼びます。
どんなformulaがあるのかというのは、[こちらのサイト](http://brewformulas.org)で確認できます。

有名どころは大抵揃っていて[Mysql](http://brewformulas.org/Mysql)や[Git](http://brewformulas.org/Git)などもhomebrewから最新版を落とせます。

## さいごに
今回は勉強がてらhomebrewとはなにかというのを実際のコマンドを叩いて見ていきました。
自分もまだまだ理解していないことが多いように思います。
もし間違いなどがあればコメントなどに書いてくださるとありがたいです。