Macのパッケージ管理をMacPortsからhomebrewへ
だいぶ前にMacのパッケージ管理をMacPortsからhomebrewに移行してみて、ここまで特に不便なこともなく使えているので、移行時に調べたりメモったりした内容を忘れないように書いときます。
なお、homebrewをインストールするためには以下の条件を満たす必要があります。
(Xcode と Command Line Tools for Xcode のインストール方法は後述します)
Requirements
homebrewのインストール手順
1.MacPortsのアンインストール
MacPorts と homebrew は競合してしまうのであらかじめMacPortsをアンインストールしておきます。
また、MacPortsをアンインストールするとMacPortsでインストールしたパッケージもアンインストールされてしまうので注意
$ sudo port -fp uninstall installed $ sudo rm -rf \ /opt/local \ /Applications/DarwinPorts \ /Applications/MacPorts \ /Library/LaunchDaemons/org.macports.* \ /Library/Receipts/DarwinPorts*.pkg \ /Library/Receipts/MacPorts*.pkg \ /Library/StartupItems/DarwinPortsStartup \ /Library/Tcl/darwinports1.0 \ /Library/Tcl/macports1.0 \ ~/.macports
アンインストール手順の詳細は以下のページを参照して下さい。
2.Xcode と Command Line Tools for Xcode をインストール
homebrewを使用するには Xcode と Command Line Tools for Xcode が必要になります。
Xcodeをインストール
XcodeはAppStoreからインストールできます。
Command Line Tools for Xcode をインストール
Xcodeを起動し、メニューから以下のページを開き、Command Line Tools をインストールします。
[Xcode] > [Preferences] > [Downloads]
インストールにはAppleDeveloperのIDとパスワードが必要になります。
未登録の場合は以下から登録を行なって下さい。
※ Xcodeの更新を行うと、Command Line Tools for Xcode をインストール済みの場合でも、Command Line Tools for Xcode が自動的に更新されないことがあります。
Xcode更新時は Command Line Tools for Xcode も更新するようにしましょう。
3.homebrewをインストール
homebrewのインストールは非常に簡単で、下記のコマンドを実行するだけです。
$ ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
実行後に「Installation successful!」と表示されればインストール成功です。
4.Gitのインストールとhombrewの更新
homebrew本体の更新には "Git" が必要になります。
Gitはhomebrew経由でイントールします。
$ brew install git
続いてhomebrew本体を最新の状態に更新します。
$ brew update
また、この更新(brew update)ではhomebrew本体と、後述するFormula情報(xxx.rb)のみ更新されます。
homorewでインストールしたパッケージは更新されません。
5.homebrewの正常性を確認
以下のコマンドにてhomebrewの正常性を確認します。
$ brew doctor Your system is raring to brew.
上記のように表示されれば成功です。
6.環境変数PATHを設定
homebrewでインストールされるコマンドを優先的に使用するために環境変数"PATH"を設定します。
コマンドの検索では環境変数PATHに登録されているディレクトリを前から順に検索し、一番初めに見つかったコマンドが使用されます。
よって、homebrewでインストールされたコマンドの格納先である "/usr/local/bin" と "/usr/local/sbin" をPATHの先頭に追加します。
※ "/usr/local/sbin" ディレクトリはまだ存在しないかもしれませんが、後々のために追加しておきます。
環境変数PAHTの設定方法は使用しているシェルによって異なります。
bashの場合
"~/.bash_profile" に以下の記述を追加します。
※ "~/.bash_profile" が存在しない場合は適宜作成して下さい。
PATH=/usr/local/bin:/usr/local/sbin:$PATH export PATH
"~/.bashrc" でも構いませんが、環境変数は"~/.bash_profile" に設定するほうが良いでしょう。
zshの場合
bashと同じ記述を"~/.zshrc" に追加します。
設定確認
設定後、シェルを再起動(または設定の再読み込み)し、
以下のコマンドを実行してパスが設定されていればOKです。
$ echo "$PATH" | sed 's/:/\ /g'
以上でhomebrewのインストール作業は終了です。
homebrewについて
homebrew本体のインストール場所(デフォルト)
/usr/local/Library/Homebrew
Formulaとは
homebrewにてインストール可能な各パッケージのインストール情報は、Formula(フォーミュラ)と呼ばれるファイル(xxx.rb)に記述されています。
また、FormulaはRubyで記述されていて自作することも可能です。
Formulaの格納先
/usr/local/Library/Formula
現在使用可能なFormulaが格納されており、ファイル名が "パッケージ名.rb" となっています。
また、Formulaを検索する場合は後述する検索コマンドを使用します。
各パッケージのインストールはFormulaの情報に従って行われるため、Formulaが最新でない状態でパッケージのインストールを行うとインストールされるパッケージも最新にならない可能性があります。
パッケージのインストールは、"brew update" にてFormulaを最新の状態にしてから行うようにしましょう。
homebrew界ではFormulaの更新が非常に頻繁に行われているため、時代に取り残されないよう常に最新の状態にしておきましょう。
homebrewでインストールしたパッケージの管理
インストールしたパッケージの本体は、"/usr/local/Cellar" 配下にバージョン毎にディレクトリが作成され管理されます。
$ ls -la /usr/local/Cellar/git total 0 drwxr-xr-x 7 yonchu staff 238 8 22 07:48 ./ drwxr-xr-x 54 yonchu staff 1.8K 10 9 15:39 ../ drwxr-xr-x 10 yonchu staff 340 4 7 2012 1.7.10/ drwxr-xr-x 10 yonchu staff 340 5 11 21:36 1.7.10.1/ drwxr-xr-x 10 yonchu staff 340 5 19 17:04 1.7.10.2/ drwxr-xr-x 10 yonchu staff 340 7 27 16:19 1.7.11.3/ drwxr-xr-x 10 yonchu staff 340 8 22 07:49 1.7.12/
古いバージョンのものはユーザが明示的に削除しない限り残り続けます。
(古いバージョンの削除方法は後述)
また、各パッケージの最新バージョンのコマンドは、 "/usr/local/bin" または "/usr/local/sbin" 配下にシンボリックリンクが作成されます。
よく使うコマンド
頻繁に使われるであろうコマンドをまとめておきます。
パッケージのインストール
"-v" オプションを付けることで詳細情報を表示します。
$ brew install [-v] <Formula名>
パッケージのアンインストール
$ brew uninstall <Formula名>
Formulaの検索
/検索ワード/ で正規表現による検索も可能
$ brew search <検索ワード> または $ brew -S <検索ワード>
Formulaの情報表示
$ brew info <Formula名>
Formulaの更新履歴をブラウザ上のGithubで表示
$ brew info --github [Formula名]
インストール済みパッケージの一覧
("list" は "ls" でも可)
"--versions" オプションにてパッケージのバージョンを表示
$ brew list [--versions]
インストール済みパッケージの中で最新ではないものを表示
$ brew outdated
最新ではない(outdated)なパッケージを最新のものにする
Formulaではなくパッケージ本体を最新のものにします。
Formula名を指定しなかった場合は全てのパッケージが最新ものに更新されます。
$ brew upgrade [Formula名]
古いバージョンのパッケージを削除
パッケージを指定しなかった場合は、全パッケージの古いバージョンが削除されます
$ brew cleanup [パッケージ名]
homebrew本体を更新
$ brew update
homebrew本体の情報を表示
$ brew --config
homebrewの環境情報を表示
$ brew --env
homebrewの状態確認
homebrewの調子が悪い時はこれでエラー探索
$ brew doctor
ヘルプ
よく使うコマンドの簡単な説明が表示されます。
詳しい情報は載っていません。
より詳しい情報が見たい場合は ”man brew” で確認しましょう。
$ brew help
パッケージを個別に更新する場合
インストール済みパッケージを全て最新のもの更新する場合は、前述の "brew upgrade" にて行うことができますが、このコマンでは個別更新は行えません。
パッケージを個別に更新したい場合は、再度 "brew install" コマンドを実行します。
また、以前のバージョンのものは削除されずに残されるため、いつでも前のバージョンに戻すこともできます。
例えば、
homebrewでインストールしたnmapコマンドを更新したい場合
バージョンアップ前の状態を確認
$ brew outdated nmap (5.35DC1 < 5.51) $ nmap --version Nmap version 5.35DC1 ( http://nmap.org ) $ ls -l /usr/local/Cellar/nmap/ total 0 drwxr-xr-x 6 user staff 204 2010-11-21 22:37 5.35DC1/ $ ls -l `which nmap` lrwxr-xr-x 1 user staff 31 2010-11-21 22:37 /usr/local/bin/nmap -> ../Cellar/nmap/5.35DC1/bin/nmap*
バージョンアップを実行
$ brew install nmap ==> Downloading http://nmap.org/dist/nmap-5.51.tar.bz2 ######################################################################## 100.0% ==> ./configure --prefix=/usr/local/Cellar/nmap/5.51 --without-zenmap ==> make ==> make install /usr/local/Cellar/nmap/5.51: 283 files, 13M, built in 104 seconds
バージョンアップ後の状態
$ nmap --version Nmap version 5.51 ( http://nmap.org ) $ ls -l /usr/local/Cellar/nmap/ total 0 drwxr-xr-x 6 user staff 204 2010-11-21 22:37 5.35DC1/ drwxr-xr-x 6 user staff 204 2011-02-26 18:53 5.51/ $ ls -l `which nmap` lrwxr-xr-x 1 user staff 28 2011-02-26 18:53 /usr/local/bin/nmap -> ../Cellar/nmap/5.51/bin/nmap*
バージョンアップ後は、nmapコマンドへのシンボリックリンクが変更され、最新のnmapコマンドが使用できるようになりました。
また、Formulaが既に最新の状態でinstallコマンドを実行すると、以下のように「既にインストールされています」と表示されます。
$ brew install nmap Formula already installed: /usr/local/Cellar/nmap/5.51
応用編その1
知っておくと役に立つかもしれない情報
homebrewのHPをブラウザで表示
$ brew home
FormulaのHPをブラウザで表示
$ brew home <Formula名>
Formulaの中身を表示
$ brew cat <Formula名>
インストール時に指定できるオプションを表示します。
$ brew options <Formula名>
指定パッケージのインストール可能なバージョンを表示
$ brew versions <Formula名>
HEADバージョンのパッケージをインストール
"--force" オプションにて強制インストール
$ brew install -v --HEAD <Formula名>
シンボリックリンクを作成
通常はinstall時に自動で行われますが、Macに元からインストールされているコマンド等の場合は、明示的に行わなければならい場合があります。
システムに影響が出る場合があるため使用は慎重に
ただし、下記のリンク削除コマンドにて削除したリンクを元に戻す場合はその限りではありません。
$ brew link <Formula名>
シンボリックリンクを削除
シンボリックリンクを削除することで、パッケージをアンインストールしないで一時的に無効にすることができます。
元に戻す場合は "brew link" コマンドを使用
$ brew unlink <Formula名>
デッドリンクの削除
$ brew prune
依存関係を表示
"--installed" オプションにてインストール済みFormulaに限定して表示
$ brew uses --installed <Formula名>
homebrewのインストールディレクトリのプレフィクスを取得
prefixデフォルト: /usr/local
cellarデフォルト: /usr/local/Cellar
シェルスクリプトを書く場合などに使用するとインストールディレクトリに依存しないスクリプトが書けます。
$ brew --prefix $ brew --cellar
応用編その2 - リポジトリの追加
"brew tap" コマンドを用いて公式にはないリポジトリを自由に登録することができます。
以下のリポジトリを登録しておくと思わぬところで役に立つかもしれません。
非公式のフォーミュラ全般を扱うリポジトリ
$ brew tap adamv/alt
使用するとWarningが表示される ようになったので削除
Warning: adamv-alt is deprecated; please untap it
Macに元からインストールされているソフトのフォーミュラを扱うリポジトリ
新しいバージョンのものを使用したい場合などに重宝
(e.x. 最新のgrepコマンドを使用したい場合 など)
$ brew tap homebrew/dupes
公式とは異なるバージョンのフォーミュラを扱うリポジトリ
最新とは異なるバージョンのソフトを利用したい場合などに使用
(e.x. Tomcat6, MySQL5.1, Python2.x, Python3.x など)
$ brew tap homebrew/versions
メンテナンス不足や解決できない問題により公式リポジトリから外されたフォーミュラを扱うリポジトリ (boneyard : 墓場, がらくた置き場)
※ ここにあるものをインストールする場合は動作が保証されていないので要注意
不要な方はリポジトリを追加しなくても良いかと
$ brew tap homebrew/boneyard
$ brew tap josegonzalez/php
設定確認
$ brew tap homebrew/boneyard homebrew/dupes homebrew/versions josegonzalez/php
削除したい場合
$ brew untap <リポジトリ名>