Hay dos tipos de módulos (básicamente): los que vienen con la propia distribución de Perl (los CORE) y los que añades a mayores.
Cuando actualizas un sistema Linux, también estás actualizando el Perl y los módulos CORE. Como regla general, los programas que dependen de ellos seguirán funcionando, salvo alguno que requiera alguna funcionalidad que alguno de los módulos haya decidido eliminar. O que se haya eliminado de la lista de módulos CORE, por ser un módulo que ha sido superado por otros. En esos casos, se modifica el programa y listo. Es algo que tenemos que hacer siempre, sin importar el lenguaje informático o el sistema operativo: si las condiciones de funcionamiento cambian, pues tenemos que ajustar el programa a esas nuevas condiciones.
Los otros módulos, "pueden" seguir funcionando con sus versiones anteriores. Digo que "pueden" porque:
* algunos pueden depender de módulos CORE, y solo de ciertas versiones de esos módulos. Así que si actualizamos los CORE, es posible que alguno de los módulos extra, deje de funcionar
* otros módulos están compilados con librerías estáticas escritas en C o C++, y no son compatibles a nivel binario con el ejecutable de Perl... y cosas así... no te queda más solución que actualizar esos módulos.
Como regla general, siempre es bueno actualizar los módulos, pues sabes que tendrán más
features y más errores corregidos. Lo malo es que vendrán con errores nuevos
Hay casos extremos, como el que me pasó en el 2007: allí usamos el módulo Date::Set para hacer cálculos de meses cotizados por los funcionarios. De un problema que tenía muchas líneas con muchos bucles y condiciones, se resolvió en un par de días con la simple aritmética de conjuntos que dábamos en clase de matemáticas en primaria.
Bueno, pues el caso es que al año siguiente, ese módulo desapareció, literalmente, de CPAN.
Su autor, Flávio Soibelmann Glock, decidió que era mejor que su módulo perteneciese al proyecto DateTime en Perl, lo cual es lógico, porque de esta manera, todo el procesamiento de fechas está centralizado en un único sitio. Lo malo fue que su solución fue muy drástica: borrar el módulo de CPAN. Lo que debería haber hecho es marcarlo como
deprecated e indicar en la documentación que se debería usar, a partir de entonces el nuevo módulo DateTime::Set.
Esto es un ejemplo de problema muy gordo: nos obliga a cambiar los programas, y además de manera muy profunda.
Una solución sería la de no actualizar el módulo, y seguir usando la versión anterior. En CPAN, los autores suelen dejar unas cuantas versiones anteriores de sus módulos. En el caso del módulo Date::Set, que desapareció, basta con visitar
BACKPAN y
encontrarlo. Esto es algo que no todos los lenguajes informáticos tienen: un repositorio con toda la historia y todas las versiones anteriores de los módulos.
La otra solución... poner el módulo nuevo y reescribir el programa.
Lo que te he contado es un caso extremo. En la inmensa mayoría de las situaciones, te vale con actualizar la lista de módulos instalados. Y este es un tema recurrente en
Google (buscar por upgrade perl cpan).
El procedimiento correcto es actualizar módulo por módulo, sacándolo del sistema de paquetería de software de la distribución del sistema operativo, o instalándolo con el comando
cpan. Así, nos aseguramos de que los módulos que requieren una compilación lo están con las librerías propias de nuestro sistema operativo. O, con el comando
cpan, nos estamos bajando la última versión.
El procedimiento más cómodo es usar el comando
cpan. Entras en el sistema viejo y ejecutas el comando
cpan. Dentro de él, ejecutas el comando
autobundle, que generará un módulo con la lista de todos los módulos Perl instalados en el sistema.
Luego te vas al nuevo sistema, llevas ese módulo, y le dices al comando
cpan que lo instale.
cpan se encargará de bajar, descomprimir, compilar, montar, documentar e instalar todos los módulos.
Sí que es lo más cómodo, pero no es perfecto: es muy posible que tengas que intentarlo varias veces. Y que algunos módulos necesiten ser compilados con librerías que no tengas instaladas. Lo mejor: intenta siempre instalar los módulos Perl que vengan con tu nueva versión del sistema operativo. Luego, lanza
cpan con el módulo creado con el
autobundle.
cpan se encargará de bajar solo los módulos que aún no estén instalados.
Tienes más detalles
aquí (en inglés) (busca por
autobundle). En Google
tienes muchos más enlaces sobre este tema.