Apt

如何防止 APT 保留我未安裝的軟體包?

  • October 3, 2019

apt-get install <package>當我通過or安裝軟體包aptitude install <package>並隨後使用 刪除它們時apt-get purge <package>; apt-get autoremove --purge,我的系統與以前的狀態不同。它仍然安裝了其他軟體包。

附加軟體包被標記為自動安裝,如apt-mark showauto.

即這發生在 Ubuntu 18.04 下g++-8,離開cpp-8 gcc-8 libasan5:amd64 libcc1-0:amd64 libgcc-8-dev:amd64 libisl19:amd64 libmpc3:amd64 libmpfr6:amd64 libstdc++-8-dev:amd64 libubsan1:amd64. 在不必解析 APT 輸出的意義上,有沒有一種干淨的方法可以防止這種情況發生?

原因autoremove沒有像您預期的那樣刪除,因為自動安裝的軟體包滿足您已經安裝的其他軟體包的弱依賴關係。在您的情況下,dpkg-dev已經安裝了,它本身就是一個自動依賴項;因為它推薦虛擬c-compiler包,所以任何提供的包c-compiler都將在安裝後保留。

換句話說,你已經安裝了包 A,對包 B 的依賴很弱,而包 B 沒有安裝。如果您稍後安裝包 C,對包 B 有依賴(強或弱,但由apt的配置考慮),包 B 也將被安裝,並標記為自動安裝。然而,刪除包 C 不會導致包 B 被考慮自動刪除,因為包 A 就其apt而言保持“有趣”。

可以要求autoremove忽略弱依賴項(預設情況下是建議),但這可能會導致比您預期或想要的更多包變得可移動。

我不知道有什麼好的解決方案。aptitude在自動刪除方面更具侵略性,但它也不能處理所有情況。

請參閱如何推薦和建議與 apt-get dist-upgrade 和 apt-get autoremove 互動?為什麼“apt-get autoremove”不能正常工作?了解更多資訊。

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