El “could not get lock /var/lib/dpkg/lock
El error es bastante común en Debian/Ubuntu ejecutándose en una máquina virtual. Las soluciones existentes en Internet (es decir, eliminar el proceso apt-get o eliminar el archivo de bloqueo) no son ideales, ya que pueden dañar su sistema y enfrentará el mismo error nuevamente en el futuro.
Reparar el error "no se pudo obtener el bloqueo /var/lib/dpkg/lock" de una vez por todas
Le diré la verdadera causa de este error y le mostraré cómo solucionarlo de una vez por todas. El mensaje de error es el siguiente:
E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: Unable to lock the administration directory (/var/lib/dpkg), is another process using it?
El mensaje de error ya le da una pista de la causa del problema:otro proceso está usando /var/lib/dpkg/
. Esto se debe a que Ubuntu habilita de forma predeterminada las actualizaciones desatendidas para la actualización de seguridad.
Cuando su sistema operativo Ubuntu termina de iniciarse, ejecuta automáticamente la apt-get update
dominio. Si hay actualizaciones de seguridad disponibles, las instalará en segundo plano. Entonces, si ejecuta sudo apt upgrade
comando al mismo tiempo, se muestra el error anterior. Debido a que no usa Ubuntu en Virtualbox o en la estación de trabajo de VMware con tanta frecuencia como usa Ubuntu en el sistema completo, su máquina virtual Ubuntu rara vez se actualiza, por lo que verá este error con más frecuencia en la máquina virtual.
Ya sea que use el escritorio de Ubuntu en bare metal o en una máquina virtual, puede deshabilitar las actualizaciones desatendidas para resolver este problema de una vez por todas.
Nota:este error rara vez ocurre en el servidor de Ubuntu y se recomienda que habilite las actualizaciones desatendidas en los servidores para instalar las actualizaciones de seguridad automáticamente.
Así es cómo. Abra Software & Updates
desde el menú de tu aplicación.
Luego haz clic en updates
pestaña. De forma predeterminada, las actualizaciones de seguridad se descargan e instalan automáticamente. Puede cambiarlo para que display immediately
, por lo que no ejecutará sudo apt-get upgrade
comando en segundo plano.
Luego ingrese su contraseña de usuario para que este cambio surta efecto.
Después de eso, reinicia tu computadora.
Desactivar actualizaciones desatendidas desde la línea de comandos
También puede lograr los mismos resultados desde la línea de comandos. En su terminal, abra /etc/apt/apt.conf.d/20auto-upgrades
archivo con un editor de texto de línea de comando como nano.
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
El contenido original es el siguiente:
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "1"; APT::Periodic::AutocleanInterval "0"; APT::Periodic::Unattended-Upgrade "1";
Para deshabilitar la actualización de seguridad automática, cámbielos a
APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Download-Upgradeable-Packages "0"; APT::Periodic::AutocleanInterval "0"; APT::Periodic::Unattended-Upgrade "0";
Para guardar el archivo en el editor de texto Nano, presione Ctrl+O
y luego presione Entrar para confirmar el nombre del archivo. Presiona Ctrl+X
salir. Luego reinicie su computadora.
Actualizar
Un lector me dijo que después de seguir las instrucciones anteriores, el mensaje de error aún se puede ver si ejecuta sudo apt update
comando inmediatamente después de que Ubuntu termine de iniciarse. Esto se debe a que el fondo "apt update
” aún no ha terminado.
Si es una persona que suele actualizar los paquetes de forma manual, le recomendaría configurar la opción "Buscar actualizaciones automáticamente" en weekly
. en lugar de daily
. Para corregir realmente el mensaje de error de una vez por todas, establezca el valor en Never
.
¿Cuándo Ubuntu realiza actualizaciones desatendidas?
Ubuntu realiza actualizaciones desatendidas después del arranque del sistema. También Systemd puede realizar actualizaciones desatendidas. El apt-daily.service
se usa para actualizar la lista de paquetes diariamente y apt-daily-upgrade.service
se utiliza para descargar e instalar actualizaciones de seguridad diariamente. Puede comprobar su estado con:
systemctl status apt-daily.service systemctl status apt-daily-upgrade.service
apt-daily.service
está controlado por apt-daily.timer
. Un temporizador es como un trabajo cron, que ejecuta un servicio systemd con el mismo nombre en momentos específicos. El apt-daily.timer
El archivo de configuración es /lib/systemd/system/apt-daily.timer
. Puedes consultar su contenido con:
cat /lib/systemd/system/apt-daily.timer
Salida:
[Unit] Description=Daily apt download activities [Timer] OnCalendar=*-*-* 6,18:00 RandomizedDelaySec=12h Persistent=true [Install] WantedBy=timers.target
La línea verde indica que apt-daily.service
se ejecuta a las 6:00 y 18:00 todos los días. RandomizedDelaySec=12h
significa que la acción se pospondrá de 0 a 12 horas si otro temporizador tiene la misma hora de inicio.
apt-daily-upgrade.service
está controlado por apt-daily-upgrade.timer
, cuyo archivo de configuración es /lib/systemd/system/apt-daily-upgrade.timer
.
cat /lib/systemd/system/apt-daily-upgrade.timer
Salida:
[Unit] Description=Daily apt upgrade and clean activities After=apt-daily.timer [Timer] OnCalendar=*-*-* 6:00 RandomizedDelaySec=60m Persistent=true [Install] WantedBy=timers.target
Como puede ver, apt-daily-upgrade.service
se ejecuta a las 6:00 AM todos los días. RandomizedDelaySec=60m
significa que la acción se pospondrá de 0 a 60 minutos si otro temporizador tiene la misma hora de inicio.
Los dos .service
archivos y dos .timer
los archivos son instalados por apt
paquete, que también viene con el /usr/lib/apt/apt.systemd.daily
script de shell que es ejecutado por apt-daily.service
y apt-daily-upgrade.service
.
El /usr/lib/apt/apt.systemd.daily
shell script lee configuraciones de /etc/apt/apt.conf.d/20auto-upgrades
expediente. Por lo tanto, corregir el error anterior no requiere que desactive los dos temporizadores.
¡Eso es todo! Espero que este artículo te haya ayudado a solucionar el problema “could not get lock /var/lib/dpkg/lock
” error en Ubuntu. Como siempre, si esta publicación le resultó útil, suscríbase a nuestro boletín informativo gratuito para obtener más consejos y trucos. Cuídate 🙂