Làm thế nào để tránh rắc rối yum khóa yum?


31

Tôi thường bắt gặp thông báo "Một ứng dụng khác hiện đang giữ khóa yum; chờ đợi nó thoát ..." khi cố gắng cài đặt một ứng dụng và tôi phải giết yum bằng tay. Làm thế nào tôi có thể tránh điều đó? Có phương pháp đơn giản nào để mở khóa yum không?

Có vẻ như chỉ có một ví dụ của yum có thể chạy. Có giống với các trình quản lý gói khác (apt-get, pacman) không?


Trong trường hợp của tôi, tôi đã được kết nối với một máy chủ thông qua VPN. Khi tôi chạy sudo yum -y update, tất cả các gói đều được cập nhật, cùng với VPN mở. Khi gói VPN mở được cập nhật, tôi đã bị ngắt kết nối với VPN. Tôi đăng nhập lại, thử cập nhật yum một lần nữa và nó cũng nói điều tương tự.
arun

Câu trả lời:


24

Tôi nghĩ rằng đó là do GóiKit. Bạn phải kiểm tra GóiKit và vô hiệu hóa nó (Tôi giả sử đó là CentOS 7 systemctl, nếu không bạn có thể sử dụng servicechkconfig) (như đã đề cập trong các nhận xét, tên dịch vụ packagekitkhông phải là packagekitd):

systemctl stop packagekit
systemctl disable packagekit

Một cách tiếp cận khác (Trên CentOS / RHEL 6, Fedora 19 hoặc sớm hơn) là mở /etc/yum/pluginconf.d/refresh-packagekit.confbằng trình chỉnh sửa văn bản và thay đổi enabled=1thành enabled=0.

Hoặc bạn có thể loại bỏ nó hoàn toàn:

yum remove PackageKit

3
Nó được gọi packagekit.servicetrên Centos 7 của tôi
Vadim Kotov

Trong trường hợp của tôi, tôi chỉ đơn giản chạy gói bộ dừng hệ thống và sau đó khóa yum được giải phóng.
T-Heron

9

làm như sau để giải quyết vấn đề:

cd /var/run
rm -f yum.pid

bạn cũng có thể cập nhật yum của bạn sau đó

yum -y update

1
Đây là chiến đấu triệu chứng và không khắc phục nguyên nhân thực sự.
Axel Beckert

4

Bạn có thể mở khóa yum bằng cách làm theo hai bước đơn giản,

1) Chạy ps aux | grep yumđể xem quá trình nào đang khóa yum. 2) kill <process_id>để giết quá trình.

Một lần nữa chạy ps aux | grep yumđể xem quá trình bị giết hay không. Yum sẽ được mở khóa sau khi giết quá trình.


3
"công việc" này nhưng có lẽ là thực tiễn tồi
Dave Cousineau

1
Điều này hoạt động trong các trường hợp chọn. Tôi đã gặp một tình huống trong đó systemd khởi động lại quá trình packkit trước khi tôi có thể bắt đầu lệnh yum của riêng mình. Và vâng, có lẽ đó là một thực tế tồi tệ khi giết chết PID thay vì duyên dáng nói với gói phần mềm không chạy.
0xSheepdog

1

Trong trường hợp của tôi, tôi đã được kết nối với một máy chủ thông qua VPN (VPN mở). Khi tôi chạy sudo yum -y update, tất cả các gói đều được cập nhật, cùng với VPN mở. Khi gói VPN mở được cập nhật, tôi đã bị ngắt kết nối với VPN. Tôi đã đăng nhập lại, thử cập nhật yum một lần nữa và nó cho biết một quy trình khác đang giữ khóa yum.

Tôi đã kiểm tra ps ax | grep yumvà quá trình cũ vẫn đang chạy. Tôi đợi trong 5 phút để nó "kết thúc", nhưng quá trình chỉ tiếp tục chạy. Sau đó tôi nghĩ rằng tôi có thể "bóp cò" bằng kill, nên tôi chạy

kill <PID of the yum update process>

Điều đó đã không giết chết quá trình. Đã thử rằng một vài lần nữa, và vẫn không thành công.

Cuối cùng tôi phải thực sự rút phích cắm trên nó, bằng cách chạy:

kill -9 <PID of the yum update process>

Đã thử cập nhật yum một lần nữa, nhưng cùng một vấn đề. Sau đó tôi chạy:

rm -f /var/run/yum.pid

và sau đó thử cập nhật và nhận đầu ra này:

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

Tin rằng mọi thứ đều tốt, nhưng tôi không thích rút phích cắm quá nhiều thứ!


0

systemctl disable packagekit là không đủ . packkit sẽ được chạy khi khởi động lại. Sử dụng masklệnh thay vì disablelệnh.

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

Sau đó, khi khởi động lại, bạn sẽ thấy ...

[sri@localhost ~]$ systemctl status packagekit
● packagekit.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.