如何使用perlbrew在我家安装Perl版本?

时间:2010-09-15 13:38:18

标签: perl install perlbrew

我已经安装了perlbrew这似乎是一个很好的解决方案,但在实际尝试安装一些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.

1 个答案:

答案 0 :(得分:6)

根据您的评论,您的shell中是否设置了http_proxy ENV变量?

$ env | grep http_proxy

如果没有,请使用您的代理设置进行设置,然后重新尝试perlbrew install:

 $ export http_proxy = "http://yourProxyURLorIP:8080"
 $ perlbrew install perl-5.12.1

perlbrew使用此ENV变量来获取代理服务器。如果未设置此ENV变量,则它会尝试正常的直接HTTP连接(请参阅line 1274 in perlbrew current master on Github

$ua->proxy($ENV{http_proxy}) if $ENV{http_proxy};

如果不起作用,请查看HTTP::Lite。这是perlbrew在引擎盖下用来获取源代码的内容。 NB。 perlbrew使用自己的HTTP :: Lite

副本

最后,如果仍然没有运气,你提到你通过CPAN“首次安装”。从以前的CPAN版本升级时,文档确实提到了问题。您可能需要进一步研究这个问题吗?


更新测试此HTTP::Lite脚本并告诉我您的内容(注意:您可能需要安装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 style proxy env vars fail to set the proxy and port correctly

以上代码是此错误的解决方法。我假设同一个错误出现在perlbrew的{​​{1}}副本中。如果是,那么从你的http_proxy ENV中删除http://将解决问题(着名的遗言!)


更新2

只是为了在运行perlbrew时清楚我的上一条评论,你可以这样做(来自像bash这样的shell):

http_proxy=IPaddr:Port perlbrew install perl-5.12.1

您需要始终为每个perlbrew命令添加前缀,至少在修复HTTP::Liteperlbrew代理错误之前。

上面的替代方法是你可以修改你的本地版本,只需在第1277行之前添加以下内容:

$ENV{http_proxy} = "IPaddr:Port";   # <= your proxy IP & port

希望我们终于破解了它!如果所有内容都成功,请告诉我,如果是,那么我会向HTTP::Liteperlbrew的作者)发布修补程序,并对HTTP::Lite进行必要的本地更改。