CentOS yum - các vấn đề rpmdb đã có từ trước


3

Tôi đang cố gắng cài đặt git trên hộp dành cho nhà phát triển và tôi nhận được những điều sau:

You could try using --skip-broken to work around the problem
** Found 3 pre-existing rpmdb problem(s), 'yum check' output follows:
kernel-2.6.32-431.17.1.el6.x86_64 has installed conflicts bfa-firmware < ('0', '3.2.21.1',     '2'): bfa-firmware-3.0.3.1-1.el6.noarch
kernel-firmware-2.6.32-431.17.1.el6.noarch is a duplicate with kernel-firmware-2.6.32-358.23.2.el6.noarch
kernel-headers-2.6.32-431.17.1.el6.x86_64 is a duplicate with kernel-headers-2.6.32-358.23.2.el6.x86_64

Làm thế nào tôi có thể giải quyết điều này? Tôi không quá quen thuộc với CentOS / RHEL

Cảm ơn

Câu trả lời:


4

Nguyên nhân gốc rễ

Sự gián đoạn trong quá trình cập nhật up2date hoặc yum gây ra việc cài đặt nhiều phiên bản của cùng một gói.

Giải pháp

  1. Nếu hệ thống là Red Hat Enterprise Linux 5 trở lên, lệnh dọn dẹp gói có thể được sử dụng:

$ package-cleanup --dupes $ package-cleanup --cleandupes

Lệnh --dupes sẽ liệt kê các gói trùng lặp được cài đặt trên máy, trong khi công tắc --cleandupes sẽ xóa các phiên bản cũ hơn. Lệnh dọn dẹp gói được cung cấp bởi gói yum-utils.

  1. Nếu dọn dẹp gói không giúp ích hoặc hệ thống là Red Hat Enterprise Linux 4, hãy xóa các gói theo cách thủ công bằng cách sử dụng vòng / phút:

$ rpm -e --justdb <package-name>-<old-version>

Công tắc '--justdb' được sử dụng để đảm bảo rằng việc xóa gói không xóa các tệp của nó khỏi hệ thống tệp, chỉ xóa nó khỏi cơ sở dữ liệu vòng / phút.

Một số bản sao có thể không bị xóa vì chúng được yêu cầu bởi các gói đã cài đặt. Bạn có thể thử --cleandupes với --removenewestdupes hoặc xem lại chúng bằng --dupes và xóa thủ công.


3

Trong trường hợp của tôi, tôi thấy rằng đã xảy ra sự cố và nhiều gói đã được cập nhật mà không bị xóa các phiên bản cũ hơn. Nỗ lực xây dựng lại RPM DB không giải quyết được vấn đề.

Một giải pháp đang hoạt động đơn giản là xóa phiên bản cũ hơn và cài đặt lại phiên bản mới hơn.

Nhìn vào đầu ra lỗi, mỗi dòng về cơ bản cho biết Gói Cập nhật trùng lặp với Gói trước , nghĩa là:

    kernel-headers-2.6.32-431.17.1.el6.x86_64 is a duplicate with kernel-headers-2.6.32-358.23.2.el6.x86_64

Những điều sau đây có vẻ hiệu quả với tôi:

    rpm --erase --nodeps --noscript kernel-headers-2.6.32-358.23.2.el6.x86_64

Lệnh yêu cầu RPM xóa Gói trước đó cụ thể mà không xóa bất kỳ phụ thuộc nào hoặc chạy bất kỳ tập lệnh nào được liên kết với tác vụ.

Tiếp theo gói cần phải được cài đặt lại:

    yum reinstall kernel-headers

Lần này không cần chỉ định phiên bản gói chính xác vì yum sẽ tìm phiên bản mới nhất và cài đặt lại.

Yum sẽ xuất kết quả của hoạt động Kiểm tra Yum của nó trong mỗi lần chạy. Tiếp tục làm điều này cho đến khi không có gói trùng lặp được liệt kê.

Lưu ý rằng bạn có thể truy vấn cơ sở dữ liệu RPM trực tiếp. Ví dụ, nếu bạn thấy nhiều thông báo bao gồm chuỗi glibc, bạn có thể nhận được một danh sách đơn giản các gói có chuỗi đó trong tên của chúng như sau:

    rpm -qa | grep glibc | sort

Mà có thể tạo ra một cái gì đó như:

    glibc-2.17-157.el7_3.5.x86_64
    glibc-common-2.17-157.el7_3.4.x86_64
    glibc-common-2.17-157.el7_3.5.x86_64
    glibc-devel-2.17-157.el7_3.5.x86_64
    glibc-headers-2.17-157.el7_3.5.x86_64

Bây giờ rõ ràng hơn là phải loại bỏ phiên bản trước của glibc-common:

    rpm --erase --nodeps --noscript glibc-common-2.17-157.el7_3.4.x86_64
    yum reinstall glibc-common

0

Hãy thử thực hiện lệnh sau

yum clean all
rpm --rebuilddb
yum update
yum clean all
yum reinstall glibc glibc-common libgcc
yum upgrade
yum install yum-utils
package-cleanup --problems
package-cleanup --dupes

1
Không làm việc cho tôi như bằng văn bản, nhưng một số thông tin hữu ích ở đó. 2 bước cuối cùng xuất ra danh sách bị hỏng. Điều cuối cùng đã giải quyết một số vấn đề, là tiếp tục hạ cấp, sau đó nâng cấp, mọi thứ bị hỏng với tất cả các repos bổ sung bị vô hiệu hóa, và sau đó xây dựng lại db (bước số 2 của bạn) giữa mỗi bước hạ cấp / nâng cấp. Rất nhiều thử nghiệm và lỗi liên quan.
JosephK
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.