Để tham khảo và hoàn thiện vì lợi ích, một lệnh có thể đạt được những gì ban đầu được yêu cầu sẽ là một thứ như thế này (nhanh chóng kết hợp với nhau, nhưng nó hoạt động)
rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u
Đây là một lời giải thích ngắn về các phần khác nhau:
rpm -Va 2>&1
Sẽ chạy xác minh đầy đủ trên tất cả các gói hiện được cài đặt / liệt kê trong cơ sở dữ liệu vòng / phút. Nó cũng sẽ chuyển hướng stderr sang thiết bị xuất chuẩn, vì ở đây trên hộp của tôi một số lỗi gây ra bởi prelink được kích hoạt được báo cáo là lỗi nhưng chúng tôi muốn chúng trên thiết bị xuất chuẩn.
Chú ý: Cần chạy bằng root để có thể kiểm tra tất cả các tệp, quyền và chủ sở hữu / nhóm.
grep -vE '^$|prelink:'
ngăn chặn việc hiển thị các dòng emtpy và các lỗi prelink như vậy (ví dụ về lỗi đó
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
:)
sed 's|.* /|/|')
sẽ lọc rpm -Va
đầu ra để chỉ hiển thị tên tệp
rpm -qf $()
sẽ truy vấn tất cả các tên tệp thu được trong đó các gói được chứa và xuất ra tên và phiên bản của gói
| sort -u
sẽ ngăn chặn các kết hợp tên / phiên bản gói trùng lặp.
Tổng cộng bạn sẽ nhận được một danh sách các gói không xác minh.
rpm -Va
vẫn có thể hiển thị một số vấn đề không liên quan, vì nó cũng kiểm tra sự phụ thuộc giữa các gói, có thể cần phải được loại bỏ bằng cách thêm --nodeps
.
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)