Question

J'ai installé perlbrew qui semble être une bonne solution, mais je reçois une erreur de sens lorsque vous essayez réellement d'installer une version 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.
Était-ce utile?

La solution

D'après vos commentaires avez-vous http_proxy ensemble variable ENV dans votre shell?

$ env | grep http_proxy

Sinon définissez avec vos paramètres proxy et rejuger perlbrew installer:

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

perlbrew utilise cette variable ENV pour récupérer le serveur proxy. Si cette variable ENV n'est pas définie alors il tente la connexion normale HTTP directe (voir HTTP::Lite . C'est ce que les utilisations perlbrew sous le capot pour la récupération du code source. NB. perlbrew utilise sa propre copie de HTTP :: Lite

Enfin, si toujours pas de chance vous avez mentionné que vous « d'abord installé » via CPAN. Les documents ne mentionnent des problèmes lors de la mise à niveau d'une version antérieure de CPAN. Cela peut-être quelque chose de plus que vous devez regarder dans?


Mise à jour Test cette HTTP::Lite scénario et laissez-moi savoir ce que vous voyez (NB vous devrez peut-être installer 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!

Je pense que vous avez probablement été touché par un bug connu avec HTTP::Lite , voir RT question proxy de style uri env vars ne parviennent pas à définir le proxy et le port correctement.

Le code ci-dessus est la solution à ce bogue. Je suppose que le même bug est en copie perlbrew de HTTP::Lite . Si elle enlève alors la http:// de votre http_proxy ENV résoudrait le problème (derniers mots célèbres!)


Mise à jour 2

Juste pour faire mon dernier commentaire clair lorsque vous exécutez perlbrew vous pouvez le faire (de la coquille comme bash):

http_proxy=IPaddr:Port perlbrew install perl-5.12.1

vous devez toujours préfixe chaque commande perlbrew comme celui-ci, au moins jusqu'à ce que HTTP::Lite ou proxy perlbrew bug est corrigé.

Alternative ci-dessus est que vous pouvez juste patcher votre version locale juste être en ajoutant ce qui suit avant la ligne 1277:

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

Si tout va bien nous avons enfin craquée! Permettez-moi de savoir si tous les succès parce que si oui, alors je posterai un correctif pour Gugod (auteur de perlbrew) avec nécessaires changements locaux à HTTP::Lite.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top