2016-12-01 6 views
2

J'ai une installation perl de fraise (v. 5.16.3) sur une boîte de production de fenêtres. Je suppose qu'il y a plusieurs lunes, quelqu'un l'a installé sur le disque C: puis l'a simplement déplacé vers D :. Je ne sais pas, je n'étais pas là, cependant cela fonctionne bien sauf quand j'essaye d'installer des modules. L'utilisation de cpanm ne fait que lancer les modules sur le lecteur C :. Pas bien. @INC ne va pas là-bas et l'administrateur ne veut rien de là-bas de toute façon. J'ai besoin d'eux avec Perl sur le D :.Essayer de forcer le CPAN à s'installer dans un répertoire spécifique pour Strawberry Perl

Alors, j'ai essayé d'utiliser CPAN et changer les répertoires:

cpan> o conf mbuildpl_arg "--install_base D:/strawberry/perl" 
    mbuildpl_arg  [--install_base D:strawberryperl] 
commit: wrote 'D:\strawberry\perl\lib/CPAN/Config.pm' 

cpan> o conf makepl_arg "PREFIX=D:/strawberry/perl" 
    makepl_arg   [PREFIX=D:/strawberry/perl] 
commit: wrote 'D:\strawberry\perl\lib/CPAN/Config.pm' 

cpan> install Email::Simple 

Il a installé Email Simple D:/fraise/perl/lib - pas parfait, mais il fonctionne. Génial! Quelques autres passent par le même. Allez installer Module :: Runtime

cpan> install Module::Runtime 

et cela va dans D:/strawberry/perl/lib/perl5. Huh? OK, pas parfait, mais mon @INC inclut D:/strawberry/perl/lib donc ça ne devrait pas poser de problème, non? Allez pour installer MooX :: Types :: MooseLike :: Base

cpan> install MooX::Types::MooseLike::Base 

Ne pas installer. Voici le CPAN barf sur:

cpan> install MooX::Types::MooseLike::Base 
Running install for module 'MooX::Types::MooseLike::Base' 
Running make for M/MA/MATEU/MooX-Types-MooseLike-0.29.tar.gz 
Checksum for D:\strawberry\cpan\sources\authors\id\M\MA\MATEU\MooX-Types-MooseLike-0.29.tar.gz ok 

    CPAN.pm: Building M/MA/MATEU/MooX-Types-MooseLike-0.29.tar.gz 

Checking if your kit is complete... 
Looks good 
Warning: prerequisite Module::Runtime 0.014 not found. 
... Detected uninstalled Perl. Trying to continue. 
Have \strawb~1\perl\lib 
Want \strawberry\perl\lib 
Writing Makefile for MooX::Types::MooseLike 
Writing MYMETA.yml and MYMETA.json 
---- Unsatisfied dependencies detected during ---- 
---- MATEU/MooX-Types-MooseLike-0.29.tar.gz ---- 
    Module::Runtime [requires] 
Running make test 
    Delayed until after prerequisites 
Running make install 
    Delayed until after prerequisites 
Running install for module 'Module::Runtime' 
Running Build for Z/ZE/ZEFRAM/Module-Runtime-0.014.tar.gz 
    Has already been unwrapped into directory D:\strawberry\cpan\build\Module-Runtime-0.014-yHdcFp 
    Has already been made 
Running Build test 
    Has already been tested successfully 
Running Build install 
    Already done 
Running make for M/MA/MATEU/MooX-Types-MooseLike-0.29.tar.gz 
    Has already been unwrapped into directory D:\strawberry\cpan\build\MooX-Types-MooseLike-0.29-UaWuDZ 

    CPAN.pm: Building M/MA/MATEU/MooX-Types-MooseLike-0.29.tar.gz 

Warning: Prerequisite 'Module::Runtime => 0.014' for 'MATEU/MooX-Types-MooseLike-0.29.tar.gz' already built but the resu 
lt looks suspicious. Skipping another build attempt, to prevent looping endlessly. 
cp lib/MooX/Types/MooseLike.pm blib\lib\MooX\Types\MooseLike.pm 
cp lib/MooX/Types/MooseLike/Base.pm blib\lib\MooX\Types\MooseLike\Base.pm 
    MATEU/MooX-Types-MooseLike-0.29.tar.gz 
    D:\strawberry\c\bin\dmake.exe -- OK 
Running make test 
D:\strawberry\perl\bin\perl.exe "-ID:/strawberry/perl/lib" "-ID:/strawberry/perl/lib" "-MExtUtils::Command::MM" "-e" "te 
st_harness(0, 'blib\lib', 'blib\arch')" t/*.t 
t/basic.t ........................ Can't locate Module/Runtime.pm in @INC (@INC contains: D:\strawberry\cpan\build\MooX- 
Types-MooseLike-0.29-UaWuDZ\blib\lib D:\strawberry\cpan\build\MooX-Types-MooseLike-0.29-UaWuDZ\blib\arch D:/strawberry/p 
erl/lib D:/strawberry/perl/site/lib/MSWin32-x86-multi-thread D:/strawberry/perl/site/lib D:/strawberry/perl/vendor/lib D 
:/strawberry/perl/lib .) at D:/strawberry/perl/lib/Moo/_Utils.pm line 23. 
BEGIN failed--compilation aborted at D:/strawberry/perl/lib/Moo/_Utils.pm line 23. 
Compilation failed in require at D:/strawberry/perl/lib/Moo.pm line 13. 
BEGIN failed--compilation aborted at D:/strawberry/perl/lib/Moo.pm line 13. 
Compilation failed in require at t/basic.t line 4. 
BEGIN failed--compilation aborted at t/basic.t line 4. 
t/basic.t ........................ Dubious, test returned 2 (wstat 512, 0x200) 
No subtests run 
t/builder.t ...................... Can't locate Module/Runtime.pm in @INC (@INC contains: D:\strawberry\cpan\build\MooX- 
Types-MooseLike-0.29-UaWuDZ\blib\lib D:\strawberry\cpan\build\MooX-Types-MooseLike-0.29-UaWuDZ\blib\arch D:/strawberry/perl/lib D:/strawberry/perl/site/lib/MSWin32-x86-multi-thread D:/strawberry/perl/site/lib D:/strawberry/perl/vendor/lib 

Et cette erreur se répète plusieurs fois, et tous les tests échouent, etc., etc.

Files=14, Tests=0, 1 wallclock secs (0.06 usr + 0.03 sys = 0.09 CPU) 
Result: FAIL 
Failed 14/14 test programs. 0/0 subtests failed. 
dmake.exe: Error code 130, while making 'test_dynamic' 
    MATEU/MooX-Types-MooseLike-0.29.tar.gz 
one dependency not OK (Module::Runtime); additionally test harness failed 
    D:\strawberry\c\bin\dmake.exe test -- NOT OK 
//hint// to see the cpan-testers results for installing this module, try: 
    reports MATEU/MooX-Types-MooseLike-0.29.tar.gz 
Running make install 
    make test had returned bad status, won't install without force 
Stopping: 'install' failed for 'M/MA/MATEU/MooX-Types-MooseLike-0.29.tar.gz'. 
Failed during this command: 
MATEU/MooX-Types-MooseLike-0.29.tar.gz  : make_test NO one dependency not OK (Module::Runtime); additionally test 
harness failed 

Ainsi, les questions ....

(1) Que dois-je faire pour placer Module :: Runtime au bon endroit? Ma précédente tentative de changer de répertoire a fonctionné pour certains, mais pas celle-ci. Je préférerais D: \ fraberry \ perl \ site \ lib - car il semble que cpanm mettrait ses modules là, mais D: \ strawberry \ perl \ lib fonctionnerait bien aussi.

Si nous fixons le numéro (1), cela n'a pas d'importance, mais je suis curieux de savoir si quelqu'un a une réponse:

(2) Pourquoi ne peut CPAN trouver du module Runtime, quand il est dans un des sous-répertoires de @INC? Donc, je sais qu'une réponse est de réinstaller fraise au bon endroit, mais c'est une boîte de production avec des scripts Perl en cours d'exécution et sans temps d'arrêt, donc non, ce n'est pas une option. Ils ne me permettront pas de le faire de toute façon.

Merci d'avance pour l'aide.

+0

Travail possible: ajoutez 'D: \ fraberry \ perl \ lib5' à'% PERL5LIB% ' – mob

+0

@mob Cela fonctionnerait à court terme et je pourrais mettre cela dans les variables d'environnement pour la session en cours et obtenir mon autre module chargé. Cependant, cela ressemble à un pansement sur un os cassé, car cela ne résout pas nécessairement la racine du problème. Vous avez dit que c'était un travail autour. Je devrais également redémarrer la machine pour mettre à jour l'environnement pour le reste de la machine, ce que je ne peux malheureusement pas faire. Donc, j'espère qu'il y a une solution à la racine du problème. installez les modules correctement, afin que d'autres problèmes ne se produisent pas sur la route. Merci pour la contribution si! – FrankRalphBob

+0

@ikegami Merci pour votre contribution. Pouvons-nous vider cette réponse un peu? Je ne connais pas les différents types de modules (MB = Module :: Build & MM = ExtUtils :: MakeMaker?). J'ai parcouru quelques pages pour la documentation, mais je suis au sec. Y a-t-il quelque part une documentation qui explique quels sont les types et les conséquences de leur utilisation? Merci encore. – FrankRalphBob

Répondre

1

L'argument que vous fournissez aux modules utilisant ExtUtils :: MakeMaker comme programme d'installation n'est pas cohérent avec l'argument que vous fournissez aux modules utilisant Module :: Build comme programme d'installation. Choisissez un schéma et utilisez-le régulièrement. N'oubliez pas de dire à Perl où chercher les modules.

set PERL5LIB=D:/strawberry/perl_modules/lib/perl5 

Bien que cela résout votre problème immédiat, votre approche de régler le problème sous-jacent est pas le meilleur. Juste effacer ces valeurs devrait avoir le module installer dans l'emplacement correct.

o conf makepl_arg "" 
o conf mbuildpl_arg "" 
set PERL5LIB= 

Assurez-vous également de ne pas remplacer l'emplacement d'installation dans les environnements.

set PERL_MM_OPT= 
set PERL_MB_OPT= 

Enfin, vous pouvez vérifier Config.pm et Config_heavy.pl pour C: qui doivent être changées en D:.

+0

C'était l'information dont j'avais besoin: Une meilleure solution serait de laisser tous ces paramètres inutilisés et de simplement changer C: en D: dans Config.pm. Il y avait environ 15 fichiers Config.pm, mais celui de D: \ Strawberry \ perl \ lib contenait les entrées C:. Changé ceux à D:, et cpan s'installe au bon endroit. cpanm est toujours en train d'installer C: drive, donc je ne sais pas d'où cpanm tire ses informations de configuration, mais au moins je peux aller de l'avant. Merci beaucoup pour votre aide ikegami! – FrankRalphBob

+0

Oui, je n'étais pas au courant qu'il y avait deux procédures d'installation de module (je suis un peu nouveau à cette chose Perl). Mais avec cette connaissance, les arguments de configuration ont du sens maintenant. J'ai fait 'o conf init ', qui, je suppose, ramènerait la configuration de cpan à son état initial. Il n'y avait pas de vars d'env pour le MM ou MB. Merci encore. – FrankRalphBob

+0

Je l'ai pris ce bit parce qu'il ne pensait pas qu'il trouverait Config.pm si les lettres du pilote étaient erronées. – ikegami