Как cpanm может получить настройки для прокси, который требует имя пользователя и пароль - PullRequest
0 голосов
/ 30 ноября 2018

Я работаю с CPANM для взаимодействия с прокси, который требует имя пользователя и пароль.Я указал настройки при запуске "o conf init / proxy / под cpan".Я считаю, что переменные, используемые в среде unix для указания прокси, не являются стандартными для всей среды.Другие утилиты Unix работают правильно через прокси после установки переменных среды на правильные значения.

Мои вопросы следующие:

  1. Как CPANM взаимодействует с любыми переменными среды?Какими бы они были?

  2. Есть ли какая-то соответствующая область кода, которую мы можем посмотреть, чтобы помочь устранить двусмысленность, я думаю, что внутри CPANM есть интерфейс LWP?https://github.com/miyagawa/cpanminus/blob/devel/App-cpanminus/cpanm

####:/mnt/c/Projects$ sudo cpanm install Catalyst::Helper -v
cpanm (App::cpanminus) 1.7040 on perl 5.022001 built for x86_64-linux-gnu-thread-multi
Work directory is /home/####/.cpanm/work/1543605706.124
You have make /usr/bin/make
You have LWP 6.36
You have /bin/tar: tar (GNU tar) 1.28
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by John Gilmore and Jay Fenlason.
Searching install () on cpanmetadb ...

########:/mnt/c/Projects$ env | grep HTTP_proxy
HTTP_proxy=http://####:###

1 Ответ

0 голосов
/ 30 ноября 2018

Насколько я вижу, cpanm (на самом деле App :: Cpanminus опирается на HTTP :: Tiny для выполнения HTTP-запросов.

Из документов HTTP ::Tiny :

HTTP :: Tiny может прокси-запросы как http, так и https. Поддерживается только базовая авторизация прокси, и она должна предоставляться как часть URL прокси: http://user:pass@proxy.example.com/.

HTTP :: Tiny поддерживает следующие переменные окружения прокси: http_proxy или HTTP_PROXY, https_proxy или HTTPS_PROXY, all_proxy или ALL_PROXY

Следовательно, вы должны попытаться указать имя пользователя и пароль прокси как часть URLНапример:

$ export HTTP_PROXY=http://<user>:<password>@<url>:<port>
$ export HTTPS_PROXY=http://<user>:<password>@<url>:<port>

Кроме того, согласно документации, параметр HTTP_PROXY принимается LWP :: UserAgent (основной клиент HTTP, используемый утилитой командной строки cpan), в то время как HTTPS_PROXY поддерживается curl (отступление).cpan при сбое LWP.) См. документы LWP :: UserAgent и документы curl .

Следовательно, HTTP_PROXY / HTTPS_PROXY должны быть общими переменными среды, которыеподдерживаются всеми клиентами CPAN.

...