コメントに基づいてhttp_proxy
、シェルにENV変数を設定していますか?
$ env | grep http_proxy
そうでない場合は、プロキシ設定で設定し、perlbrewのインストールを再試行してください。
$ export http_proxy = "http://yourProxyURLorIP:8080"
$ perlbrew install perl-5.12.1
perlbrew
このENV変数を使用して、プロキシサーバーを取得します。このENV変数が設定されていない場合は、通常の直接HTTP接続を試行します(Githubのperlbrew current masterの1274行目を参照) 。
$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スタイルのプロキシ環境変数がプロキシとポートを正しく設定できない。
上記のコードは、このバグの回避策です。同じバグがの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