GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Solucione el error "no se pudo obtener el bloqueo /var/lib/dpkg/lock" de una vez por todas (Ubuntu)

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 🙂


Ubuntu
  1. Arreglando “No se puede adquirir el bloqueo de interfaz de dpkg. ¿Eres root?” Error en Ubuntu y otras distribuciones de Linux

  2. ¿Cómo matar el proceso que mantiene el bloqueo Apt?

  3. ¿Diferencia entre /var/log/messages, /var/log/syslog y /var/log/kern.log?

  4. Update-alternatives:Error:/var/lib/dpkg/alternatives/vim Corrupto:¿Estado no válido?

  5. Cómo corregir el error `No se pudo obtener lock / var / lib / dpkg / lock – open (11 recurso temporalmente no disponible)

Cómo reparar el error "E:no se pudo obtener el bloqueo /var/lib/dpkg/lock" en Ubuntu

Arreglar "Subproceso /usr/bin/dpkg devolvió un código de error (1)" en Ubuntu

Cómo resolver el error 'E:no se pudo obtener el bloqueo /var/lib/dpkg/lock' en Ubuntu

Cómo corregir el error 'E:no se pudo obtener el bloqueo /var/lib/dpkg/lock' en Ubuntu Linux

Corrección del error "No se puede analizar el archivo del paquete /var/lib/apt/lists" en Ubuntu y otras distribuciones de Linux

¿El bloqueo de pantalla de Ubuntu 17.10 no funciona y está gris?