![为什么大多数发行版(Debian 除外)在升级到新版本时建议/要求完全重新安装?](https://linux22.com/image/22495/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%A4%A7%E5%A4%9A%E6%95%B0%E5%8F%91%E8%A1%8C%E7%89%88%EF%BC%88Debian%20%E9%99%A4%E5%A4%96%EF%BC%89%E5%9C%A8%E5%8D%87%E7%BA%A7%E5%88%B0%E6%96%B0%E7%89%88%E6%9C%AC%E6%97%B6%E5%BB%BA%E8%AE%AE%2F%E8%A6%81%E6%B1%82%E5%AE%8C%E5%85%A8%E9%87%8D%E6%96%B0%E5%AE%89%E8%A3%85%EF%BC%9F.png)
我的 Linux 生涯大部分时间都在使用 Debian,我一直在研究其他发行版,并且对它们在版本之间不提供平滑升级的程度感到非常惊讶。 Debian 是可以无限升级的,我现在已经升级了几个主要的稳定版本。
我说的是像 Fedora(及其衍生品)这样得到良好支持的发行版,甚至 Ubuntu 及其衍生品。甚至像 CentOS 这样稳定的面向服务器的发行版也是如此。
是因为 Debian 的包管理系统和包升级脚本比其他发行版所提供的要先进得多吗?
或者,无论发行版如何,在主要版本升级时从头开始重新安装总体上是一个更好的主意?
答案1
这是多种因素的结合。
大多数发行版都使用主要版本来实施重大的、有时是破坏性的更改。例如,Fedora 15 添加了 systemd,Ubuntu 在 6.10 中添加了 upstart。 Debian 在很多方面都是一个非常保守的发行版。巨大的、破坏性的改变是不受欢迎的。
例如,这就是 Debian 的发布周期相距甚远的结果,因为它们需要修改每个重要的软件包才能满足新版本的标准。
Debian 的包管理技术并不比 Fedora 或 Ubuntu 优越(显然,因为它与 Ubuntu 相同),但 Debian 在文化上认为拥有一个平滑的升级系统很重要。
答案2
更具体地说,我在升级时遇到了许多发行版的问题。例如,Ubuntu 在不同版本之间极大地改变了其安装的软件包基础。如果执行传统的“dist-upgrade”,已安装的软件包将更新到新版本,但最终结果缺乏新的阵容更改。如果默认安装中的某个软件包被降级为“受支持”或更糟糕的“不受支持”,您仍然保留该软件包。如果新软件包现在处于默认安装中,您将不会安装它。尽管您的版本“技术上”是升级版本,但它并不反映新的版本体验。同样的情况也很准确,在比较CentOS5和CentOS6时,它们完全重新组织了它们的包装名称。
Debian 优先考虑平滑升级,但代价是如此剧烈的变化。这就是 Debian 在新功能上速度较慢的原因,对于他们的社区来说,这种权衡是可以接受的。为了呼应前面的答案,它与包管理技术本身无关。我想说的是,不断地重新安装 Ubuntu 让我感到疲惫不堪。
答案3
你所说的并不适合整个家庭滚动发布分布。
对于系统维护软件来说,当仅升级系统的某些部分或在整个升级过程中保持配置一致性时,解决跨包兼容性问题更具挑战性。各种软件包需要进行调整才能彼此良好地协同工作。
这就是为什么最简单的(即在相同的开发时间努力下最可靠)提供系统更新的解决方案是定期准备完整的、彻底测试的、完整安装的版本。红帽等企业解决方案的立场是,必须为客户提供可靠的系统,并尽可能长时间地避免因升级中断而受到困扰。 (当然,小的升级和错误修复必须可用,甚至可以自动拉取)。这也是 CentOS 等免费服务器发行版背后的一般理念。
对于系统开发人员来说,为最终用户提供版本之间的无缝升级路线是一个巨大的挑战。许多发行版选择不为此牺牲他们稀缺的时间。许多流行的软件包(例如 QT)很难升级,通常需要完全重新安装。更重要的是,许多项目的开发工作量有所减少,或者被新技术所取代。对于系统包,这通常需要一些重要的系统重新设计。如果必须考虑到某些人想要从版本 C 升级到版本 D,但其他人会从 B 版本或从 A 版本或从中间的某些自定义状态切换的事实,那么迁移过程可能会特别难以实施。
因此,正如您可能已经猜到的,最具挑战性的方法是滚动发布。我不知道 Debian 方法的细节,但从你的描述中我可以看出它们处于中间位置。