Cómo arreglar el error ‘Failed to take /etc/passwd lock’ al instalar systemd en WSL

Instalar Ubuntu en WSL (Windows Subsystem for Linux) puede parecer sencillo, pero a veces surgen errores extraños que dejan al usuario atascado. Un caso clásico es el mensaje ‘Failed to take /etc/passwd lock: Invalid argument’, que aparece cuando intentas ejecutar un comando como sudo apt --fix-broken install. Este error suele indicar que systemd está intentando comportarse como en un entorno Linux completo, pero WSL no lo ha preparado correctamente para ese modo. A continuación, te presento dos rutas claras para solucionar este problema.

Ilustración técnica de la consola de Ubuntu en WSL mostrando el error systemd.
La transición entre entornos puede causar errores de bloqueo en archivos críticos.

Ruta 1: Mantenerlo simple sin systemd

Si estás montando un entorno para herramientas de desarrollo, Python o simplemente quieres estabilidad, lo mejor es no depender de systemd. Sigue estos pasos para reparar el sistema:

  1. Asegúrate primero de que WSL esté completamente apagado desde Windows.
  2. Ejecuta en la terminal:
    wsl --shutdown
    para limpiar cualquier proceso residual.
  3. Vuelve a entrar al entorno y fuerza una reparación parcial con:
sudo dpkg --configure -a
sudo apt -f install

Si el problema persiste, puedes eliminar los paquetes de systemd para evitar conflictos futuros.

Ruta 2: Activar systemd correctamente

Si realmente necesitas systemd para servicios avanzados o Docker, el problema suele ser una configuración incompleta. Actívalo siguiendo este procedimiento:

  1. Crea un archivo de configuración en tu terminal con:
sudo nano /etc/wsl.conf

Añade la siguiente sección dentro del archivo:

[boot]
systemd=true

Luego, reinicia WSL con wsl --shutdown y vuelve a ejecutar los comandos de reparación que vimos antes.

Troubleshooting: Bloqueo persistente

A veces, incluso después de intentar estas rutas, el error del bloqueo en /etc/passwd reaparece. En esos casos delicados, puedes limpiar manualmente los archivos de bloqueo para desatascar el sistema:

sudo rm -f /etc/passwd.lock /etc/shadow.lock /etc/group.lock

Sigue esto con un nuevo intento de sudo dpkg --configure -a.