วิธีหลีกเลี่ยงความยุ่งยาก“ ยำล็อค”?


31

ฉันมักจะพบข้อความ "แอปอื่นกำลังถือล็อค yum อยู่และกำลังรอให้ออกจาก ... " เมื่อพยายามติดตั้งแอปและฉันต้องฆ่ายัมด้วยตนเอง ฉันจะหลีกเลี่ยงสิ่งนั้นได้อย่างไร มีวิธีง่าย ๆ ในการปลดล็อคยำหรือไม่?

ดูเหมือนว่า yum เดียวเท่านั้นที่สามารถทำงานได้ มันเหมือนกันกับแพ็คเกจอื่น ๆ (apt-get, pacman) หรือไม่?


ในกรณีของฉันฉันเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน VPN เมื่อฉันวิ่งsudo yum -y updateแพคเกจทั้งหมดได้รับการอัปเดตพร้อมกับ open-VPN เมื่ออัปเดตแพ็คเกจ open-VPN แล้วฉันถูกตัดการเชื่อมต่อจาก VPN ฉันกลับเข้าสู่ระบบลองอัปเดตยำอีกครั้งและบอกว่าเหมือนกัน
อรุณ

คำตอบ:


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 ของฉัน
Vadim Kotov

ในกรณีของฉันฉันเพียงแค่รันsystemctl stop packagekitจากนั้น yum lock ก็เป็นอิสระ
T-Heron

9

ทำสิ่งต่อไปนี้เพื่อแก้ไขปัญหา:

cd /var/run
rm -f yum.pid

คุณสามารถอัปเดตยำของคุณได้ในภายหลัง

yum -y update

1
นี่คือการต่อสู้กับอาการและไม่แก้ไขสาเหตุที่แท้จริง
Axel Beckert

4

คุณสามารถปลดล็อคยำโดยทำตามสองขั้นตอนง่าย ๆ

1) เรียกใช้ps aux | grep yumเพื่อดูว่ากระบวนการใดกำลังล็อกยำ 2) kill <process_id>เพื่อฆ่ากระบวนการ

วิ่งอีกครั้งps aux | grep yumเพื่อดูว่ากระบวนการถูกฆ่าตายหรือไม่ ยำจะถูกปลดล็อคหลังจากที่ฆ่ากระบวนการ


3
"ใช้งานได้" นี้ แต่อาจเป็นวิธีปฏิบัติที่ไม่ดี
Dave Cousineau

1
ใช้งานได้ในบางสถานการณ์ ฉันพบสถานการณ์ที่ systemd รีสตาร์ทกระบวนการ packagekit ก่อนที่ฉันจะสามารถเริ่มคำสั่ง yum ของฉันเอง และใช่มันอาจเป็นวิธีที่ไม่ดีในการฆ่า PID แทนการบอกแพ็คเกจคิทอย่างสง่างามว่าจะไม่ทำงาน
0xSheepdog

1

ในกรณีของฉันฉันเชื่อมต่อกับเซิร์ฟเวอร์ผ่าน VPN (open VPN) เมื่อฉันวิ่งsudo yum -y updateแพคเกจทั้งหมดได้รับการอัปเดตพร้อมกับ open-VPN เมื่ออัปเดตแพ็คเกจ open-VPN แล้วฉันถูกตัดการเชื่อมต่อจาก VPN ฉันกลับเข้าสู่ระบบลองอัปเดตยำอีกครั้งและมันบอกว่ากระบวนการอื่นกำลังถือล็อคยำ

ฉันตรวจสอบด้วย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)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.