PERL : sa-update

Bonjour

après une mise a jour perl j’ai un problème sur la commande sa-update

Perl API version v5.18.0 of Encode does not match v5.20.0 at /usr/local/lib/perl5/5.20.1/XSLoader.pm line 92. Compilation failed in require at /usr/local/lib/perl5/5.20.1/Pod/Text.pm line 32. BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.20.1/Pod/Text.pm line 32. Compilation failed in require at (eval 6) line 2. BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.18.0/Pod/Usage.pm line 29. Compilation failed in require at /usr/local/bin/sa-update line 59. BEGIN failed--compilation aborted at /usr/local/bin/sa-update line 59.
je essayer de réinstaller perl ainsi que spamassassin mais toujours la meme erreur
une petite idée serais la bien venus
merci

Salut hashut !

[moderation]Les règles d’usage du forum (que tu peux relire ici) demandent que le titre de chaque demande d’aide soit préfixé par le domaine sur lequel elle porte en majuscules, pour faciliter le repérage des sujets pour ceux qui apportent leur aide.[/moderation]

Par exemple dans ton cas : [mono]PERL : sa-update[/mono].

[quote=“hashut”]Bonjour

après une mise a jour perl j’ai un problème sur la commande sa-update

Perl API version v5.18.0 of Encode does not match v5.20.0 at /usr/local/lib/perl5/5.20.1/XSLoader.pm line 92. Compilation failed in require at /usr/local/lib/perl5/5.20.1/Pod/Text.pm line 32. BEGIN failed--compilation aborted at /usr/local/lib/perl5/5.20.1/Pod/Text.pm line 32. Compilation failed in require at (eval 6) line 2. BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.18.0/Pod/Usage.pm line 29. Compilation failed in require at /usr/local/bin/sa-update line 59. BEGIN failed--compilation aborted at /usr/local/bin/sa-update line 59.
je essayer de réinstaller perl ainsi que spamassassin mais toujours la meme erreur
une petite idée serais la bien venus
merci[/quote]

Bonjour,

Dis nous ce que retourne :

apt-cache policy perl; ls -l /usr/lib/perl

J’ai l’impression que tu as installé deux versions de perl, l’officielle et une dans /usr/local, ou je me trompe ?

je dirais meme plusieurs version installe

[quote]perl -v

This is perl 5, version 20, subversion 1 (v5.20.1) built for x86_64-linux

Copyright 1987-2014, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using “man perl” or “perldoc perl”. If you have access to the
Internet, point your browser at perl.org/, the Perl Home Page.[/quote]

Ok.

Bon, le constat il est simple :

Perl API version v5.18.0 of Encode does not match v5.20.0 at /usr/local/lib/perl5/5.20.1/XSLoader.pm line 92.
Le script appelle perl 5.20.1, surement via ‘#!/usr/bin/env perl’, ce que d’ailleurs tu me confirmes dans ton précédent message. Il se substitue à ce que l’on appelle “vendor_perl” (perl fourni par la distribution). Seulement :

BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/5.18.0/Pod/Usage.pm line 29.
Compilation failed in require at /usr/local/bin/sa-update line 59.
BEGIN failed--compilation aborted at /usr/local/bin/sa-update line 59.

sa-update lui cherche dans “site_perl” alias version 5.18.

Je sais pas comment t’en es arrivé là, mais apparemment t’appelles perl 5.20.1 en utilisant la librairie de perl 5.18. Ca peut pas marcher avec XSLoader qui a besoin de la version exacte (avec une petite marge de tolérance).

Fait dejà le tri, en supprimant les versions de perl dont tu n’as pas besoin, et utilise si possible les paquets fournis par Debian. Si tu as besoin d’une version plus recente de spamassassin, passe à wheezy. (Le support à long terme pour squeeze est assez limité).

Comment je peut faire pour desinstaller la version 5.20.1

La question c’est comment tu l’as installé… et ça je peux pas le savoir à ta place.

Si t’as installé un .deb à la barbare, retrouve le nom de paquet dans ce tas :

$ dpkg -l perl\* | grep ^ii

Et supprime celui qui correspond à perl 5.20.1.

Si tu as installé à partir des sources, c’est mort pour une desintall propre. Tu peux plus ou moins résoudre le problème, en supprimant les fichiers qui correspondent, mais tu le fais à tes propres risques, un perl cassé est souvent synonyme de pas de boot possible, t’es prevenu ! :

Regarde avant:

$ which perl
/usr/local/bin/perl

NB: s’il t’affiche [mono]/usr/bin/perl[/mono] la je ne sais pas quoi faire pour toi, oublies tout. Si c’est ok, ensuite tu lances :

$ perl -e '/5.20.1/ && print $_."\n" for @INC'

Pour chaque ligne qui va s’afficher, tu effaces le repertoire correspondant en root. Enfin, tu vires l’executable :

# rm -rf /usr/local/bin/perl

Après tu testes :

$ perl -v 

Merci

j’ai fait comme tu as dit supprimer les dossier et l’exécutable
comme j’avais un backup du dossier /usr/ je restaure /usr/local/bin/perl

maintenant tout est OK

[code]perl -v
This is perl 5, version 18, subversion 0 (v5.18.0) built for x86_64-linux

Copyright 1987-2013, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using “man perl” or “perldoc perl”. If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.[/code]

Merci pour l’aide rapide et efficasse comme toujours ici