Aquí hay algunas buenas respuestas, pero solo quería agregar un método que no sea lsof para encontrar al usuario de bloqueo dpkg
Paso 1: descubre quién está bloqueando dpkg:
Opción # 1: Uso de lsof (no siempre instalado en la máquina)
lsof /var/lib/dpkg/lock
Opción # 2: usar bash
for pid in $(ls /proc | egrep [0-9]+); do sudo ls -l /proc/$pid/fd 2>/dev/null | grep /var/lib/dpkg/lock && echo $pid; done
Paso 2: Decide qué quieres hacer con el usuario actual de dpkg
Si no existe tal proceso, no hay nada que decidir, simplemente salte al siguiente paso.
De lo contrario, debe decidir si desea eliminar el proceso o dejar que finalice con gracia. Si decides matarlo, solo úsalo kill <pid>
. Si el proceso aún no muere, puede considerar matarlo usando kill -9 <pid>
, pero podría crear ciertas inconsistencias y le aconsejo que no lo haga, a menos que sepa lo que está haciendo.
Paso 3: elimine el archivo de bloqueo
sudo rm /var/lib/dpkg/lock
Paso 4: arreglar el estado interno de dpkg
sudo dpkg --configure -a