Я только что установил macport, но самообновление не удается. Я подозреваю, что это потому, что я нахожусь в корпоративной сети за прокси, но не могу понять, как я могу это исправить.

Для фона я установил прокси:

$> typeset -p http_proxy
declare -x http_proxy="http://proxy:8080"

Но macports терпит неудачу в getaddrinfo:

$> sudo port -d selfupdate
DEBUG: Copying /Users/i063510/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

Интересно, что curl завершается успешно, но ping не выполняется:

$> curl http://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
$> ping google.com
ping: cannot resolve google.com: Unknown host

1 ответ1

1

Вы устанавливаете прокси для http-соединений. curl и ваш веб-браузер использует http, а rsync - нет. Таким образом, объясняя ошибки.

В идеале вам нужно попросить своего прокси-администратора изменить прокси-сервер, чтобы разрешить rsync,

Если нет, то вы можете получить синхронизацию для работы через http-прокси согласно этому блогу.

Есть три шага. Необходимые условия, чтобы это работало: у вас есть адрес прокси, доступ администратора к вашему mac и что прокси поддерживает порт rsync (873/tcp).

Вы можете проверить подключение, перейдя по адресу http://rsync.macports.org:873, вы должны получить следующую ошибку:

@RSYNCD: 30.0
@ERROR: protocol startup error

Если это работает нормально, вам нужно настроить среду sudo для osx, чтобы пропустить настройки среды прокси.

  1. Отредактируйте файл sudoers с помощью sudo visudo . Вам нужно добавить эти строки:

    По умолчанию env_keep += "http_proxy HTTP_PROXY HTTPS_PROXY FTP_PROXY RSYNC_PROXY" По умолчанию env_keep += "ALL_PROXY NO_PROXY"

  2. Установите свой http прокси

    экспорт http_proxy = http://proxy.example.com:8080

    где 8080 - номер порта прокси

  3. Заставьте rsync использовать прокси. По умолчанию порт использует rsync для управления своими обновлениями. RSync может использовать настройку среды прокси (man rsync для mre)

    export RSYNC_PROXY = proxy.example.com: 8080

    Обратите внимание на заглавную букву прокси-сервера rsync и тот факт, что он не требует http://

Это должно сделать это. Затем вы можете запустить selfupdate, чтобы получить порт до последней версии.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .