2

私は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.
4

1 に答える 1

8

コメントに基づいて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(の作成者)に投稿します。perlbrewHTTP::Lite

于 2010-09-15T17:57:11.320 に答える