Fedora
重新安裝缺少/損壞文件的軟體包
在不干淨的關機和彩色 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
.