Perlbrewを使用して自宅にPerlバージョンをインストールするにはどうすればよいですか?
質問
インストールしました 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.
解決
あなたのコメントに基づいて、あなたは持っていますか 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マスターの1274行)
$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
うまくいけば、私たちはついにそれをクラックしました!もしそうなら修正を投稿するので、すべてが成功したかどうかを教えてください グゴッド (の著者 perlbrew
)必要な局所的な変更があります HTTP::Lite
.