##はじめに
いつも使っているMac book
。
パッケージマネージャーはbrew
を使っています。
いつも何気なく使っているbrew
ですが、よくわかっていないのにネットの情報をコピペ→実行してしまうときがあります。
今回はそんなhomebrew
についてちょっと調べてみました。
##homebrewとは?パッケージ管理システムとは?
wikipediaによるとこうなっています。
「Mac OS Xオペレーティングシステム上でソフトウェアの導入を単純化するパッケージ管理システムのひとつである」
実行ファイルや設定ファイル、ライブラリetcを一つのファイルとしてまとめているものをパッケージと呼びます。
パッケージ管理システムとはこのパッケージのインストール(アンインストール)作業を一元的管理するものです。パッケージやライブラリの依存関係などが管理できます。
ちなみにパッケージ管理には、
- バイナリを取得するもの
- ソースコードを取得してビルドするもの
のパターンがあるみたいです。
1バイナリとはソースコードを予めビルドした成果物を配布していることを指すようです。
なので1バイナリは2ビルドよりも早くインストールできる特徴を持っているようです。
それに対して2ビルドは、自分のmac
でビルドするので自分のmac
に最適化出来る特徴を持っているようです。
mac
を使う方であればmacports
やfink
を使っている場合もあるかと思います。少し前まではmacports
が人気だったりしたようですね。
##他のパッケージ管理システムとの違いは?
homebrew
とmacports
の比較をされている記事があったので紹介させて頂きたいと思います。
homebrew | macpors | |
---|---|---|
バイナリ/ビルド | 基本ビルド | 結構バイナリ |
既存のソフトウェアへの影響 | なるべく既存を利用 | 新しくインストールする |
インストール可能なユーザ | 一般ユーザ | スーパーユーザ(管理者権限) |
パッケージのインストール先 | /usr/local | /opt/usr |
パッケージ数 | 少ない | 多い |
インストールにかかる時間 | 少ない | 多い |
システムへの依存度 | 大きい | 小さい |
コンパイラ | clang | clang |
macports
はバイナリがない場合にビルドするというハイブリット形式らしいです。homebrew
では基本ビルドのようで。
インストール時のユーザもhomebrew
では一般ユーザで可能ですが、macports
では管理者権限がないと実行出来ないのですね。
扱えるパッケージ数もhomebrew
の方が少ないようです。
コンパイラはclang
ですが、他のパッケージ管理システムではgcc
とかもあるようです。
結果的に、どちらがいいのかという点についてですが、homebrew`では依存関係でインストールされるソフトが少ないから人気が高まってきているのではないかと記事では考察されていました。パッケージ導入時のシステムへの負担や、インストールにかかる時間が比較的少なくて済むようです。
とは言え、一長一短な気もするので使う方の好みであるとは思います。
ちなみにhomebrew
の場合パッケージは/usr/localの中のCellarというディレクトリにインストールされます。そしてインストール時にbinにリンクされるという仕組みになっているようです。まとめるとこんな感じ。
- /usr/local/Cellar コマンド実体
- /usr/local/bin コマンドのエイリアス
##homebrewについて
さて、本題のhomebrew
について紹介したいと思います。
homebrew
が何者かを知る上でですが、「homebrew
」という名前そのものにヒントがあったことに今更気づきました。
記事にあった表を引用して紹介します。
キーワード | 本来の意味 | たとえ |
---|---|---|
brew | ビールを醸造する | makeする |
homebrew | 自家醸造 | ユーザ自らがビルドする |
celler | ビール貯蔵庫 | インストール(保存)先 |
keg | 樽、醸成用 | make材料 |
formula | 調理法、手順 | ビルド方法、手順が書かれたスクリプト |
brew
というのは「醸造する」という意味にあたるんですね。(今更)
ということで、homebrew
とは「ユーザが自らパッケージをビルドして使用する」ことのメタファーで「ビールを自家醸造して保存する・飲む」ことを意味しているのです。
手順(調理法formula)通りにパッケージをビルド(醸造)して保存(/usr/local/cellerに格納)して、使う(/usr/loca/binにリンク)ってことのようです。
そういうたとえあるとわかりやすいたちです自分。はい。
##homebrewのインストール
ここまで記事呼んでhomebrew
を使っていない方はいますでしょうか?
下記コマンドでインストールしましょう。homebrew
はruby
で書かれています。
$ ruby -e "$(curl -fsS http://gist.github.com/raw/323731/install_homebrew.rb)” #homebrewのインストール
##homebrewの基本操作
基本操作を載せて置きたいと思いますので、困ったら確認してみましょう。
- パッケージ検索
$ brew search <パッケージ名>
- パッケージインストール・アンインストール
$ brew install <パッケージ名> #インストール
$ brew remove <パッケージ名> #アンインストール
- パッケージの有効化・無効化
$ brew link <パッケージ名> #有効化
$ brew unlink <パッケージ名> #無効化
- パッケージ一覧の更新
$ brew update #formuls(手順書)の更新
$ brew upgrade #更新があるパッケージを再ビルド
- パッケージされたリストの表示
$ brew list
- デッドリンクになっているものを削除
$ brew prune
- インストールの問題をチェック
$ brew doctor
- brewの設定確認
$ brew --config
##brewコマンド一覧
homebrew
の使い方一覧をまとめていた記事を見つけたので紹介させていただきたいと思います。
- brew install foo fooをインストール
- brew install --HEAD foo fooのHEADバージョンをインストール
- brew install --force --HEAD foo fooの新しいHEADバージョンをインストール
- brew search インストール可能なすべてのformulaを表示
- brew search foo インストール可能なformulaからfooを検索
- brew search /foo/ 正規表現fooを検索
- brew list インストール済みのformulaeを表示
- brew list foo fooのインストールしたファイルを表示
- brew info --github foo foo formulaのGithub履歴ページをブラウザで表示
- brew info インストール済みのHomebrewパッケージのサマリーを表示
- brew info foo インストール済みのfooのすべての情報を表示
- brew home HomebrewのWebサイトをデフォルトブラウザで表示
- brew home foo fooのWebサイトをデフォルトブラウザで表示
- brew update HomebrewのformulaeとHomebrew自体をアップデート
- brew remove foo fooのアンインストール
- brew create [url] ダウンロード可能なファイルのURLのformulaを生成して$BREW_EDITORか$EDITORで指定されているエディタで開く
- brew create url-of-tarball --cache formulaを生成して、tarballをダウンロードする。md5をformulaテンプレートに追加する。
- brew create --macports foo どのようにfooをインストールするか調べるために、MacPortsパッケージ検索ページでfooを検索する。
- brew create --fink foo Finkで同様のことを行う。
- brew edit foo formulaを$HOMEBREW_EDITORか$EDITORで開く
- brew link foo fooのインストールされたファイルのHomebrew prefixシンボリックリンク作成する。(Homebrewでインストールすると自動的に行われる。DIYインストールを行った場合に有用。
- brew unlink foo Homebrew prefixシンボリックリンクを削除する。
- brew prune Homebrewprefixからデッドシンボリックリンクを削除する。
- brew outdated 利用可能なアップデートバージョンが存在するformulaを表示する。新しいバージョンをインストールするにはbrew install fooを実行する。
- brew upgrade 利用可能なアップデートバージョンが存在するformulaをすべてアップグレードする。
- brew --config Homebrewのシステム設定を表示する
- brew --prefix Howebrew prefixのパスを表示する。(普通は /usr/local)
- brew --prefix (formula) インストールされたformulaのパスを表示する。
- brew --cellar Homebrew Cellarのパスを表示する。(普通は /usr/local/Cellar)
- brew --cache Homebrew キャッシュダウンロードのパスを表示する。(普通は ~/Library/Caches/Homebrew)
- brew doctor インストールの一般的な問題をチェックする。
- brew audit すべてのformulaeのコードとスタイルの問題を検査する。
- brew cleanup foo インストールしたすべてもしくは特定のformulaeの古いバージョンをcellarから削除する。すべての場合はbrew cleanupを実行する。
##おわりに
homebrew
について概要がわかっただけでもだいぶ進歩しました。パッケージ管理システムを全部比べたらなにか面白いことがわかるかもしれないのでどなたか比較検証よろしくお願いします(自分ではやらない)。ご参考にどうぞ。
何か間違いがあればコメントして頂けると幸いです。
##参考記事
今回は多くの記事を参考に記事を描かせていただきました。ありがとうございました。
homebrewの仕組みについてまとめておく
http://takuya-1st.hatenablog.jp/entry/20111224/1324750111
MacPortsとhomebrewの違いについて
http://osanai.org/57/
MacPortsより使いやすい!?パッケージ管理システムhomebrewの使い方
http://tukaikta.blog135.fc2.com/blog-entry-183.html
パッケージ管理システムhomebrew
http://qiita.com/b4b4r07/items/6efebc2f3d1cbbd393fc
MacOSXのパッケージ管理システム
http://www.slideshare.net/TomohikoHimura/ss-20115472