MacPorts の rsync ソースをプロキシ経由でルーティングする
SSH の例が rsync デーモン接続も直すと決めつけず、ports tree のソースプロトコルをプロキシのトランスポートに合わせます。
ブラウザは SOCKS 経由で動きます。通常の SSH セッションも同様です。ところが MacPorts は ports tree の同期で止まります。さらに SSH の選択肢を足す前に、ソース URI を確認してください。
rsync://host/module は rsync デーモンのサービスを指します。rsync -e ssh user@host:path を使う例はリモートシェルを用い、そのホスト上の適切なアカウントへのアクセスを必要とします。公開 rsync ミラーは、クライアントに ProxyCommand があるからといって SSH ログインを得られるわけではありません。
前提条件が異なる 3 つの経路
| 経路 | 何が必要か |
|---|---|
| HTTP または HTTPS による ports tree スナップショット | 対応するスナップショット元と動作する HTTP プロキシ設定 |
| Web プロキシ経由の rsync デーモン | RSYNC_PROXY を使う rsync クライアントと、デーモンのポートへの CONNECT を許可するプロキシ |
| SSH 上の rsync | SSH エンドポイント、アカウント、リモート側の rsync 構成 |
MacPorts は sources.conf に HTTP と HTTPS の tarball ソースを、通常の同期トランスポートが使えない場合の代替として記しています。インストール済みリリースに対してプロジェクトが対応するソースを選んでください。URI スキームの変更は、任意のアーカイブを指してよいという許可ではありません。
rsync の RSYNC_PROXY は Web プロキシの仕組みであり、汎用の SOCKS URL 設定ではありません。デーモン経由の経路は通常 873 番ポートを必要とし、それ以外は正常な Web プロキシが意図的に拒否することがあります。別個の RSYNC_CONNECT_PROG の仕組みは直接のデーモンソケットを補助プログラムに置き換えられますが、その補助は想定どおりのバイト列を流す必要があります。
最後に、MacPorts のどの段階が失敗したのかを確認してください。ports tree の更新、アーカイブの取得、port のソースファイルのダウンロードは、同じトランスポートを使うとは限りません。最初の経路を直しても、他の経路が同じプロキシを共有している証明にはなりません。