Problema
Una actualización masiva de paquetes en una distribución basada en Debian (por ejemplo, Linux Mint) puede interrumpirse y dejar el gestor de paquetes en estado inconsistente. Cuando la interrupción ocurre durante la instalación de linux-headers o de módulos DKMS (como controladores Wi‑Fi o NVIDIA), dpkg marca varios paquetes como not fully installed. El resultado típico es:
- El sistema no arranca porque el kernel recién instalado no se completa.
- La red queda inoperativa, a menudo por la falta del módulo del controlador.
apt --fix-broken installdevuelve errores de post‑instalación que hacen referencia a scripts en/etc/kernel/*/dkms.- Los paquetes dependientes (
linux-generic-hwe,linux-headers-generic) quedan sin configurar, bloqueando cualquier nueva actualización.
El patrón es: actualización interrumpida + compilación DKMS fallida → paquetes rotos → sistema inarrancable.
Causa
-
Compilación DKMS fallida
DKMS recompila módulos cada vez que se instala un nuevo kernel. Si el código fuente del módulo (por ejemplo,8812auo un driver propietario) no es compatible con la nueva versión del kernel,makedevuelve error 2 y el script de post‑instalación aborta. -
Dependencias encadenadas
Los metapaqueteslinux-generic-hwedependen delinux-headersylinux-image. Cuando uno de ellos falla, el resto queda en “no configurado”, lo que impide queaptavance. -
Falta de acceso a internet
En muchos casos el error ocurre antes de que la red esté disponible (módulo Wi‑Fi no cargado, Ethernet sin driver). Sin repositorios,aptno puede descargar versiones corregidas. -
Interrupción abrupta
Cierre inesperado del gestor de actualizaciones, pérdida de energía o reinicio forzado dejan la base de datos dedpkga medio escribir.
Solución
El objetivo es volver a un estado donde dpkg pueda terminar la configuración y, opcionalmente, eliminar o actualizar el módulo DKMS problemático. El proceso se divide en tres fases:
1. Recuperar la base de dpkg
sudo dpkg --configure -a
sudo apt-get clean
sudo apt-get update
dpkg --configure -afuerza la configuración de los paquetes pendientes.apt-get cleanelimina archivos .deb corruptos que puedan interferir.apt-get updaterefresca la lista de paquetes; si la red sigue caída, se puede montar temporalmente un USB con los .deb necesarios.
2. Aislar el módulo DKMS que falla
Identificar el módulo que aborta (en el log suele aparecer 8812au o nvidia). Si el módulo no es esencial, eliminarlo:
sudo apt-get purge 8812au-dkms
Para módulos críticos (por ejemplo, NVIDIA) intentar reinstalar la versión compatible con el kernel actual:
sudo apt-get install --reinstall nvidia-dkms
3. Reinstalar los paquetes del kernel y sus encabezados
sudo apt-get install --reinstall linux-headers-$(uname -r) linux-image-$(uname -r)
sudo apt-get -f install
- La reinstalación garantiza que los scripts de post‑instalación se ejecuten de nuevo, ahora sin el módulo problemático.
apt-get -f installvuelve a intentar la configuración de dependencias rotas.
4. (Opcional) Forzar una versión anterior del kernel
Si el kernel recién instalado sigue fallando, arrancar desde una versión anterior disponible en GRUB y, una vez dentro, remover el kernel defectuoso:
sudo apt-get purge linux-image-6.17.0-35-generic linux-headers-6.17.0-35-generic
sudo apt-get install linux-image-generic-hwe-24.04 linux-headers-generic-hwe-24.04
Esto deja el sistema con la última versión estable que ya había funcionado.
5. Restaurar conectividad
Una vez que el kernel y los encabezados están configurados, cargar los módulos de red:
sudo modprobe r8169 # ejemplo para Ethernet Realtek
sudo modprobe 8812au # si el driver Wi‑Fi sigue siendo necesario y ya funciona
Reiniciar el servicio de red:
sudo systemctl restart NetworkManager
Cuándo aplicar esta solución
Señales claras
apt --fix-broken installmuestra errores en scriptsdkmsoheader_postinst.d.dpkgindica “4 not fully installed or removed”.- El sistema no arranca o queda atascado en GRUB después de una actualización de kernel.
- La red está inactiva pese a estar conectada físicamente.
Escenarios válidos
- Actualizaciones de kernel en entornos de escritorio o servidores donde se usan controladores DKMS externos.
- Sistemas que dependen de drivers propietarios que no se actualizan automáticamente con el kernel.
- Instalaciones donde la red depende exclusivamente de un módulo DKMS (Wi‑Fi USB, tarjetas Wi‑Fi de Realtek, etc.).
Cuándo NO aplicar
- Si el módulo que falla es crítico y no hay versión alternativa (por ejemplo, un controlador de almacenamiento que impide el arranque). En ese caso, usar un Live USB para respaldar datos y reinstalar el sistema es más seguro.
- Cuando la base de
dpkgestá intacta y el único problema es una actualización de aplicación (no del kernel). Aquí basta conapt upgrade.
Código
# 1. Forzar la configuración pendiente
sudo dpkg --configure -a
# 2. Limpiar caché y actualizar índices
sudo apt-get clean
sudo apt-get update
# 3. Eliminar módulo DKMS problemático (ejemplo 8812au)
sudo apt-get purge 8812au-dkms
# 4. Reinstalar kernel y encabezados actuales
sudo apt-get install --reinstall linux-headers-$(uname -r) linux-image-$(uname -r)
# 5. Intentar reparar dependencias restantes
sudo apt-get -f install
# 6. (Opcional) Volver a una versión anterior del kernel
sudo apt-get purge linux-image-6.17.0-35-generic linux-headers-6.17.0-35-generic
sudo apt-get install linux-image-generic-hwe-24.04 linux-headers-generic-hwe-24.04
# 7. Cargar módulos de red y reiniciar NetworkManager
sudo modprobe r8169
sudo modprobe 8812au
sudo systemctl restart NetworkManager
Verificación
- Ejecutar
dpkg -l | grep -E 'linux-image|linux-headers'y confirmar que los paquetes aparecen con estado ii (instalado correctamente). dkms statusdebe listar los módulos con “installed” y sin “error”.- Reiniciar el equipo y comprobar que arranca con el kernel esperado (
uname -r). - Verificar conectividad:
ping -c 3 8.8.8.8ynmcli device statuspara asegurarse de que la interfaz Ethernet o Wi‑Fi está “connected”.
Notas adicionales
- Backup rápido: antes de manipular paquetes críticos, montar una Live USB y copiar
/etc/apt/sources.listy/var/lib/dpkg/statuspermite restaurar una base funcional. - Evitar actualizaciones parciales: siempre usar
sudo apt full-upgradeen lugar de lanzar el gestor gráfico y cerrar la sesión a mitad de proceso. - DKMS y kernel LTS: cuando se usa un kernel de soporte a largo plazo (HWE), comprobar que los repositorios de DKMS ofrecen versiones compatibles; de lo contrario, fijar el kernel a la versión anterior que funciona.
- Logs útiles:
/var/lib/dkms/<module>/build/make.logcontiene la causa exacta del fallo de compilación; buscar mensajes como “undefined reference” o “missing header” ayuda a decidir si actualizar o eliminar el módulo.