Este artículo demuestra cómo realizar una actualización de versión de una instalación de OTRS Community Edition paso a paso.

El proceso de actualización o migración de versión de OTRS está bien documentado en el manual del administrador de OTRS. Sin embargo, este tutorial se ajusta a las particularidades de la instalación demostrada anteriormente en el artículo Instalar OTRS Community Edition en Debian y derivados.

He instalado OTRS Community Edition versión 6.0.22 y me dispongo a actualizar a la versión 6.0.28. Para comenzar el proceso de actualización, detener todos los servicios relacionados:

root@otrs:~# service apache2 stop
[ ok ] Stopping Apache httpd web server: apache2.
root@otrs:~# service otrs stop

Manage the OTRS daemon process.

Daemon stopped

Antes de continuar es necesario hacer copias de seguridad de los archivos y la base de datos de OTRS. En mi caso no hubo uso del sistema en el transcurso del día y esto se limito a verificar las copias de seguridad de la noche anterior:

root@otrs:/# ls -l /backups/usr_local_otrs/var/log
total 60
drwxrws--- 2 otrs www-data 36 jun  2 19:41 Daemon
root@otrs:/# ls -l /backups/bases_datos/
total 728
-rw-r--r-- 1 root root 742131 jun  2 20:25 pg_otrs--otrs.sql.bz2

Descargar la última versión comunitaria disponible desde el sitio de descargas: Download ((OTRS)) Community Edition.

root@otrs:~# mkdir -p /usr/local/src/otrs/
root@otrs:~# cd /usr/local/src/otrs/
root@otrs:/usr/local/src/otrs# wget http://ftp.otrs.org/pub/otrs/otrs-6.0.28.tar.gz

Extraer la nueva versión:

root@otrs:/usr/local/src/otrs# cd /usr/local/
root@otrs:/usr/local# tar axf /usr/local/src/otrs/otrs-6.0.28.tar.gz

Restaurar el archivo de configuración desde la versión previa:

root@otrs:/usr/local# cp -a otrs-6.0.22/Kernel/Config.pm otrs-6.0.28/Kernel/

Si se ha configurado OTRS para que guarde los datos de artículos en el sistema de archivos, se debe restaurar el directorio var/article/:

root@otrs:/usr/local# cp -a otrs-6.0.22/var/article/* otrs-6.0.28/var/article/

Si se han instalado paquetes adicionales con estadísticas por defecto, estas deben ser restauradas:

root@otrs:/usr/local# cp -a otrs-6.0.22/var/stats/*.installed otrs-6.0.28/var/stats/

Setear permisos:

root@otrs:/usr/local# cd otrs-6.0.28/
root@otrs:/usr/local/otrs-6.0.28# bin/otrs.SetPermissions.pl 
Setting permissions on /usr/local/otrs-6.0.28

Luego es posible correr el script de actualización de la base de datos:

root@otrs:/usr/local/otrs-6.0.28# scripts/DBUpdate-to-6.pl

Este script verifica además las dependencias necesarias. En caso de faltar alguna dependencia, errores del tipo Can't locate Moo.pm in @INC (you may need to install the Moo module), instalar el módulo de Perl faltante y volver a ejecutar el script:

root@otrs:/usr/local/otrs-6.0.28# apt-get install libmoo-perl

Este script debe ser ejecutado con el usuario de OTRS, no es posible ejecutarlo como root:

root@otrs:/usr/local/otrs-6.0.28# scripts/DBUpdate-to-6.pl
[Wed Jun  3 11:30:49 2020] DBUpdate-to-6.pl: 
[Wed Jun  3 11:30:49 2020] DBUpdate-to-6.pl: Cannot run this program as root.
[Wed Jun  3 11:30:49 2020] DBUpdate-to-6.pl: Please run it as the 'otrs' user or with the help of su:
[Wed Jun  3 11:30:49 2020] DBUpdate-to-6.pl:     su -c "scripts/DBUpdate-to-6.pl" -s /bin/bash otrs

Además, debe asegurarse que las rutas a la nueva versión sean correctas (en caso de usar un link simbólico, será necesario que apunte a la nueva versión):

root@otrs:/usr/local/otrs-6.0.28# cd ..
root@otrs:/usr/local# rm otrs
root@otrs:/usr/local# ln -s otrs-6.0.28/ otrs

Esto es necesario ya que se está utilizando el archivo de configuración de la versión previa.

Ahora sí es posible pasar al usuario otrs y ejecutar el script de migración:

root@otrs:/usr/local# su - otrs
otrs@otrs:~$ cd /usr/local/otrs-6.0.28/
otrs@otrs:/usr/local/otrs-6.0.28$ scripts/DBUpdate-to-6.pl

Ejemplo de salida del script:

otrs@otrs:/usr/local/otrs-6.0.28$ scripts/DBUpdate-to-6.pl

 Migration started ... 

 Checking requirements ... 

    Requirement check for: Check framework version ...
    Requirement check for: Check required Perl version ...
    Requirement check for: Check required database version ...
    Requirement check for: Check database charset ...
    Requirement check for: Check required Perl modules ...
    Requirement check for: Check if database has been backed up ...

        Did you backup the database? [Y]es/[N]o: y

    Requirement check for: Upgrade database structure ...
    Requirement check for: Migrating time zone configuration ...
    Requirement check for: Update calendar appointment future tasks ...
    Requirement check for: Migrate GenericAgent jobs configuration ...
    Requirement check for: Migrate TicketAppointment rules configuration ...
    Requirement check for: Create entries in new article table ...
    Requirement check for: Migrate ArticleType in ProcessManagement Data ...
    Requirement check for: Migrate ArticleType in PostMaster filters ...

 Executing tasks ... 

    Step 1 of 44: Check framework version ...
    Step 2 of 44: Check required Perl version ...
    Step 3 of 44: Check required database version ...
    Step 4 of 44: Check database charset ...
    Step 5 of 44: Check required Perl modules ...
    Step 6 of 44: Check installed CPAN modules for known vulnerabilities ...
    Step 7 of 44: Check if database has been backed up ...
    Step 8 of 44: Upgrade database structure ...
    Step 9 of 44: Migrate configuration ...
    Step 10 of 44: Refresh configuration cache after migration of OTRS 5 settings ...
    Step 11 of 44: Migrating ticket storage configuration ...
    Step 12 of 44: Migrating article search index configuration ...
    Step 13 of 44: Migrating ticket zoom customer information widget configuration ...
    Step 14 of 44: Drop deprecated table gi_object_lock_state ...
    Step 15 of 44: Migrate PossibleNextActions setting ...
    Step 16 of 44: Migrate ZoomExpand setting ...
    Step 17 of 44: Migrating time zone configuration ...
    Step 18 of 44: Migrating modified settings ...
    Step 19 of 44: Create appointment calendar tables ...
    Step 20 of 44: Create ticket number counter tables ...
    Step 21 of 44: Update calendar appointment future tasks ...
    Step 22 of 44: Add basic appointment notification for reminders ...
    Step 23 of 44: Create Form Draft tables ...
    Step 24 of 44: Clean and drop group_user permission_value column ...
    Step 25 of 44: Migrate GenericAgent jobs configuration ...
    Step 26 of 44: Migrate TicketAppointment rules configuration ...
    Step 27 of 44: Migrate Merged Ticket history name values ...
    Step 28 of 44: Migrate ticket statistics ...
    Step 29 of 44: Migrate ticket notifications ...
    Step 30 of 44: Create entries in new article table ...
    Step 31 of 44: Post changes on article related tables ...
    Step 32 of 44: Migrate ArticleType in ProcessManagement Data ...
    Step 33 of 44: Migrate ArticleType in PostMaster filters ...
    Step 34 of 44: Migrate chat articles ...
    Step 35 of 44: Initialize default cron jobs ...
    Copying /opt/otrs/var/cron/aaa_base.dist to /opt/otrs/var/cron/aaa_base...
    done.
    Copying /opt/otrs/var/cron/otrs_daemon.dist to /opt/otrs/var/cron/otrs_daemon...
    done.
    Step 36 of 44: Migrate web service configuration ...
    Step 37 of 44: Migrate package repository configuration ...
    Step 38 of 44: Migrate ticket search profiles ...
    Step 39 of 44: Uninstall Merged Feature Add-Ons ...
    Step 40 of 44: Clean up the cache ...
    Step 41 of 44: Refresh configuration cache another time ...
    Step 42 of 44: Deploy ACLs ...
    Step 43 of 44: Deploy processes ...
    Step 44 of 44: Check invalid settings ...



 Migration completed! 

Al finalizar la actualización debe presentarse el mensaje: "Migration completed!". No continuar la actualización si la migración de versión de base de datos no sucede con éxito o si surgen errores. De lo contrario se puede provocar la pérdida de datos.

El último paso en la actualización de OTRS consiste en actualizar los paquetes (si es que se ha instalado alguno):

otrs@otrs:/usr/local/otrs-6.0.28$ bin/otrs.Console.pl Admin::Package::UpgradeAll

There are no installed packages

Done.

En este caso no hay paquetes instalados.

otrs@otrs:~$ exit
logout

Finalmente, reiniciar los servicios:

root@otrs:/usr/local# service apache2 start
root@otrs:/usr/local# service otrs start

Acceder al sitio y verificar que todo sea correcto. Una vez verificado es posible eliminar los archivos de la versión anterior (o moverlos a un directorio de históricos):

root@otrs:/usr/local# rm -fr otrs-6.0.22

Referencias

Compartí este artículo