apt dist-upgrade
vs. just之间到底有什么区别apt upgrade
?我应该使用哪一个?
答案1
以供参考:
apt upgrade
将升级所有可以升级的软件包,而无需安装其他软件包或删除任何冲突的已安装软件包。基本上,它将应用所有不包含已更改依赖项的软件包升级。
apt full-upgrade
( 的正确等价物apt-get dist-upgrade
)如果软件包升级需要安装新软件包或删除冲突的已安装软件包,则也会应用软件包升级。基本上,它将应用所有软件包升级,包括那些具有已更改依赖关系的软件包升级。
在稳定的发行版套件中,当不添加新的 APT 源时,很少会遇到依赖项发生变化的情况,因此通常apt full-upgrade
不需要或不应用任何额外的升级apt upgrade
,但 Linux 映像包升级除外。Linux 映像包通常作为元包提供,例如Linux 映像-amd64,这取决于实际的版本包,例如Linux-映像-4.19.0-9-amd64。使用 时apt upgrade
,Linux 映像元包通常不会升级,因为需要安装新版本的 Linux 映像包。apt full-upgrade
另一方面,运行将进行升级,此外,如果新版本定义了相关冲突,它可能会删除旧版本的包(Linux 映像包通常不会出现这种情况,仅举一例!)。
由于已安装的软件包可以通过 删除apt full-upgrade
,因此不应以非交互方式调用它。我个人在测试新的 Raspbian 测试套件时遇到过这种情况,由于未解决的依赖关系或冲突的存储库更新,整个 Web 服务器堆栈将被删除。我需要等到存储库不一致的问题解决后,才能进行升级而不会造成混乱。然而,在稳定的套件上我从未遇到过这样的问题。
答案2
这里有一个全面的解释。
https://askubuntu.com/questions/194651/why-use-apt-get-upgrade-instead-of-apt-get-dist-upgrade
如果您希望事情“正常运转”,您可能需要 apt-get dist-upgrade 来确保依赖关系得到解决。
我只需在我的 Kali 机器上使用 sudo apt-get update 然后进行升级即可。它偶尔会询问我是否要删除旧软件包(是),并且我大约每月运行一次 sudo apt-get autoremove 来删除旧软件包。
我的两台 Linux 机器都运行良好并且我会让它们保持最新版本。