Исходя из ваших комментариев, установлена ли в вашей оболочке http_proxy
переменная ENV?
$ env | grep http_proxy
Если нет, то установите ее с настройками прокси-сервера и повторите попытку установки perlbrew:
$ export http_proxy = "http://yourProxyURLorIP:8080"
$ perlbrew install perl-5.12.1
perlbrew
использует эту переменную ENV для получения прокси-сервера.Если эта переменная ENV не установлена, то она пытается обычное прямое HTTP-соединение (см. строка 1274 в текущем master-файле perlbrew на Github )
$ua->proxy($ENV{http_proxy}) if $ENV{http_proxy};
Если это не работает, тогдавзгляд на HTTP::Lite
.Это то, что perlbrew
использует под капотом для получения исходного кода. NB.perlbrew использует свою собственную копию HTTP :: Lite
Наконец, если вам все же не повезло, вы упомянули, что «сначала установили его» через CPAN.В документах упоминаются проблемы при обновлении с предыдущей версии CPAN.Это может быть что-то еще, что вам нужно изучить?
Обновление Проверьте этот сценарий HTTP::Lite
и дайте мне знать, что вы видите (NB. Вы можетенеобходимо установить HTTP::Lite
):
use strict;
use warnings;
use HTTP::Lite;
my $ua = HTTP::Lite->new;
$ua->proxy("yourProxyURLorIP:8080"); # <= http_proxy env minus "http://"
my $req = $ua->request( 'http://search.cpan.org/dist/perl-5.12.1/' )
or die "Unable to get document: $!";
print $ua->body(); # <= if you get this then all is good!
Я думаю, что вы, вероятно, столкнулись с известной ошибкой с HTTP::Lite
, см. RT RT Утили прокси в стиле uri не могут правильно настроить прокси и порт .
Приведенный выше код является обходным путем для этой ошибки.Я предполагаю, что та же ошибка есть в perlbrew
копии HTTP::Lite
.Если после этого удаление http://
из http_proxy ENV решит проблему (известные последние слова!)
Обновление 2
Просто чтобы сделать мойпоследний комментарий очищается, когда вы запускаете perlbrew
, вы можете сделать это (из оболочки вроде bash
):
http_proxy=IPaddr:Port perlbrew install perl-5.12.1
Вам нужно будет всегда ставить префикс каждой команды perlbrew
, как это, по крайней мере, до HTTP::Lite
или perlbrew
ошибка прокси исправлена.
Альтернативой выше является то, что вы можете просто исправить вашу локальную версию, просто добавив следующее перед строкой 1277:
$ENV{http_proxy} = "IPaddr:Port"; # <= your proxy IP & port
Надеемся, мы наконец-товзломал это!Дайте мне знать, если все успешно, потому что если это так, то я опубликую исправление Гугод (автор perlbrew
) с необходимыми локальными изменениями HTTP::Lite
.