J'ai récemment mis à jour bugzilla [sur Debian GNU/Linux 6.0.3 (squeeze)] (à la dernière version et bien qu'il semble fonctionner, j'ai un script externe pour l'intégrer avec le contrôle source PlasticSCM qui donne l'erreur suivante :..Est-ce que ce module Perl est installé (et où) ou non?
Can't locate Email/Sender/Simple.pm in @INC (@INC contains: . /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl) at Bugzilla/Mailer.pm line 27.
la trace de la pile conserve tout le chemin jusqu'à mon script personnalisé mais je pense qu'il est pas pertinent
ligne 27 dit Bugzilla/Mailer.pm:
use Email::Sender::Simple qw(sendmail);
Et j'ai supposé que le pr oblem était que
Pensant que le problème était que le module Email :: Sender :: Simple était manquant.
Bugzilaa a un script appelé ./checksetup.pl
qui est utilisé pour vérifier que toutes les conditions préalables sont remplies. Lorsque j'essaie d'exécuter ce script, cela n'indique rien de manquant.
Cependant, quand il ne trouve les bibliothèques manquantes, il donne des instructions pour les ajouter à l'aide de la une commande avec la structure:
/usr/bin/perl install-module.pl HTML::FormatText::WithLinks
J'exécuté:
/usr/bin/perl install-module.pl Email::Sender:Simple
qui dit:
Checking for CPAN (v1.81) ok: found v1.9402
Checking for YAML (any) ok: found v1.15
Checking for ExtUtils-MakeMaker (v6.31) ok: found v7.1
CPAN: Storable loaded ok (v2.20)
Going to read '/MYUSERNAME/.cpan/Metadata'
Database was generated on Mon, 30 Nov 2015 07:17:02 GMT
Installing Email::Sender:Simple version 1.300021...
Email::Sender::Simple is up to date (1.300021).
Il semble donc avoir installé le module mais l'exécution du script CGI entraîne à nouveau y la même trace de pile.
Également exécuter le script install-module.pl
renvoie à nouveau le même résultat à nouveau (comme si il vient de l'installer à nouveau ...).
Comment savoir si ce module est installé (et où) ou non et que puis-je faire pour que mon script fonctionne?
MISE À JOUR: Je pense savoir où est le problème.
Le script cgi que je suis en train de courir a la ligne suivante pour sa première ligne:
#!/usr/bin/perl -wT
d'ici: https://stackoverflow.com/a/2526809/25412 Je comprends que le drapeau de T provoque .
de ne pas faire partie de @INC (c.-à- Chemin de recherche du module Perls) c'est pourquoi le dossier lib
que le dossier d'installation de mon bugzilla (qui est aussi le cgi) n'est pas utilisé et le fichier lib/Email/Sender/Simple.pm qui est à l'intérieur est ignoré par le CGI.
Alors la mise à jour Q est - dois-je:
1. Retirez le T
de la première ligne du cgi? ou
2. D'une manière ou d'une autre (et comment?) installez EMAIL :: Sender :: Simple à un autre endroit qui fait partie du @INC?
je tends pense que la réponse devrait être le 2 beacuse Je pense que le drapeau T est là pour des raisons de sécurité, car this page dit:
"It's a good idea to turn them on explicitly for programs that run on behalf of someone else whom you might not necessarily trust, such as CGI programs or any internet servers you might write in Perl."
Qu'est-ce que le fichier 'install-module.pl'? Je n'ai jamais vu ça avant. Dans debian, vous utiliseriez apt-get, je suppose. Par exemple. 'apt-get install libfoo-perl'. Ou utilisez l'utilitaire cpan 'cpan Email :: Sender :: Simple'. Et bien sûr, vous devrez installer en tant qu'utilisateur correct en référence à l'emplacement de votre programme perl. – TLP
Je ne suis pas une personne Perl en aucune façon, le 'install-module.pl' fait partie de bugzilla. lors de l'exécution du script bugzillas './checksetup.pl' s'il trouve des modules manquants, il montre la commande à exécuter pour les installer. ces commandes ont la forme '/ usr/bin/perl install-module.pl Email :: expéditeur: Simple'. – epeleg
Vous avez probablement défini PERL5LIB dans un environnement, mais pas l'autre. – ikegami