我已经安装了 佩尔布鲁 这似乎是一个很好的解决方案,但是当实际上尝试安装一些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

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

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

perlbrew 使用此Env变量拾取代理服务器。如果未设置此ENV变量,则尝试正常的直接HTTP连接(请参阅 第1274号线在GitHub上的Perlbrew当前主人)

$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问题 URI样式代理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

希望我们终于破解了它!让我知道所有人是否成功,因为如果是这样,我会发布一个修复程序 Gugod (作者 perlbrew)必要的本地更改 HTTP::Lite.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top