MacPortsでステキなUNIXツールをインストール

2011/5/22追記: 最近のオススメは、homebrewです。ぼくもいまはhomebrew使ってます。

先日、研究室にあたらしいMac Book Pro 17"が届いた。各種操作がいちいちキビキビ動いて快適すぎる。

Mac Book Pro 17inch in lab

このMacにも、うち的最重要MacアプリケーションのひとつであるMacPortsをインストールした。

MacPortsはFreeBSDのportsというパッケージ管理システムと似たようなことを、Mac OS Xでも行うためのソフトウェアだ。有名なコマンドラインツールはほとんどこれを使えば揃えることができる*1。うちが普段使っている、perlもvimもzshもscreenも全部MacPortsでインストールしたもの。
Macでライブラリやツールがなくて困ったときはとりあえず、MacPortsに聞いておけばなんとかなることも多い(例: pygameってMac OS Xで動くんだっけ? -> それ、MacPortsでできるよ)。

で、このMacPortsのインストール、けっこうひさびさにやったので、ここに使い方も含めてメモを残しておこう。

インストールの準備

MacPortsはソフトウェアをコンパイルしてインストールするので、コンパイラやらがいろいろと必要。そこで、Xcode Toolsをインストールする。これは、Mac本体に付属のOSインストールディスクか、http://connect.apple.com/から手に入るけど、インストールディスクからがおすすめ。

最近のマシンだとOSのインストールディスクの

  • Xcode Tools/XcodeTools

を実行すればOK。

MacPortsのインストール

準備が済んだら、MacPortsをインストールする。MacPortsのバイナリは、http://svn.macosforge.org/repository/macports/downloads/からダウンロードできる。dmg形式のアーカイブを使うのが最も手軽で、Mac OS X 10.4を使ってる人は、DarwinPorts-1.3.1/DarwinPorts-1.3.1-10.4.dmgをダウンロードしよう。

ダウンロードができたら、マウントしたディスクの中のインストーラを実行して、インストールを完了する。

環境変数の追加

MacPortsは、MacPorts自身を含めたファイルをすべて/opt/local以下にインストールする。なので、各種パスを/opt/localに通しておく必要がある。そこで、自分のシェルの環境変数を以下のように設定しておく。

export PATH=/opt/local/bin:/opt/local/sbin/:$PATH
export MANPATH=/opt/local/man:$MANPATH

Mac OS Xデフォルトのbashの場合は、自分のホームディレクトリの.bashrcに上の2行を書き込んでおく。

MacPortsのアップデート

ここまでくれば、コマンドラインからportコマンドが使えるようになっているはず。MacPorts自身を最新の状態にアップデートした後、インストールできるソフトウェア一覧を更新する。それぞれ、以下のコマンドを実行すれば良い。

$ sudo port -d selfupdate
$ sudo port -d sync

MacPortsの使い方

アップデートの時少し触れたようにMacPortsを操作するにはportコマンドを利用する。このコマンドはたいがい/opt/local以下を変更するので、sudoと組み合わせて利用することが多い。

以下、うちがよく使う操作を並べてみた。もっとステキな機能があるのかもしれないので、気になる人はman portをチェックしてみて。あと、portに-dオプションをつけて実行すると、コンパイルの詳細な出力が見れるので、コンパイル風景を眺めるのが好きな人はやると良さそう。

ともあれ、以下のコマンドで自分の好きなツールをいろいろいれれるのでお試しアレ。

ソフトウェア一覧の更新

初期設定時にも行ったsyncアクション。これをしないとソフトウェア一覧が古いままなので定期的にやるべし。

$ sudo port sync
ソフトウェアの検索

自分の利用したいソフトウェアがMacPortsで使えるのかを調べるのには、searchアクションを使う。zshで検索すると、

$ port search zsh
zsh                            shells/zsh     4.2.6        Zsh is a UNIX command interpreter (shell)
zsh-devel                      shells/zsh-devel 4.3.2        Zsh is a UNIX command interpreter (shell)

てな感じに、普通のzshとzsh-develという開発版があるということがわかる。

ソフトウェアのインストール

文字通り、installアクションを使う。

$ sudo port install zsh-devel

実行すると、依存関係の解決、ソースコードのダウンロード、コンパイル、インストールが自動で行われる。

variantsの表示

MacPortsにはvariantsという仕組みがあって、ソフトウェアをインストールする際に追加機能を選択することができるようになっている。どんなvariantsがあるのかは次のように調べられる。

$ port variants zsh-devel
zsh-devel has the variants:
        darwin_8
        dp_completion
        utf8

zsh-develには、darwin_8、dp_completion、utf8という3つのvariantsがあることがわかる。これらを指定することで、機能を有効にした状態でソフトウェアがビルドされる。指定するには以下のように、

$ sudo port install zsh-devel +dp_completion +utf8

のように+を付けて指定する。ちなみに、darwin_8とかのMac OS X専用オプションは自動で付加されるので指定しなくても良い。

あと、varinantsを変えて同じソフトウェアをインストールすると、別物あつかいになって、もとからあるやつと衝突するので注意。先にアンインストールするか、deactivateしておく。

ソフトウェアのアップグレード
$ sudo port upgrade zsh-devel
ソフトウェアのアンインストール
$ sudo port uninstall zsh-devel
ソフトウェアのdeactivateとactivate

MacPortsには、deactivateといってソフトウェアを完全に削除せずに一時的に無効にする機能がある。異なるvariantsを指定したあるソフトの複数のバイナリを切り替えてためしたいときなどに便利。

$ sudo port deactivate zsh-devel

逆はactivate

$ sudo port activate zsh-devel
インストール済みソフトウェアの表示
$ port installed

インストール済みソフトウェアをすべてアップグレードしたいときはupgradeと組み合わせて、

$ sudo port upgrade installed

とすれば良い

アップグレード可能なソフトウェアの表示
$ port outdated

*1:インストールできるソフトウェアはここから辿れば見れる: http://trac.macosforge.org/projects/macports/browser/trunk/dports