MacPorts で自家製 ports を使う方法
MacPorts は 1万2000以上のソフトウェアを ports としてサポートしています*1.しかも,MacPorts の ports は sudo port selfupdate するだけで最新のものを入手できるので便利です.MacPorts の ports は種類も豊富で便利なので,普段は MacPorts の ports だけで十分です.
しかし,不幸にして,使いたいソフトウェアが MacPorts の ports に入っていなかったり,メンテナが忙しくて port ファイルが古いままだったり,ということがあります.そんなときには既存の port ファイルをちょっといじって自家製 ports としてインストールするのが便利です.
自家製 ports を使うための方法は MacPorts Guide の 4.6. Local Portfile Repositories に詳しいのですが,簡単にまとめてみます.手順は,
- 1. 自家製 ports ファイルを置くディレクトリ(以下,ローカルリポジトリ)を作成
- 2. sources.conf にローカルリポジトリを追加
- 3. ローカルリポジトリに port ファイルを作成
- 4. ローカルリポジトリで portindex コマンドを実行
となります.
2. sources.conf にローカルリポジトリを追加
sources.conf ファイルにローカルリポジトリの URL を追加します.
% sudo vi /opt/macports/etc/macports/sources.conf % diff -U3 /opt/macports/etc/macports/sources.conf.default /opt/macports/etc/macports/sources.conf --- /opt/macports/etc/macports/sources.conf.default 2011-09-07 06:48:34.000000000 +0900 +++ /opt/macports/etc/macports/sources.conf 2011-09-07 14:06:15.000000000 +0900 @@ -28,4 +28,5 @@ # If an rsync URL points to a .tar file, a signed .rmd160 must exist next to # it on the server and will be used to verify its integrity. +file:///Users/passingloop/ports rsync://rsync.macports.org/release/tarballs/ports.tar [default]
ここで,/opt/macports は MacPorts のインストール先ディレクトリ (prefix) です.デフォルトでは /opt/local になっています.また,passingloop はユーザ名です.それぞれ,お使いのものに置き換えてください.
3. ローカルリポジトリに port ファイルを作成
例として,devel カテゴリに yajl1 を port ファイルとして作成します.
% mkdir -p ~/ports/devel/yajl1 % cd ~/ports/devel/yajl1 % vi Portfile
参考までに、作成した Portfile を gist にして貼り付けておきます.
4. ローカルリポジトリで portindex コマンドを実行
何のためにあるのか分からなかった portindex コマンドの使い道がようやく分かりました.
% cd ~/pots % portindex Creating port index in /Users/passingloop/ports Adding port devel/yajl1 Total number of ports parsed: 1 Ports successfully parsed: 1 Ports failed: 0 Up-to-date ports skipped: 0 % ls PortIndex PortIndex.quick devel
ローカルリポジトリに PortIndex が作成されました.これで,port コマンドでローカルリポジトリの ports を操作できます.
% port search yajl1 yajl1 @1.0.12 (devel) Yet Another JSON Library. % sudo port install yajl1
おわりに
今回は自家製 port ファイルを使えるように MacPorts を設定してみました.せっかく MacPorts を使っているのだから,MacPorts の port に含まれていないソフトウェアをインストールするときにも,Portfile を用意して MacPorts で管理できるようにしたいです.
*1:2011年9月現在