Як уникнути клопоту "yum lock"?


31

Я часто стикаюся з повідомленням "Інший додаток наразі тримає yum lock; чекаю, поки він вийде ..." при спробі встановити додаток, і мені доведеться вбити yum вручну. Як я можу цього уникнути? Чи є якийсь простий метод розблокувати ням?

Здається, що лише один екземпляр yum може працювати. Це те ж саме з іншими менеджерами пакунків (apt-get, pacman)?


У моєму випадку мене підключили до сервера через VPN. Як тільки я запустив sudo yum -y update, усі пакунки оновлювалися разом із відкритим VPN. Як тільки пакет відкритого VPN оновився, мене відключили від VPN. Я знову входжу в систему, спробуйте оновити yum ще раз, і це говорить те саме.
arun

Відповіді:


24

Я думаю, що це викликано PackageKit. Ви повинні перевірити PackageKit і відключити його (я припускаю, що це CentOS 7 з systemctl, інакше ви можете використовувати serviceі chkconfig) (як зазначено в коментарях, ім'я служби packagekitне є packagekitd):

systemctl stop packagekit
systemctl disable packagekit

Інший підхід (на CentOS / RHEL 6, Fedora 19 або новішої версії) - це відкрити /etc/yum/pluginconf.d/refresh-packagekit.confтекстовий редактор і змінити enabled=1на enabled=0.

Або ви можете повністю його видалити:

yum remove PackageKit

3
Він називається packagekit.serviceна мій Centos 7
Вадим Котов

У моєму випадку я просто запустив systemctl stop packkit і тоді вимкнув yum замок.
T-Heron

9

зробіть наступне, щоб вирішити проблему:

cd /var/run
rm -f yum.pid

Ви також можете оновити свій yum згодом

yum -y update

1
Це боротьба з симптомами і не фіксація справжньої причини.
Аксель Беккерт

4

Ви можете розблокувати yum, виконавши два простих кроки,

1) Запустіть, ps aux | grep yumщоб побачити, який процес блокується yum. 2) kill <process_id>вбити процес.

Знову запустіть, ps aux | grep yumщоб побачити, чи процес убитий чи ні. Yum буде розблокований після вбивства процесу.


3
це "працює", але, мабуть, погана практика
Дейв Кузен

1
Це працює у вибраних обставинах. Я зіткнувся з ситуацією, коли systemd перезапускає пакет пакунків, перш ніж я можу запустити власну команду yum. І так, також, мабуть, погана практика вбивати PID, замість того, щоб виразно сказати пакету не працювати.
0xШепдог

1

У моєму випадку мене підключили до сервера через VPN (відкрита VPN). Як тільки я запустив sudo yum -y update, усі пакунки оновлювалися разом із відкритим VPN. Як тільки пакет відкритого VPN оновився, мене відключили від VPN. Я знову ввійшов у систему, спробував оновити yum ще раз, і він сказав, що інший процес тримає фіксацію yum.

Я перевірив, ps ax | grep yumі старий процес все ще працює. Я чекав 5 хвилин, щоб він "закінчився", але процес просто продовжував працювати. Тоді я подумав, що можу "потягнути курок" з вбивством, тому я побіг

kill <PID of the yum update process>

Це не вбило процес. Спробував це ще кілька разів, і досі успіху немає.

Нарешті мені довелося по-справжньому витягнути вилку, запустивши:

kill -9 <PID of the yum update process>

Спробував оновлення знову, але те саме питання. Я тоді побіг:

rm -f /var/run/yum.pid

а потім спробував оновити і отримав цей вихід:

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

Повірте, все добре, але мені не сподобалося тягнути вилку на стільки речей!


0

systemctl disable packagekit недостатньо . Пакет пакет буде працювати при перезавантаженні. Використовуйте maskкоманду замість disableкоманди.

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

Потім після перезавантаження ви побачите ...

[sri@localhost ~]$ systemctl status packagekit
● packagekit.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.