Domanda

Ho installato perlbrew che sembra una buona soluzione, ma ottengo un errore di significato quando in realtà si tenta di installare una versione di 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.
È stato utile?

Soluzione

In base alle vostre osservazioni avete http_proxy variabile ENV insieme nel tuo guscio?

$ env | grep http_proxy

Se poi non impostarlo con le impostazioni del proxy e ri-prova perlbrew installazione:

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

perlbrew utilizza questa variabile ENV per raccogliere il server proxy. Se questa variabile ENV non è impostato allora prova la normale connessione HTTP diretta (vedi linea 1274 in master attuale perlbrew su Github )

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

Se questo non funziona, allora dare un'occhiata a HTTP::Lite . Questo è ciò perlbrew usi sotto il cofano di scaricare codice sorgente. NB. perlbrew utilizza la propria copia di HTTP :: Lite

Infine, se ancora senza fortuna lei ha detto che si "installato un primo momento" tramite CPAN. La documentazione fa problemi parlare di quando l'aggiornamento da una versione precedente CPAN. Questo forse qualcosa ulteriormente è necessario guardare in?


Aggiorna Prova questo script HTTP::Lite e fatemi sapere cosa che si vede (NB potrebbe essere necessario installare 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!

Credo che sei stato probabilmente colpito da un bug noto con HTTP::Lite , si veda il numero RT uri stile delega ENV Vars non riescono a impostare il proxy e la porta correttamente .

Il codice di cui sopra è la soluzione a questo bug. Presumo lo stesso bug è in copia perlbrew di HTTP::Lite . Se è quindi rimuovendo il http:// dal http_proxy ENV risolverebbe il problema (le ultime parole famose!)


Aggiorna 2

Giusto per fare il mio ultimo commento chiaro quando si esegue perlbrew si può fare questo (da shell come bash):

http_proxy=IPaddr:Port perlbrew install perl-5.12.1

Si avrebbe bisogno di anteporre sempre ogni comando perlbrew come questo, almeno fino a quando HTTP::Lite o un proxy perlbrew bug è stato risolto.

In alternativa al sopra è si può solo patchare la versione locale solo l'aggiunta di quanto segue prima linea di 1277:

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

Speriamo che abbiamo finalmente rotto esso! Fatemi sapere se tutti di successo, perché se è così allora vi posto una correzione a Gugod (autore di perlbrew) con necessarie modifiche locali alle HTTP::Lite.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top