Как я могу установить версию Perl под моим домом, используя перльбарит?

StackOverflow https://stackoverflow.com/questions/3718153

  •  02-10-2019
  •  | 
  •  

Вопрос

Я установил перллы Что похоже на хорошее решение, но я получаю некоторую бессмысленную ошибку, когда на самом деле пытаюсь установить версию 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top