настроить conda для кеширования прокси (MacOs + Squidman)

Как я могу настроить conda для использования кеширующего прокси?

Пока у меня есть:

  • установил SquidMan и установил его хост и порт на 127.0.0.1:8080.
  • установите настройки сети на прокси как http, так и https по этому адресу
  • отредактировал .condarc для использования прокси

Считаю, что SquidMan настроен правильно. Если я выключу его и попытаюсь выйти в Интернет, я получаю сообщение об ошибке «Прокси-сервер отказывается подключаться». Это происходит как для веб-сайтов http, так и для https, а также если я ввожу IP напрямую (без DNS между ними).

Отредактированный .condarc выглядит так:

proxy_servers:
    http: http://127.0.0.1:8080
    https: http://127.0.0.1:8080

Это те же адреса, что и в настройках системного прокси, которые, похоже, отлично подходят для просмотра.

В качестве теста я использую conda install python = 3.6 conda install python = 3.7 conda clean --all

и надеемся увидеть очень высокую скорость загрузки этих пакетов python. Но они всегда до боли медлительны.

Я проверил настройки SquidMan. Существует «максимальный размер объекта», который, возможно, предотвращает кеширование загрузок conda. Они слишком большие? Итак, я набрал эти настройки до максимума (намного больше, чем загрузка conda) и попробовал снова. Те же результаты.

Как мне настроить squidman для работы с conda?


person lhk    schedule 14.01.2019    source источник


Ответы (1)


Похоже, вы все правильно настроили для проксирования трафика через squid. Однако conda использует https для загрузки своих пакетов. В базовой конфигурации squid может передавать только SSL-соединения от клиента к серверу. Этот трафик уже зашифрован, поэтому его нельзя кэшировать. Вам доступны следующие варианты:

  1. Используйте функцию ssl bump в squid, чтобы калькулятор расшифровывал и повторно зашифровывал проходящие через него данные. . Настроить эту настройку несколько сложно, потому что вам нужно создать самозаверяющий сертификат и доверить ему доверие со стороны conda (использование conda install --insecure может быть всем, что нужно для conda).

  2. Используйте прокси-сервер, специфичный для conda. Anaconda, Inc. предлагает такой сервер, как продукт, поэтому вы вряд ли найдут для этого много встроенной поддержки в инструментах conda с открытым исходным кодом. Менеджер репозиториев Nexus от Sonatype также заявляет о прокси-репозиториях conda в своей документации.

  3. Используйте встроенную поддержку conda для локального кэширования. Поскольку вы указали conda clean в своем вопросе, вы знаете об этом кеше и должны иметь какие-то причины не использовать его. Для одной машины conda pkgs_dir должна работать очень хорошо. Для нескольких машин, возможно, вы могли бы обойтись сетевым ресурсом pkgs_dir или копированием всех файлов .tar.bz2 и .conda с локального компьютера в pkgs_dir для каждой машины.

  4. Добавьте второй уровень проксирования. conda позволяет указывать каналы с протоколом http. Вы можете настроить прокси-сервер, который принимает HTTP-запросы и передает их как https-запросы. Вы можете поместить свой прокси-сервер кеширования squid перед этим прокси-сервером http-https. Таким образом, squid будет видеть простой http-трафик, который он может проверять и кэшировать, и вы по-прежнему можете получить доступ только к https-репозиториям conda. Например, с nginx вы можете сделать это с помощью простого файла conf, например:

server {
    listen 80;
    server_name localhost 127.0.0.1;
    location / {
        proxy_pass https://repo.anaconda.com/;
    }
}
person ws_e_c421    schedule 07.01.2020