Come evitare il fastidio del "blocco yum"?


31

Mi capita spesso di incontrare il messaggio "Al momento un'altra app sta trattenendo il blocco yum; in attesa che esca ..." quando provo a installare un'app e devo uccidere yum manualmente. Come posso evitarlo? Esiste un metodo semplice per sbloccare yum?

Sembra che solo un'istanza di yum possa essere in esecuzione. È lo stesso con gli altri pacchetti manger (apt-get, pacman)?


Nel mio caso, ero collegato a un server tramite VPN. Una volta eseguito sudo yum -y update, tutti i pacchetti venivano aggiornati, insieme a open-VPN. Una volta aggiornato il pacchetto open-VPN, sono stato disconnesso dalla VPN. Ricollego, riprovo a aggiornare yum e dice la stessa cosa.
arun

Risposte:


24

Penso che sia causato da PackageKit. Devi controllare PackageKit e disabilitarlo (suppongo sia CentOS 7 systemctl, altrimenti puoi usare servicee chkconfig) (come menzionato nei commenti, il nome del servizio packagekitnon lo è packagekitd):

systemctl stop packagekit
systemctl disable packagekit

Un altro approccio (su CentOS / RHEL 6, Fedora 19 o precedente) è quello di aprire /etc/yum/pluginconf.d/refresh-packagekit.confcon un editor di testo e passare enabled=1a enabled=0.

Oppure puoi rimuoverlo completamente:

yum remove PackageKit

3
Si chiama packagekit.serviceCentos 7
Vadim Kotov

Nel mio caso, ho semplicemente eseguito systemctl stop packagekit e quindi il blocco yum è stato liberato.
T-Heron,

9

effettuare le seguenti operazioni per risolvere il problema:

cd /var/run
rm -f yum.pid

potresti anche aggiornare il tuo yum in seguito

yum -y update

1
Questo sta combattendo i sintomi e non risolvendo la vera causa.
Axel Beckert,

4

Puoi sbloccare yum seguendo due semplici passaggi,

1) Esegui ps aux | grep yumper vedere quale processo sta bloccando yum. 2) kill <process_id>per terminare il processo.

Corri di nuovo ps aux | grep yumper vedere se il processo viene interrotto o meno. Yum verrà sbloccato dopo aver ucciso il processo.


3
questo "funziona" ma probabilmente è una cattiva pratica
Dave Cousineau,

1
Funziona in determinate circostanze. Ho riscontrato una situazione in cui systemd riavvia il processo packagekit prima di poter avviare il mio comando yum. E sì, probabilmente è anche una cattiva pratica uccidere il PID invece di dire con grazia a packagekit di non funzionare.
0xSheepdog

1

Nel mio caso, ero collegato a un server tramite VPN (VPN aperta). Una volta eseguito sudo yum -y update, tutti i pacchetti venivano aggiornati, insieme a open-VPN. Una volta aggiornato il pacchetto open-VPN, sono stato disconnesso dalla VPN. Ho effettuato nuovamente l'accesso, ho provato di nuovo l'aggiornamento yum e ha detto che un altro processo sta trattenendo il blocco yum.

Ho controllato con ps ax | grep yume il vecchio processo era ancora in esecuzione. Ho aspettato 5 minuti per "finire", ma il processo ha continuato a funzionare. Poi ho pensato di poter "premere il grilletto" con kill, quindi ho corso

kill <PID of the yum update process>

Questo non ha ucciso il processo. Ci ho provato ancora qualche volta, e ancora nessun successo.

Alla fine ho dovuto davvero staccare la spina, eseguendo:

kill -9 <PID of the yum update process>

Ho provato di nuovo l'aggiornamento yum, ma lo stesso problema. Ho quindi eseguito:

rm -f /var/run/yum.pid

e poi ho provato l'aggiornamento e ho ottenuto questo output:

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

Credi che tutto vada bene, ma non mi piaceva staccare la spina da così tante cose!


0

systemctl disable packagekit non è abbastanza . packagekit verrà eseguito al riavvio. Utilizzare il maskcomando anziché il disablecomando.

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

Quindi al riavvio vedrai ...

[sri@localhost ~]$ systemctl status packagekit
● packagekit.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.