Actualización de versión

Consideraciones

La actualización a Zentyal 8.1 se debe realizar desde un Zentyal 8.0 totalmente actualizado. Las versiones anteriores a 8.0 se deberán actualizar progresivamente. La sucesión completa de actualizaciones desde la versión Zentyal 3.2 es la siguiente:

3.2 -> 4.x -> 5.x -> 6.0 -> 6.1 -> 6.2 -> 7.0 -> 7.1 -> 8.0 -> 8.1

Advertencia

Estas instrucciones son válidas para actualizar la versión 8.0 de la Edición Development a la version 8.1 de la Edición Development. Para ediciones comerciales, debemos ponernos en contacto con el Equipo de Soporte. Si no tenemos acceso al Portal de Soporte [1] debemos contactar al Equipo de Zentyal [2] para solicitar acceso.

Antes de comenzar con la actualización, recomendamos encarecidamente realizar una serie de comprobaciones previas para tratar de minimizar posibles incidencias. Dichas comprobaciones se detallan en la siguiente sección.

Adicionalmente, es de vital importancia disponer de un backup del servidor antes de proceder con la actualización. La actualización es un proceso complejo y puede fallar dejando el sistema dañado o, incluso, irrecuperable.

Advertencia

Recordad que una backup de configuración no es una copia de seguridad completa tal y como se detalla aquí [3].

El script de actualización ya no pertenece al paquete zentyal-core, sino que ahora se encuentra en el repositorio [4] bajo el directorio extra/zentyal-upgrades/.

El módulo de webmail es eliminado temporalmente durante la actualización de Ubuntu, y posteriormente instalado de nuevo tras la actualización de Zentyal, en la post-configuración. A modo de precaución, se genera una copia de seguridad en /var/lib/zentyal/backup-sogo-upgrade-81.sql. Es importante tener este comportamiento en cuenta por si durante la actualización de Ubuntu se produjera algún error, ya que el módulo estará desinstalado.

[1]Portal de soporte: https://zentyal.atlassian.net/servicedesk/customer/portal/4/
[2]Contacto: https://zentyal.com/es/contactanos/
[3]Backup de configuración: https://doc.zentyal.org/es/backup-conf.html
[4]Ruta al script de actualización: https://github.com/zentyal/zentyal/blob/master/extra/zentyal-upgrades/upgrade-8.0-to-8.1.sh

Comprobaciones previas

A continuación se indican las acciones a comprobar previas a la actualización.

Versión del paquete zentyal-core

Para poder actualizar el servidor Zentyal a la versión 8.1 necesitaremos tener instalada la versión 8.0.9 o superior del paquete zentyal-core:

dpkg -l zentyal-core

Errores en los logs

Una de las tareas más importantes es confirmar que en los archivos de log más críticos del sistema no haya errores. Los archivos que deberemos revisar como mínimo serán:

  • /var/log/zentyal/zentyal.log
  • /var/log/syslog

Espacio en disco

Al ser una actualizar major, el tamaño en disco necesario mínimo es de 3 GB para la partición / y 250 MB para la partición /boot

df -h

Acceso a Internet

Para poder descargar los paquetes necesarios para realizar la actualización es necesario que el servidor tenga acceso a Internet:

ping -c5 google.com

Acceso a los repositorios

Otra de las tareas críticas a revisar es el acceso a los repositorios de Ubuntu y Zentyal. Para ello, bastará con ejecutar el siguiente comando para confirmar que no hay errores:

sudo apt update

Paquetes disponibles

Para revisar si el sistema operativo está actualizado, tendremos que ejecutar los siguientes comandos:

sudo apt update
sudo apt list --upgradable

Paquetes rotos

Es imperativo que revisemos que no haya ningún paquete roto, de lo contrario, la actualización nos fallará.

dpkg -l | egrep -v '^(ii|rc)'

En caso de haber paquetes en mal estado, en la sección de Troubleshooting [5] se explica como tratar de repararlos.

[5]Troubleshooting: https://doc.zentyal.org/es/upgrade.html#id15

Errores en las bases de datos

Otra tarea importante a revisar si hay algún error en las bases de datos alojadas en MySQL que usa Zentyal para sus módulos:

mysqlcheck -u root -p$(sudo cat /var/lib/zentyal/conf/zentyal-mysql.passwd) \
  --all-databases 2> /dev/null

En caso de usar el módulo controlador de dominio [6], también es altamente recomendable confirmar su estado:

sudo samba-tool dbcheck --cross-ncs

En caso de detectar un error en esta última base de datos, tendremos que seguir [7] este enlace.

[6]Controlador de dominio: https://doc.zentyal.org/es/directory.html
[7]Documentación sobre la base de datos de Samba: https://wiki.samba.org/index.php/Dbcheck

Informe del sistema

Otra acción importante a revisar es generar un informe del sistema [8] y analizarlo detenidamente para confirmar que el sistema se encuentra en un estado estable. En caso de detectar algún error, habrá que tratar de solucionarlo antes de proceder con la actualización.

[8]Informe del sistema: https://doc.zentyal.org/es/smart-admin.html#informe-del-estado-del-sistema

Actualización

Una vez que hayamos revisado el sistema y confirmado su estabilidad, podremos proceder a su actualización. Tenemos dos formas de hacerlo.

UI

Desde el botón disponible en el Dashboard de la Interfaz de Administración de Zentyal.

Botón de la actualización

Botón de la actualización

Advertencia

Si el servidor no tiene conexión a Internet, no se mostrará el botón.

Una vez iniciado el upgrade, podremos ver el proceso en una ventana modal y en el archivo de log /var/log/zentyal/upgrade.log.

Actualización en progreso

Actualización en progreso

Cuando la actualización haya terminado, deberíamos de ver un mensaje de éxito o fracaso.

Actualización terminada con éxito

Actualización terminada con éxito

Advertencia

Si no obtenemos ninguno de esos mensajes, es posible que la sesión del navegador web haya expirado, por lo que tendremos que revisar el archivo de log /var/log/zentyal/upgrade.log. Si la actualización ha terminado, simplemente tendremos que refrescar la página.

CLI

Desde la línea de comandos (opción recomendable):

wget https://raw.githubusercontent.com/zentyal/zentyal/refs/heads/master/extra/zentyal-upgrades/upgrade-8.0-to-8.1.sh

# Modo debug:
sudo bash -x upgrade-8.0-to-8.1.sh

# Sin modo debug
sudo bash upgrade-8.0-to-8.1.sh

Advertencia

La terminal desde donde se esté ejecutando el comando no podrá cerrarse hasta que el proceso haya terminado.

Truco

Una buena práctica es almacenar en un archivo de texto el output generado por el script por si fuera necesario analizarlo con detenimiento.

Comprobaciones posteriores

Una vez que la actualización haya terminado, tendremos que revisar lo siguiente antes de reiniciar el servidor:

1. La versión de Ubuntu es 24.04:

lsb_release -a

2. Los paquetes de Zentyal se han actualizado a 8.1:

dpkg -l | egrep 'zen(tyal|buntu)-'

3. No hay paquetes rotos:

dpkg -l | egrep -v '^(ii|rc)'

4. El servicio apparmor está habilitado y activo:

systemctl is-enabled apparmor
systemctl is-active apparmor

5. Si todo lo anterior es correcto, podremos proceder a reiniciar el servidor.

6. Una vez que haya iniciado el servidor, debemos analizar los siguientes archivos de logs para confirmar que no se han producido errores:

  • /var/log/zentyal/zentyal.log
  • /var/log/syslog

7. Finalmente comprobaremos el funcionamiento de cada módulo para cerciorarnos de la estabilidad del mismo tras la actualización.

Troubleshooting

En caso de que la actualización haya fallado, deberemos de identificar el punto en el que se encuentra el servidor antes de considerar restaurar la copia de seguridad realizada antes de la actualización.

Estado actual del servidor

Para confirmar el estado del servidor tras el fallo durante la actualización, primero deberemos revisar el archivo de log /var/log/zentyal/upgrade.log. Después, podremos hacernos las siguientes preguntas para determinar si tenemos que restaurar una copia de seguridad.

1. ¿La versión de Ubuntu sigue siendo 22.04 y los paquetes de Zentyal son 8.0?
Si la respuesta es afirmativa y no hay paquetes rotos, no será necesario restaurar la copia de seguridad.
2. ¿Se actualizó la versión de Ubuntu a una diferente de 24.04?
Si la respuesta es afirmativa, habrá que restaurar una copia de seguridad, ya que Zentyal 8.1 se basa en Ubuntu 24.04.
3. ¿Se llegó a actualizar algún paquete de Zentyal?
Si ningún paquete llegó a actualizarse pero Ubuntu se se actualizó a 24.04, podremos analizar el archivo de log /var/log/zentyal/upgrade.log y ejecutar el script de actualización de nuevo para tratar de actualizar Zentyal.
4. ¿Se actualizaron los paquetes de Zentyal a una versión distinta de 8.1?
En caso afirmativo, habrá que restaurar la copia de seguridad.
5. ¿Hay paquetes rotos?
Si Ubuntu y Zentyal se actualizaron pero hay paquetes rotos, podremos tratar de solucionarlos sin necesidad de restaurar una copia de seguridad.

Entorno gráfico

Si tras reiniciar el servidor vemos la siguiente pantalla al iniciarse el sistema:

Pantalla en blanco

Pantalla en blanco

Tendremos que ejecutar los siguientes comandos para solventarlo:

sudo /usr/share/zenbuntu/x11-setup
sudo systemctl restart zentyal.lxdm

Truco

Para acceder a la línea de comandos tendremos que hacerlo vía SSH o pulsando Ctrl + Alt + F1 en el servidor.

Dependencia systemd-resolved

El paquete systemd-resolved es una dependencia de Zentyal 8.1 necesaria en el módulo de red, por lo que si no se ha instalado correctamente durante la actualización, habrá errores como el siguiente:

ERROR> Service.pm:43 EBox::Service::manage - No such daemon: systemd-resolved at No such daemon: systemd-resolved at /usr/share/perl5/EBox/Service.pm line 43
EBox::Service::manage('systemd-resolved', 'stop') called at /usr/share/perl5/EBox/Module/Service.pm line 746

Para solucionarlo, tendremos que instalar el paquete:

sudo apt install systemd-resolved

Y después reiniciar el módulo de red y en caso de tener habilitado el DNS, éste también deberá reiniciarse.

sudo zs network restart
sudo zs dns restart

Sogo unavailable

Si al tratar de usar el módulo de Sogo obtenemos el siguiente error:

Servicio no disponible

Servicio no disponible

Debemos revisar el estado del servicio:

systemctl status sogo

Si vemos el siguiente error:

libGDLAccess.so.4.9: cannot open shared object file: No such file or directory

Debemos reinstalar los paquetes de Sogo de la siguiente manera:

sudo systemctl stop sogo
SOGO_PKGS=$(dpkg -l | egrep '^ii.*(sope|sogo)' | egrep -v 'zentyal' | awk '{print $2}')
sudo apt install --reinstall -y $SOGO_PKGS
sudo systemctl restart sogo

Truco

Durante la actualización se realiza una copia de seguridad de la base de datos, la cual la podemos encontrar en en /var/lib/zentyal/backup-sogo-upgrade-81.sql

Paquetes rotos

Si tenemos paquetes rotos, podremos tratar de solucionarlos con los siguientes comandos.

Para solucionar todos los paquetes a la vez:

sudo dpkg --configure --force-confdef -a

Advertencia

Posiblemente sea necesario ejecutar el comando varias veces.

En caso de que no haya funcionado, habrá que hacerlo de paquete en paquete:

sudo dpkg --configure --force-confdef nombre_del_paquete

Base de datos MySQL

Si tenemos errores en el archivo de log /var/log/zentyal/zentyal.log con el servicio mysql como el siguiente:

2024/04/26 11:04:02 ERROR> MyDBEngine.pm:200 EBox::MyDBEngine::_connect
Connection DB Error: Can't connect to local MySQL server through socket
'/var/run/mysqld/mysqld.sock' (2)
at Connection DB Error: Can't connect to local MySQL server through socket
'/var/run/mysqld/mysqld.sock' (2)
at /usr/share/perl5/EBox/MyDBEngine.pm line 200

Y el servicio está parado lo iniciamos:

sudo systemctl status mysql
sudo systemctl restart mysql