如何使用 apt *不*修復不相關套件中未滿足的依賴關係?

如何使用 apt *不*修復不相關套件中未滿足的依賴關係?

keybase安裝了 CLI,但keybase不幸的是,該包還包含一個GUI 客戶端,它需要libadwaita、GTK 和一堆其他巨大的GUI 東西- 這會大大增加我安裝的包的數量以及WSL 使用的磁碟空間量。因此,我手動安裝了keybasedpkg -i避免引入所有 GUI 依賴項,使我能夠使用 CLI,而不會造成任何臃腫。

然而,這導致apt停止工作。當我嘗試安裝任何其他軟體包,甚至是與 完全無關的軟體包時keybase,我收到此錯誤訊息:

Reading package lists... Done
Building dependency tree
Reading state information... Done
You might want to run 'apt --fix-broken install' to correct these.
The following packages have unmet dependencies:
 keybase : Depends: libappindicator1 but it is not going to be installed or
                    libayatana-appindicator1 but it is not going to be installed
           Depends: libgconf-2-4 but it is not going to be installed
           Depends: libgtk-3-0 but it is not going to be installed
E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution).

我找到的唯一解決方案是暫時刪除keybasewith dpkg,執行我的apt命令,然後keybase再次重新安裝。但我不喜歡這個解決方案 - 我想保留keybase在我的系統上。有沒有辦法apt忽略這些未滿足的依賴關係?或者,有沒有辦法在不破壞系統的情況下擁有任何未滿足的依賴關係apt

答案1

當系統上存在未滿足的依賴關係時,Apt 無法用於升級或安裝軟體。

  • 不能用於升級「包括安全包升級。具有未滿足相依性的系統不是接收安全性更新。因此,對於大多數使用者來說,讓系統處於這種狀態是不明智的。

對於大多數 Ubuntu 用戶,未滿足的依賴關係當他們安裝非 Ubuntu 或錯誤版本的軟體時會發生這種情況。當他們卸載那些非 Ubuntu 或錯誤版本的軟體包時,問題就解決了。

對於勇敢的高級用戶、Apt 和 dpkg 有--force(請參閱man dpkg)允許有限覆蓋的選項。這些是 Ubuntu 之前時代的遺產,如今很少使用……但可能正是您所尋求的。例如,--force-depends-version

depends-version:檢查依賴項時不關心版本。這會影響 Pre-Depends 和 Depends 欄位。

警告:強制使用時應非常小心,並且只能暫時使用,直到上游版本修復相依性問題。 Apt 和 dpkg 可能會繼續強烈地(並且正確地!)抱怨版本錯誤的軟體包。可能會出現其他副作用。

  • 不要使用強制打包作為永久解決方案。它將以淚水和破碎的系統結束。如果您需要永久的非 deb 套件解決方案,請考慮從原始程式碼建置、替代應用程式和/或替代打包方法。不要對安裝了強制軟體包的系統進行版本升級,因為這些軟體包可能會導致版本升級嚴重失敗。

相關內容