ファイアウォール内で MacPorts を使う

MacPorts は非常に便利で嬉しい存在なんだが、ポーツをリポジトリに同期させるのに rsync を使うため、ファイアウォールに閉じこめられている……、いやいや匿って頂いている身としてはちょっと使いづらい。いろいろと工夫したら何とか使えるようになったので、備忘のためにメモしておく。

インストール

インストールは、.dmg で .pkg な普通のインストールで大丈夫だ。インストーラport selfupdate しようとしてくれてエラーになって終わるが、環境変数の設定を自分でやらないといけないこと以外には、別に問題はないようだ。

ポーツリポジトリSubversion で持ってくる

rsync が使えないので、port selfupdateport sync ができない。そこで、/opt/local/etc/macports/sources.conf をこんな風に設定する:

#rsync://rsync.macports.org/release/ports/
file:///opt/dports/

これで、rsync など止めて /opt/dports を見に行くようになる。
問題は /opt/dports をどうやって取ってくるかだが、これは http://svn.macosforge.org/repository/macports/trunk/dports/ から Subversion でチェックアウトできる。
trunk なんかから持って来ちゃって大丈夫かよ、とも思ったが、こんなことが書いてあるので別によさそう:


Though a distinction is made between pre-release and release versions of MacPorts base, the ports collection supports no such distinction or versioning. The selfupdate command installs the latest port revisions from subversion (at a slight delay), and updates MacPorts base to the latest released version.

sudo環境変数 http_proxy を引き継がせる

そのままだと、sudo port install としたときに HTTP プロクシを見つけられなくてエラーになってしまう。これは、sudo環境変数 http_proxy をクリアしてしまうためだ。visudo で以下の設定を加え、http_proxy が保存されるようにしておく:

Defaults        env_keep += "http_proxy"

ポーツリポジトリの更新

sudo port sync((sudo port selfupdate はうまく動作しない。多分、ポーツリポジトリしかないからだろう。)) は /opt/dports に同期するだけなので、/opt/dports 自体を svn update しないといけないことに注意。