2015-11-30 1 views
0

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."

+2

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

+0

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

+0

Vous avez probablement défini PERL5LIB dans un environnement, mais pas l'autre. – ikegami

Répondre

1

Vous pouvez vérifier le chemin d'installation du module en utilisant cette commande:

perldoc -l Email::Sender::Simple 

S'il est pas installer donnera la sortie ci-dessous:

No documentation found for "Email::Sender::Simple". 

Sinon, il donnera le chemin complet de ce module.

+0

Remarque: en raison de certains bogues, certains modules installés n'ont pas pu être enregistrés. Voir [cpanm ne pas enregistrer tous les modules installés dans perllocal.pod] (http://stackoverflow.com/questions/32679413/cpanm-does-not-register-all-installed-modules-in-perllocal-pod) –

+0

en essayant de lancez ceci: "Vous devez installer le paquet perl-doc pour utiliser ce programme.". – epeleg

+0

@epeleg: 'apt-get install perl-doc' – serenesat