# Cómo eliminar completamente Apache2 en Linux cuando la instalación está corrupta

- Link: https://binariocero.com/linux/como-eliminar-completamente-apache2-en-linux-cuando-la-instalacion-esta-corrupta
- Published: 2025-08-15T07:42:09+02:00
- Author: Juan José Fernández Durán

![Loading](https://binariocero.com/wp-content/plugins/page-views-count/ajax-loader-
2x.gif)

En algunos sistemas Debian o derivados (como Ubuntu), al instalar o actualizar Apache2
puede aparecer el error:

    ```wp-block-code
    ERROR: Conf javascript-common does not exist!
    dpkg: error processing package apache2 (--configure):
     installed apache2 package post-installation script subprocess returned error exit status 1
    ```

Este problema se produce porque el script **post-installation** de `apache2` intenta
habilitar una configuración (`a2enconf javascript-common`) que no existe en el sistema.
Como resultado, `dpkg` no puede completar la configuración del paquete, dejando 
a Apache en un estado roto (_broken package_).

Este artículo explica cómo eliminar completamente Apache2 en este escenario, evitando
conflictos y liberando el puerto 80.

### 1. **Entendiendo el problema**

Cuando un paquete queda “a medias” en Debian/Ubuntu:

 * **`dpkg`** no puede continuar con otras instalaciones o desinstalaciones hasta
   que se configure correctamente.
 * **`apt-get remove`** o **`apt-get purge`** fallan porque dependen de que `dpkg`
   complete la configuración.
 * El servicio puede seguir ocupando el puerto 80, bloqueando a otros servidores
   web como Nginx.

La solución pasa por **desbloquear `dpkg`**, **parar Apache** y **purgar completamente
sus paquetes y configuraciones**.

### 2. **Creando una configuración ficticia para desbloquear `dpkg`**

El script que falla busca el archivo:

    ```wp-block-code
    /etc/apache2/conf-available/javascript-common.conf
    ```

Si no existe, genera el error. Podemos crear un archivo “dummy” para que `dpkg` 
lo encuentre y pueda continuar.

    ```wp-block-code
    sudo mkdir -p /etc/apache2/conf-available
    echo '# dummy to unblock purge' | sudo tee /etc/apache2/conf-available/javascript-common.conf
    sudo dpkg --configure -a
    ```

Con esto, `dpkg` reanuda la configuración pendiente y permite continuar con la desinstalación.

### 3. **Deteniendo y deshabilitando Apache2**

Antes de eliminarlo, es recomendable detenerlo y evitar que arranque en reinicios
futuros.

    ```wp-block-code
    sudo systemctl disable --now apache2 || true
    ```

### 4. **Purgando Apache y módulos asociados**

La opción `purge` de `apt-get` elimina tanto los binarios como los archivos de configuración.

    ```wp-block-code
    sudo apt-get purge -y apache2 apache2-bin apache2-data apache2-utils \
      libapache2-mod-php* libapache2-mod-security2 libapache2-mod-fcgid || true
    ```

Esto abarca el núcleo de Apache2 y los módulos más comunes que podrían estar instalados.

### 5. **Eliminando dependencias y configuraciones residuales**

Algunos paquetes quedan en estado `rc` (removed, config-files remain). Se pueden
eliminar así:

    ```wp-block-code
    sudo apt-get autoremove --purge -y
    dpkg -l | awk '/^rc/{print $2}' | xargs -r sudo dpkg --purge
    ```

### 6. **Borrando directorios de Apache (opcional)**

Si no hay contenido que quieras conservar, puedes limpiar por completo las rutas
de Apache:

    ```wp-block-code
    sudo rm -rf /etc/apache2 /var/log/apache2 /var/lib/apache2
    # Opcional: elimina el docroot por defecto
    sudo rm -rf /var/www/html
    ```

> **Precaución:** si tienes páginas web o configuraciones personalizadas en `/var/
> www` o `/etc/apache2`, haz una copia antes de borrarlas.

### 7. **Forzando la purga si aún hay problemas**

En casos extremos, se puede forzar la eliminación del paquete con `dpkg`:

    ```wp-block-code
    sudo dpkg --purge --force-all apache2
    sudo apt-get -f install
    ```

### 8. **Verificando que el puerto 80 está libre**

Tras eliminar Apache, puedes confirmar que el puerto 80 no está ocupado:

    ```wp-block-code
    ss -tulpn | grep ':80' || echo "Puerto 80 libre"
    ```

Si usas **Nginx** como servidor o proxy inverso, puedes habilitarlo y arrancarlo:

    ```wp-block-code
    sudo systemctl enable --now nginx
    ```

## **Conclusiones**

Eliminar Apache2 cuando está parcialmente instalado requiere algo más que un simple`
apt-get remove`. El proceso correcto implica:

 1. Crear una configuración ficticia para desbloquear `dpkg`.
 2. Detener y deshabilitar el servicio.
 3. Purgar todos los paquetes y módulos relacionados.
 4. Limpiar configuraciones y directorios residuales.
 5. Verificar que el puerto 80 está disponible para otros servicios.

Con este procedimiento, se garantiza una eliminación limpia de Apache2, evitando
conflictos con otros servidores web y asegurando que el sistema quede libre de configuraciones
antiguas.
