Первый запуск CPAN (конфигурация прокси)

мне нужно запустить cpan через прокси, но когда я пытаюсь настроить, я получаю ошибки и не могу войти в cpan в первый раз

root@srv-linux01:~# cpan

CPAN.pm requires configuration, but most of it can be done automatically.
If you answer 'no' below, you will enter an interactive dialog for each
configuration option instead.

Would you like to configure as much as possible automatically? [yes] no

В настройках прокси:

If you're accessing the net via proxies, you can specify them in the
CPAN configuration or via environment variables. The variable in
the $CPAN::Config takes precedence.

 <ftp_proxy>
Your ftp_proxy? [] http://username:password@proxyIP:Port/  <---- is ok the information?

 <http_proxy>
Your http_proxy? [] http://username:password@proxyIP:Port/  <---- is ok the information?

 <no_proxy>
Your no_proxy? []



If your proxy is an authenticating proxy, you can store your username
permanently. If you do not want that, just press ENTER. You will then
be asked for your username in every future session.

Your proxy user id? []     <---- username is needed again?


Your password for the authenticating proxy can also be stored
permanently on disk. If this violates your security policy, just press
ENTER. You will then be asked for the password in every future
session.

Your proxy password?     

И до этого я получаю это.

Fetching with HTTP::Tiny:
http://www.perl.org/CPAN/MIRRORED.BY.gz
Error downloading with HTTP::Tiny: Not a CODE reference at /usr/share/perl/5.18/CPAN/HTTP/Client.pm line 112, <STDIN> line 65.

Я использую Ubuntu Server 14.04 LTS и Perl 5.18.2.

Спасибо


person Emiliano Cagliari    schedule 07.03.2017    source источник
comment
... вы пробовали указать конфигурацию прокси как просто URL-адрес и указать пользователя/пароль отдельно?   -  person Sobrique    schedule 07.03.2017
comment
Нравится ваш ftp_proxy? [] ipaddress:port Ваш http_proxy? [] ipaddress:port и пользователя и передать перед? да и у меня так же...   -  person Emiliano Cagliari    schedule 07.03.2017
comment
Разве вы не можете использовать установку CPAN следующим образом: export http_proxy=http://httpproxy.test.com:8080/; export https_proxy=$http_proxy   -  person AbhiNickz    schedule 07.03.2017
comment
Привет AbhiNickz я получил это; Получение с помощью HTTP::Tiny: perl.org/CPAN/MIRRORED.BY.gz Ошибка загрузки с помощью HTTP::Tiny: не указана ссылка на КОД в /usr/share/perl/5.18/CPAN/HTTP/Client.pm, строка 112, ‹STDIN›, строка 2.   -  person Emiliano Cagliari    schedule 07.03.2017


Ответы (2)


Да, это довольно раздражает.

Этот ответ SO предполагает, что, возможно, установка LWP (и его 18 зависимостей) улучшит проблему. Боже, я рад, что мне не пришлось прибегать к этому.

Проблема, с которой я столкнулся, заключалась в том, что у меня уже были http_proxy, https_proxy и прописные версии обеих из тех, что установлены (и экспортированы) в моей среде. Почти любая другая программа (включая wget и curl) работает нормально, когда присутствуют эти переменные среды. Нет смысла устанавливать их снова, а затем по-прежнему сбой CPAN, когда он явно вызывает wget!

В конце концов мне удалось следовать инструкциям здесь, установив параметр конфигурации CPAN http_proxy на пустую строку. (Ранее я также удалил настройки имени пользователя и пароля прокси-сервера, вручную отредактировав ~/.cpan/CPAN/MyConfig.pm.)

$ cpan  # or perl -MCPAN -e shell
cpan[1]> o conf http_proxy ""
cpan[2]> o conf ftp_proxy ""
cpan[3]> o conf proxy_user ""
cpan[4]> o conf proxy_pass ""
cpan[5]> o conf commit
cpan[6]> q

$ # I have a shell function that does basically this
$ export http_proxy="http://user:pass@proxyserver:8080"
$ for v in HTTP_PROXY https_proxy HTTPS_PROXY ftp_proxy FTP_PROXY; do
> export $v="$http_proxy"
> done

$ cpan i Devel::Repl   # or whatever

Затем, предположительно, wget просто использовал переменные среды, определенные перед вызовом cpan, что, конечно же, прекрасно работает. Если у вас есть прокси-сервер, требующий аутентификации, в этой статье на Arch wiki есть небольшой скрипт, который запросит у вас учетные данные, а затем установит все соответствующие переменные среды *_proxy и *_PROXY.

В этой заметке, просто в качестве объявления общественной службы, пожалуйста, не помещайте важные пароли в текстовые файлы конфигурации или в свой ~/.bashrc.

person TheDudeAbides    schedule 21.10.2017
comment
На самом деле это работает нормально, но запрашивает аутентификацию прокси в каждом wget в установке. Но я могу жить с этим - person X3MBoy; 27.03.2019
comment
@X3MBoy X3MBoy Возможно, это вообще не ваша проблема, но я все равно должен подчеркнуть, чтобы убедиться, что у вас есть exported переменные. Вложенные оболочки не наследуют значения переменных среды, если вы не сделаете это явно. - person TheDudeAbides; 08.10.2019
comment
В моем случае это решило проблему - person Pablo Bianchi; 24.06.2020

то, что я сделал, чтобы преодолеть поведение прокси-сервера cpan, - это префикс команды с помощью команды proxychains.

Подробности о проксичейнах: https://github.com/haad/proxychains

person Roman Spiak    schedule 03.06.2020