Cada vez que intento actualizar mi Kali Linux ejecutando
sudo apt update
Recibo el siguiente mensaje de error
Unable to lock directory /var/lib/apt/lists/
La forma en que soluciono este problema es buscando procesos ejecutando
lsof /var/lib/dpkg/lock
lsof /var/lib/apt/lists/lock
lsof /var/cache/apt/archives/lock
y matar los procesos que han adquirido los bloqueos.
Me gustaría automatizar el proceso.
Respuesta1
La respuesta a la pregunta que deberías haber hecho
Esta no es una buena idea. No debes matar procesos a ciegas. Descubra qué proceso tiene el archivo bloqueado y por qué.
Además, si tienes este problema con frecuencia, probablemente estés haciendo algo mal. Kali Linux es una distribución especial para pruebas de penetración. No está diseñado para ser instalado.Para hacer cualquier cosa que no sea una prueba de penetración, no utilice Kali. Utilice una distribución normal como Ubuntu.
Cómo encontrar un proceso que tiene un archivo abierto en Python
Puedes usar elpsutil
paquete para enumerar procesos y enumerar los archivos que tienen abiertos.https://stackoverflow.com/questions/20106220/check-for-open-files-with-python-in-linuxtiene un ejemplo de código.
Para enumerar simplemente los procesos que tienen un archivo abierto, puede ser más fácil analizar el resultado defuser
.
import os, subprocess
try:
pids = subprocess.check_output(['fuser', '--', filename], stdout=open(os.devnull))
for pid in map(int, pids.split()):
print('Process {} has {} open'.format(pid, filename))
Respuesta2
No se puede bloquear el directorio /var/lib/apt/lists/
apt
proporcionar apt-daily-upgrade.service
y apt-daily.service
servicios, cuando esté habilitado, apt
se ejecutará en segundo plano. versystemctl list-timers
para desactivarlo:
systemctl disable apt-daily.timer
systemctl disable apt-daily.service
systemctl disable apt-daily-upgrade.timer
systemctl disable apt-daily-upgrade.service
Debian:Actualizaciones desatendidas