GNU/Linux >> Tutoriels Linux >  >> Linux

Dépannage de l'erreur Request Tracker version 3 - Tentative de libération d'un scalaire non référencé, interpréteur Perl

J'utilise Request Tracker version 3 depuis un certain temps et cela a très bien fonctionné. Mais tout à coup, le serveur RT s'est écrasé et le journal des erreurs Apache avait le message d'erreur ci-dessous :

Attempt to free unreferenced scalar: SV 0x811ef70, Perl interpreter: 0x7f5a010 at
 /usr/lib/perl5/5.8.8/ExtUtils/Liblist.pm line 6.
 Segmentation fault

Il semblait que de nombreux scripts perl avaient des problèmes et en fait, le perl et cpan commandes ont abouti à la même erreur que ci-dessus :

# cpan
 Attempt to free unreferenced scalar: SV 0x811ef70, Perl interpreter: 0x7f5a010 at
 /usr/lib/perl5/5.8.8/ExtUtils/Liblist.pm line 6.
 Segmentation fault

Solution :

Je n'étais pas sûr de ce qui aurait causé cette erreur, mais après avoir passé quelque temps sur Google, j'ai compris que certains modules perl ou le système d'exploitation avaient peut-être été mis à jour. Mais le plus effrayant, c'est que je n'ai rien mis à jour récemment. Quoi qu'il en soit, j'ai commencé à résoudre le problème.

La seule option que j'avais était d'installer à nouveau Perl et ses modules.

Réinstaller Perl

Pour plus de sécurité, j'ai effectué une sauvegarde des anciens fichiers d'installation de Perl comme ci-dessous :

#mv /usr/lib/perl5 /usr/lib/perl5.bak
#mv /usr/lib64/perl5 /usr/lib64/perl5.bak

Maintenant, j'ai réinstallé Perl en utilisant Yum

#yum reinstall perl

Bon, maintenant j'ai pu exécuter au moins le 'perl ' commande (ce que je ne pouvais pas faire auparavant)

# perl -v
This is perl, v5.8.8 built for x86_64-linux-thread-multi

Installer Perl CPAN

# perl -MCPAN -e shell
Can't locate CPAN.pm in @INC (@INC contains:

J'ai installé perl-CPAN module utilisant yum

#yum install perl-CPAN

Maintenant, le cpan a également fonctionné (sans l'erreur d'erreur de segmentation)

# cpan
cpan shell -- CPAN exploration and modules installation (v1.7602)
ReadLine support available (try 'install Bundle::CPAN')
cpan>

Vérifier si les configurations RT sont correctes dans httpd.conf

Voici l'exemple de configuration :

NameVirtualHost rt_server:443
<VirtualHost rt_server:443>
ServerName rt_server_in
DocumentRoot /opt/rt3/share/html
AddDefaultCharset UTF-8
PerlModule Apache::DBI
PerlRequire "/opt/rt3/bin/webmux.pl"
<Location /NoAuth/images>
SetHandler default
</Location>
<Location />
SetHandler perl-script
PerlResponseHandler RT::Mason
</Location>
ErrorLog logs/error_log
SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/rt_server_cert.pem
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/rt_server_key.pem
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
</VirtualHost>

Démarrer le serveur httpd et mysqld : 

N'oubliez pas que nous n'avons installé aucun module Perl requis pour démarrer RT. Pour savoir quels sont les modules perl nécessaires, nous allons lancer httpd server et résoudre les erreurs générées dans httpd error_log .

Comme prévu, le "httpd ' le serveur n'a pas pu démarrer et le error_log a indiqué que webmux.pl de RT  nécessite les modules ci-dessous :

Remarque : Le httpd error_log ne fournira pas toutes ces informations de module à la fois, mais indiquera quel module est actuellement à l'origine du problème. Vous devrez installer un module à la fois et essayer de démarrer httpd un service. Si cela échoue, vérifiez error_log pour trouver quel module est le coupable (maintenant !). Continuez à suivre cette étape jusqu'à ce que vous ne trouviez plus aucun message d'erreur dans error_log .

Vous trouverez ci-dessous les quelques modules que je me suis souvenu de capturer pour écrire cet article. Mais vous devrez peut-être en installer plus….

Apache2/Response.pm
Can't locate Log::Dispatch
Params::Validate.pm
Can't locate Module::Implementation
Attribute::Handlers
Can't locate File::ShareDir
Can't locate Locale::Maketext::Lexicon
[error] Base class package "Locale::Maketext::Fuzzy" is empty.\n (Perhaps
you need to 'use' the module which defines that package first.)\n at /opt/rt3/bin/../lib/RT/I18N.pm line
62.\nBEGIN failed--compilation aborted at /opt/rt3/bin/../lib/RT/I18N.pm line 62.\nCompilation failed in
require at /opt/rt3/bin/../lib/RT.pm line 152.\nBEGIN failed--compilation aborted at
/opt/rt3/bin/webmux.pl line 102.\nCompilation failed in require at (eval 2) line 1.\n
Can't locate MIME::Entity
Can't locate DBIx::SearchBuilder
Can't locate Email::Address
Can't locate UNIVERSAL::require
Text::Template
Can't locate File::Slurp
HTML::Element
HTML::FormatText
Font::Metrics::Courier
Can't locate Text::Wrapper
Time::ParseDate
Test::EOL
HTML::Scrubber
Test/Memory/Cycle.pm
Test/CPAN/Meta.pm
Base class package "HTML::Mason::Request" is empty.\n
install_driver(mysql) failed: Can't locate DBD/mysql.pm

Installer des modules Perl via CPAN

Par exemple, si le httpd error_log rapports : Impossible de localiser Log/Dispatch.pm @ INC ….alors vous devez installer ce module via CPAN comme ci-dessous

cpan> install Log::Dispatch

Remplacez la commande ci-dessus pour installer d'autres modules.

Lors de l'installation du module perl, j'ai rencontré un problème de compatibilité de version pour DBD::MySQL module. Le httpd error_log avait le message ci-dessous :

install_driver(mysql) failed: DBD::mysql object version 4.013 does not match bootstrap parameter 4.031

Nous devons déplacer 'mysql ' sous '/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBD ‘ et ‘/usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/auto/DBI ‘.

Installez maintenant 'DBD::MySQL ' à nouveau via CPAN

cpan> install DBD::MySQL

Enfin, le httpd  serveur démarré et le error_log était propre sans aucun message. J'ai essayé d'accéder à la page Web de RT via un navigateur, pour ne voir qu'une boîte de dialogue me demandant d'enregistrer un fichier "dtélécharger ‘. Ufff… qu'est-ce que c'était ? J'ai vérifié le httpd error_log et il n'y avait aucun message d'aide. Tout ce que j'ai fait a été de sauvegarder le fichier "télécharger" à partir du navigateur et de l'ouvrir avec un éditeur de texte. Heureusement, il contenait un message pour vous aider :

Can't located Apache/Session/MySQL.pm @ INC....

J'ai installé 'Apache/Session/MySQL.pm ‘ via CPAN comme ci-dessous

cpan > install Apache::Session::MySQL

Page Web RT chargée sans style/CSS

Après avoir installé tous les modules Perl nécessaires, j'ai redémarré le httpd serveur et essayé d'accéder à la page Web de RT. La page chargée, mais sans style comme ci-dessous :

Pour résoudre le problème, vous devez installer un module Perl appelé 'CSS:Squish

cpan > install CSS:Squish

C'est ça. J'ai pu charger la page Web RT avec succès. J'espère que ces informations pourront aider quelqu'un.

Vous pouvez également lire :Erreur RT  : Mailgate undefined server error.


Linux
  1. Dépannage de l'erreur "Aucun support de démarrage trouvé" dans VirtualBox

  2. Erreur LibClamAV :mpool_malloc() :Tentative d'allocation de 8388608 octets

  3. RT:Request Tracker – Erreur :rt-mailgate – Erreur de serveur non définie – 500 Impossible de se connecter ou de vérifier le certificat [Résolu]

  4. Erreur d'installation de PHP5-Curl aucun candidat à l'installation

  5. Erreur lors de l'utilisation d'une version plus récente de la glibc

Erreur Virtualbox - Échec du chargement du module ring-0 VBoxEhciR0.r0

Correction de l'erreur Nginx :413 Entité de requête trop grande

Dépannage de l'erreur "Certificat TLS inacceptable" sous Linux

Dépannage de l'erreur "Aucun support de démarrage trouvé" dans VirtualBox

Dépannage de l'erreur "Bash :Commande introuvable" sous Linux

erreur de mise à jour apt avec la version cosmique d'ubuntu 18.10