Fedora

重新安裝缺少/損壞文件的軟體包

  • October 25, 2021

在不干淨的關機和彩色 fsck 之後,一大堆文件失去了。‘rpm -Va’ 的輸出有幾百行(主要是缺少文件,但也有一些校驗和和其他不匹配)。有沒有一種簡單的方法來重新安裝失去和/或損壞文件的軟體包?

有問題的作業系統是 Fedora 22。

為了參考和完整性,一個能夠實現最初要求的命令將是這樣的(快速擺弄在一起,但它正在工作)

rpm -qf $(rpm -Va 2>&1 | grep -vE '^$|prelink:' | sed 's|.* /|/|') | sort -u

以下是各個部分的簡短說明:

rpm -Va 2>&1

將對 rpm 數據庫中目前安裝/列出的所有軟體包進行完整驗證。它還將stderr重定向到stdout,因為在我的盒子上,一些由啟用預連結引起的錯誤被報告為錯誤,但我們希望它們在stdout上。

**注意:**需要以 root 身份執行才能檢查所有文件、權限和所有者/組。

grep -vE '^$|prelink:'

禁止顯示空行等預連結錯誤(此類錯誤的範例

prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1:)

sed 's|.* /|/|')

將過濾rpm -Va輸出以僅顯示文件名

rpm -qf $()

將查詢所有獲取到的文件名包含在哪些包中,並輸出包名和版本

| sort -u

將抑制重複的包名稱/版本組合。

您將收到一份未通過驗證的包裹列表。

rpm -Va可能仍會顯示一些不相關的問題,因為它還會檢查包之間的依賴關係,這可能需要通過添加 --nodeps.

引用自:https://unix.stackexchange.com/questions/216697