Как я могу установить версию Perl под моим домом, используя перльбарит?
Вопрос
Я установил перллы Что похоже на хорошее решение, но я получаю некоторую бессмысленную ошибку, когда на самом деле пытаюсь установить версию Perl:
$ perlbrew install perl-5.12.1
Attempting to load conf from /home/dave/perl5/perlbrew/Conf.pm
Fail to get http://search.cpan.org/dist/perl-5.12.1 (error: ) at /home/dave/perl5/perlbrew/bin/perlbrew line 1277.
Решение
На основании ваших комментариев у вас есть http_proxy
Env Переменная набор в вашей оболочке?
$ env | grep http_proxy
Если не установите его на настройки прокси и повторно попробуйте перльбур, установите:
$ export http_proxy = "http://yourProxyURLorIP:8080"
$ perlbrew install perl-5.12.1
perlbrew
Использует эту переменную ENV для получения прокси-сервера. Если эта переменная env не установлена, то она пытается нормальное прямое подключение HTTP (см. Строка 1274 в Перлкрит Текущий мастер на GitHub)
$ua->proxy($ENV{http_proxy}) if $ENV{http_proxy};
Если это не работает, потом посмотрите на HTTP::Lite
. Отказ Это что 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 URI Proxy Proxy Env vars не удается установить прокси и порт правильно.
Приведенный выше код - это обходной путь к этой ошибке. Я предполагаю, что такая же ошибка в 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
.