¿Cómo evitar la molestia de "yum lock"?

31

A menudo me encuentro con el mensaje "Otra aplicación actualmente mantiene el bloqueo de yum; esperando que salga ..." cuando intento instalar una aplicación y tengo que matar a yum manualmente. ¿Cómo puedo evitar eso? ¿Hay algún método simple para desbloquear yum?

Parece que solo se puede ejecutar una instancia de yum. ¿Es lo mismo con otros gestores de paquetes (apt-get, pacman)?

PHPst
fuente
En mi caso, estaba conectado a un servidor a través de VPN. Una vez que corrí sudo yum -y update, todos los paquetes se estaban actualizando, junto con Open-VPN. Una vez que el paquete open-VPN se actualizó, me desconecté de la VPN. Vuelvo a iniciar sesión, vuelvo a intentar la actualización yum y dice lo mismo.
Arun

Respuestas:

24

Creo que es causado por PackageKit. Debe verificar PackageKit y deshabilitarlo (supongo que es CentOS 7 systemctl, de lo contrario puede usar servicey chkconfig) (como se menciona en los comentarios, el nombre del servicio packagekitno lo es packagekitd):

systemctl stop packagekit
systemctl disable packagekit

Otro enfoque (en CentOS / RHEL 6, Fedora 19 o anterior) es abrir /etc/yum/pluginconf.d/refresh-packagekit.confcon un editor de texto y cambiar enabled=1a enabled=0.

O puedes eliminarlo por completo:

yum remove PackageKit
taliezin
fuente
3
Se llama packagekit.serviceen mi Centos 7
Vadim Kotov
En mi caso, simplemente ejecuté systemctl stop packagekit y luego se liberó el bloqueo de yum.
T-Heron
9

haga lo siguiente para resolver el problema:

cd /var/run
rm -f yum.pid

También puedes actualizar tu yum después

yum -y update
Suerte
fuente
1
Esto es combatir los síntomas y no solucionar la causa real.
Axel Beckert
4

Puedes desbloquear yum siguiendo dos simples pasos,

1) Ejecute ps aux | grep yumpara ver qué proceso está bloqueando yum. 2) kill <process_id>matar el proceso.

Vuelva a ejecutar ps aux | grep yumpara ver si el proceso se cancela o no. Yum se desbloqueará después de matar el proceso.

MayurKubavat
fuente
3
esto "funciona" pero probablemente sea una mala práctica
Dave Cousineau
1
Esto funciona en circunstancias selectas. Me he encontrado con una situación en la que systemd reinicia el proceso del paquete de paquetes antes de poder iniciar mi propio comando yum. Y sí, también es probablemente una mala práctica matar el PID en lugar de decirle con gracia que packagekit no se ejecute.
0xSheepdog
1

En mi caso, estaba conectado a un servidor a través de VPN (VPN abierta). Una vez que corrí sudo yum -y update, todos los paquetes se estaban actualizando, junto con Open-VPN. Una vez que el paquete open-VPN se actualizó, me desconecté de la VPN. Volví a iniciar sesión, probé la actualización de yum nuevamente y dijo que otro proceso está reteniendo el bloqueo de yum.

Lo verifiqué ps ax | grep yumy el viejo proceso aún se estaba ejecutando. Esperé 5 minutos para que se "terminara", pero el proceso siguió ejecutándose. Entonces pensé que podía "apretar el gatillo" con matar, así que corrí

kill <PID of the yum update process>

Eso no mató el proceso. Intenté eso un par de veces más, y todavía no tuve éxito.

Finalmente tuve que desconectarlo realmente, ejecutando:

kill -9 <PID of the yum update process>

Intenté actualizar de nuevo, pero el mismo problema. Entonces corrí:

rm -f /var/run/yum.pid

y luego intenté actualizar y obtuve esta salida:

Loaded plugins: fastestmirror
Setting up Update Process
Loading mirror speeds from cached hostfile
 * base: mirror.sigmanet.com
 * epel: mirror.sjc02.svwh.net
 * extras: mirrors.vpsie.com
 * updates: mirror.pac-12.org
No Packages marked for Update

¡Cree que todo está bien, pero no me gustó desconectar tantas cosas!

arun
fuente
0

systemctl disable packagekit no es suficiente . packagekit se ejecutará al reiniciar. Use el maskcomando en lugar del disablecomando.

[root@localhost yum.repos.d]# systemctl mask packagekit
Created symlink from /etc/systemd/system/packagekit.service to /dev/null.

Luego, al reiniciar, verá ...

[sri@localhost ~]$ systemctl status packagekit
● packagekit.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)
musaraña
fuente