1

私は http プロキシの背後にいて、を使用して macports を更新したいsudo port selfupdateです。ただし、次の出力で常に失敗します。

$ sudo port -d selfupdate
DEBUG: Copying /Users/simon/Library/Preferences/com.apple.dt.Xcode.plist to /opt/local/var/macports/home/Library/Preferences
DEBUG: MacPorts sources location: /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
--->  Updating MacPorts base sources using rsync
rsync: getaddrinfo: rsync.macports.org 873: nodename nor servname provided, or not known
rsync error: error in socket IO (code 10) at /SourceCache/rsync/rsync-42/rsync/clientserver.c(105) [receiver=2.6.9]
Command failed: /usr/bin/rsync -rtzv --delete-after rsync://rsync.macports.org/release/tarballs/base.tar /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
Exit code: 10
DEBUG: Error synchronizing MacPorts sources: command execution failed
    while executing
"macports::selfupdate [array get global_options] base_updated"
Error: /opt/local/bin/port: port selfupdate failed: Error synchronizing MacPorts sources: command execution failed

明らかに問題はrsyncサーバーに接続していないことなので、rsync一人で試してみたところ、同様の結果が得られました。

$ sudo /usr/bin/rsync -rtzvvv --delete-after rsync://rsync.macports.org/release/tarballs/base.tar /opt/local/var/macports/sources/rsync.macports.org/release/tarballs
opening tcp connection to rsync.macports.org port 873
rsync: getaddrinfo: rsync.macports.org 873: nodename nor servname provided, or not known
rsync error: error in socket IO (code 10) at /SourceCache/rsync/rsync-42/rsync/clientserver.c(105) [receiver=2.6.9]
_exit_cleanup(code=10, file=/SourceCache/rsync/rsync-42/rsync/clientserver.c, line=105): about to call exit(10)

RSYNC_PROXY環境変数を設定し、プロキシは機能していますが、出力によると、指定rsyncしたプロキシを使用していないようですが、代わりに直接接続を試みています。誰でも助けることができますか?ありがとう!

必要な場合に備えて、さらに詳しい情報を次に示します。

$ echo $RSYNC_PROXY
127.0.0.1:3128
$ curl -x localhost:3128 http://rsync.macports.org:873/
@RSYNCD: 30.0
$ uname -a
Darwin Simon-MP.local 12.0.0 Darwin Kernel Version 12.0.0: Sun Jun 24 23:00:16 PDT 2012; root:xnu-2050.7.9~1/RELEASE_X86_64 x86_64
4

1 に答える 1

3

問題が解決しました。

sudoRSYNC_PROXY 環境を に渡していることがわかりましたrsync。環境を維持するには、次のオプションsudoを受け入れます。-E

-E (環境を維持する) オプションは、sudoers(5) の env_reset オプションをオーバーライドします)。これは、一致するコマンドに SETENV タグがあるか、sudoers(5) で setenv オプションが設定されている場合にのみ使用できます。

于 2012-08-08T02:30:03.350 に答える