Excluir la actualización del servidor Apache en un script de bash usando apt

A veces, al actualizar todo el sistema, puede aparecer un error relacionado con server name indication (sni) en apache. Este error puede ocurrir cuando se tienen múltiples virtual hosts configurados en el mismo ip y puerto, y el cliente no proporciona la información sni correcta. Para evitar este problema, puedes excluir la actualización de apache en tu script de actualización de sistema.

Veamos cómo excluir la actualización de apache en un script de bash utilizando el comando apt. Esto es útil si deseas actualizar todos los paquetes de tu sistema, pero quieres evitar que apache se actualice debido a posibles problemas de compatibilidad o configuración.

Paso 1: poner apache en "hold"

Primero, debes poner el paquete apache2 en "hold" para evitar que se actualice. Esto se hace utilizando el comando apt-mark.

sudo apt-mark hold apache2

Paso 2: crear el script de actualización

A continuación, crea un script de bash que actualice todos los paquetes excepto apache2. Aquí tienes un ejemplo de cómo hacerlo:

#!/bin/bash
# poner apache2 en hold
sudo apt-mark hold apache2
# actualizar todos los paquetes excepto apache2
sudo apt update
sudo apt upgrade --allow-change-held-packages
# opcional: liberar apache2 después de la actualización. Nosotros lo liberamos
sudo apt-mark unhold apache2

Paso 3: guarda el script en un archivo, por ejemplo, actualizar_sin_apache.sh, y dale permisos de ejecución:

chmod +x actualizar_sin_apache.sh

Luego, ejecuta el script:

./actualizar_sin_apache.sh

Paso 4: verificar que apache esté en "hold"

Después de ejecutar el script, puedes verificar que apache2 esté en "hold" con el siguiente comando (en nuestro caso no es necesario, ya que lo hemos liberado):

apt-mark showhold

Esto debería mostrar apache2 en la lista de paquetes en "hold".

Paso 5: liberar apache después de la actualización (opcional) en el caso de que no lo hayas hecho. De nuevo, en nuestro caso, no es necesario, ya que lo hemos liberado en el script.

Si deseas liberar apache2 después de la actualización para que pueda ser actualizado en el futuro, puedes usar el siguiente comando:

sudo apt-mark unhold apache2

Siguiendo estos pasos, puedes excluir la actualización de apache en un script de bash utilizando apt. Esto te permite mantener tu sistema actualizado sin afectar la configuración de apache, lo cual es especialmente útil en entornos de producción donde la estabilidad del servidor web es crucial.