Routing MacPorts rsync Sources Through a Proxy
Match the ports-tree source protocol to the proxy transport instead of assuming an SSH example also fixes an rsync daemon connection.
The browser works through SOCKS. An ordinary SSH session works too. Then MacPorts stalls while synchronizing its ports tree. Before adding another SSH option, look at the source URI.
rsync://host/module names an rsync daemon service. An example using rsync -e ssh user@host:path uses a remote shell and requires access to a suitable account on that host. A public rsync mirror does not acquire an SSH login because the client has a ProxyCommand.
Three routes with different prerequisites
| Route | What must exist |
|---|---|
| Ports-tree snapshot over HTTP or HTTPS | A supported snapshot source and working HTTP proxy configuration |
| Rsync daemon through a web proxy | An rsync client using RSYNC_PROXY and a proxy permitting CONNECT to the daemon port |
| Rsync over SSH | An SSH endpoint, account and remote rsync arrangement |
MacPorts documents HTTP and HTTPS tarball sources in sources.conf as alternatives when the usual sync transport is unavailable. Choose the project's supported source for the installed release; changing the URI scheme is not permission to point at an arbitrary archive.
Rsync's RSYNC_PROXY is a web-proxy mechanism, not a generic SOCKS URL setting. The daemon route commonly needs port 873, which an otherwise functional web proxy may intentionally deny. The separate RSYNC_CONNECT_PROG mechanism can replace the direct daemon socket with a helper, but the helper must provide the expected byte stream.
Finally, note which MacPorts stage failed. Updating the ports tree, fetching an archive and downloading a port's source files need not use one transport. Repairing the first route does not prove the others share its proxy.