Comment puis-je installer la version Perl sous mon domicile à l'aide perlbrew?
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.
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
.