
我看過很多關於如何修復多個發行版中損壞的包的答案,這似乎非常有幫助並解決了問題。但是,我很好奇包裹是如何損壞的。
我正在對使用命令的管道進行故障排除apt-get install
,並且無法安裝某些依賴項。經過幾次重試,我能夠使管道正常工作。但是透過搜尋解決方案,我發現 apt-get 有一個非常有用的--fix-broken
標誌,它解決了我的問題。但問題仍然存在,問題是什麼? 我不清楚如何找到--fix-broken
為我解決的確切問題。
瀏覽它的手冊頁,有一些關於以下內容的通用資訊:
Fix; attempt to correct a system with broken dependencies in place. This option, when
used with install/remove, can omit any packages to permit APT to deduce a likely
solution. If packages are specified, these have to completely correct the problem. The
option is sometimes necessary when running APT for the first time; APT itself does not
allow broken package dependencies to exist on a system. It is possible that a system's
dependency structure can be so corrupt as to require manual intervention.
就管道而言,其係統此時已實例化,導致其損壞的包可能發生了什麼?有人能更深入地了解這個標誌是如何運作的嗎?最具體地說,包裹是如何損壞的?
答案1
解決的典型問題apt install --fix-broken
是缺少依賴項。通常的方式那發生的是使用dpkg
直接安裝套件:dpkg
將知道依賴項是否遺失,但無法檢索遺失的依賴項,因此套件最終將部分安裝(已安裝但未配置)。apt install --fix-broken
解決損壞的依賴項並安裝任何所需的套件,或者如果無法解決其依賴項,則刪除完全損壞的套件。
如果你是直接使用dpkg
,通常更好apt install
- 您可以將其指向本地包,它將在安裝過程中解決其依賴關係。
答案2
包只是一個具有依賴項列表的軟體。如果您的系統有一些非標準安裝(例如,從原始程式碼建置),或者如果您已固定軟體包的特定版本(使用“dpkghold”或“dnf --exclude”)以避免破壞某些其他安裝,然後嘗試安裝需要所有這些依賴套件的不同狀態的套件將會失敗,從而導致套件「損壞」。
請務必注意,軟體包或系統狀態可能沒有任何問題。原始包可能適合您的手動編譯(無論如何),但因為它不是預期的它被視為已損壞。