Firewallがあって、rsyncプロトコル(873/tcp)が通らない環境でMacを使う機会がありました。そのMacにDarwinPortsをインストールしようとしたのですが、DarwinPortsはrsyncプロトコルを使うので、そのままでは使用できません。sshやhttpは通るので、ssh port forwardingで対処してみました。
まず、rootで次のコマンドを実行
# ssh -L 873:rsync.darwinports.org:873 externalhost
localhostの873/tcpを、externalhostを通じてrsync.darwinports.org:873へつなぐ、という意味になります。ここでexternalhostは、ファイアウォールの外にありグローバルアドレスを持ったホストです。
次に/opt/local/etc/ports/sources.confの最終行を以下のように書き換えます。
rsync://localhost/dpupdate/dports
以後は普通に port コマンドを実行します。
sudo port -d sync
注意
873は特権ポートなので root 権限でないと使えません。root以外で実行する場合は
ssh -L 10873:rsync.darwinports.org:873 externalhost
のようにして、/opt/local/etc/ports/sources.confを
rsync://localhost:10873/dpupdate/dports
とすればport syncは通ります。しかし、この記法ではport installでなぜかこけるものがありました。