En algunos sistemas Debian o derivados (como Ubuntu), al instalar o actualizar Apache2 puede aparecer el error:
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
oapt-get purge
fallan porque dependen de quedpkg
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:
/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.
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.
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.
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í:
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:
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
:
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:
ss -tulpn | grep ':80' || echo "Puerto 80 libre"
Si usas Nginx como servidor o proxy inverso, puedes habilitarlo y arrancarlo:
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:
- Crear una configuración ficticia para desbloquear
dpkg
. - Detener y deshabilitar el servicio.
- Purgar todos los paquetes y módulos relacionados.
- Limpiar configuraciones y directorios residuales.
- 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.
Compartir: