Downgrade Perl

perl-hostingBueno el otro dia , para poner a caminar un Zimbra 7.2  en SLES11 SP3  tuve que hacer un downgrade de versión de Perl, para los que nunca han echo un downgdrade les puedo decir que es mejor que no la hagan, son un  problema por librerías – dependencias – compiladores etc etc etc. Bueno el caso es que les voy a dar una receta para hacer el downgrade de Perl de la versión v5.10.0 – v5.8.8:

Lo primero es conseguir el código fuente de la versión vieja esta por aquí:

wget http://www.cpan.org/src/5.0/perl-5.8.8.tar.gz
Debemos  aplicarle un parche, bajatelo:
wget ftp://ftp.cpan.org/pub/CPAN/authors/id/N/NW/NWCLARK/regexp-5.8.8.patch
Descomprime el Perl
cd perl-5.8.8
patch -p1 < ../regexp-5.8.8.patch
rm -f {config,Policy}.sh

Nota que estamos dentro del directorio de Perl y el parche esta un directorio atrás. Luego de eso vamos con el tema del interprete, en SUSE se usa BASH, pero en ubuntu por ejemplo usas DASH entonces dependiendo del caso vas a tener que hacer algo como esto:

# ln -s /bin/bash /bin/sh

Ok, listo entonces compilamos con soporte multi-hilo y tirando el resultado en /opt  no queremos sobrescribir el Perl que viene con el OS:

./Configure -Dprefix=/opt -Dusethreads -Dmultiplicity -des

Listo se configuro, entonces ahora hacemos “make” pero da este error:

No rule to make target `<command-line>’, needed by `miniperlmain.o’.

Un tema del compilador GCC y un filtro, lo acomodamos así:

perl -i~ -nle ‘print unless /<command-line>/’ makefile x2p/makefile 

Vuelve a ejecutar el “make”. Entonces mientras esta construyendo los objetos (.o) suelta este error:

SysV.xs:7:25: error: asm/page.h: No such file or directory

Lo que tenemos que hacer aquí es darle el archivo que esta pidiendo, ese archivo esta en las cabeceras del Kernel si no las tienes las instalas, y luego:

ln -s /usr/src/linux-3.0.76-0.11/arch/x86/include/asm/page.h /usr/include/asm/page.h

Entonces ahora, si puedes correr el “make”, no debería presentarse el error. Luego si quieres puedes hacer “make test” y para finalizar “make install”. Se debe generar la carpeta con los binarios en el lugar a donde la apuntaste en la linea del “configure”. Y luego de eso para utilizar la versión antigua de forma global puedes hacer dos cosas:

  • Cambias el interprete en el script de Perl que estas corriendo.
  • Creas un alias en el “.bashrc” del usuario que corre el programa en perl.

Y eso es todo espero les sirva. Nos vemos.

Leave a Comment