为什么 Ubuntu 存储库没有最新版本的软件?

为什么 Ubuntu 存储库没有最新版本的软件?

为什么 Ubuntu 官方存储库中的软件包比 Debian Sid、PPA、作者等的最新(上游)版本更旧?

答案1

Ubuntu 版本在作为最终产品正式向公众发布之前要经历几个阶段:

  • 在 Ubuntu 发布新版本之前的某个时间点,它会冻结其软件包。

  • 在发布之前但在软件包冻结之后,主要的工作是修复这些软件包中可能存在的所有错误和问题。软件包或功能冻结后,新软件包版本不再导入到存储库中。

  • 一旦发布,这些软件包的额外更改仅用于修复错误和安全问题。即使发布了软件包的新版本,官方存储库中的软件包也不会再进行升级。

  • 有些软件包有例外,例如 Web 浏览器(需要始终保持更新)或某些情况

Ubuntu 的下一个版本将持续从 Debian 导入新版本的软件包,直到下一次冻结发生并重复相同的过程。

举个例子,你可以看看12.04 发布计划

你可以看到,虽然 12.04 是在 4 月份发布的,但在 12 年 1 月,出现了一个叫做 _Debian 导入冻结_發生了。

这只是实际发布之前的许多冻结阶段中的第一个,这意味着此时从 Debian 测试版或不稳定版导入的软件包将停止,并开始对其进行定制和修复。

很多软件包在此之后都没有进行升级,并且软件包当时的版本就是现有版本,并在发布的整个生命周期内进行维护。

因此,即使在开发人员的 PPA 或 Ubuntu+1 存储库中存在同一软件包的更高版本这些只会包含在 Ubuntu 的下一个版本中。

这样做是为了稳定性、安全性和功能性。不断将新的软件包导入主存储库意味着问题和更多需要解决的问题。冻结软件包版本有助于解决这些问题,并使 Ubuntu 对最终用户更安全、更稳定。

Ubuntu 每 6 个月发布一个新版本,因此每 6 个月都会准备、测试、定制新软件包并发布新版本。软件包的未来版本可以通过 PPA 或直接从网站下载安装到您的系统中,但官方存储库中的软件包版本保持不变。

想要了解更多有关 Ubuntu 从 10.04 到 12.04 发布期间发生的事情的有趣概述,请查看ReleaseSchedule - LTS 到 LTS稳定版本更新页面获得 Ubuntu 稳定版本的完整概述和说明。

答案2

两个原因。第一个原因很明显:当新的上游发布时,需要人工花时间更新软件包。第二个原因是,如果您运行的是稳定版本而不是当前开发版本,则软件包不会随意更新以避免损坏。请参阅http://wiki.ubuntu.com/StableReleaseUpdates

答案3

由于多种原因,软件包在发布时被冻结,并且随后不会更新。如果在发布后引入了新版本,那么新版本...

  • 可能会带来新的错误,从而退化发布时存在的功能
  • 需要人力打包、测试、上传
  • 需要一套自己的安全更新
  • 需要更新其用户界面的翻译
  • 需要更新文档(和翻译)
  • 使技术支持更具挑战性
  • 可能会惹恼那些已经习惯了旧版本功能的用户
  • 可能需要更新的依赖项,如果在存储库中更改这些依赖项,则可能会破坏其他应用程序
  • 可能会破坏依赖于此软件包的其他软件包
  • 可能会破坏为旧版本创建的用户脚本、模板、工具等

尽管如此,请注意,Ubuntu 在某些情况下对存储库中的软件版本进行全面更新。例如 Firefox。

此外,还有一个 ubuntu-backports 存储库,用户可以选择加入该存储库来更新软件包,这样就不会出现上述问题。默认情况下,它不启用,因此用户必须选择加入,这样做是为了消除软件突然更改的意外。此外,它没有配备大量人员,所以我不确定软件包的实际更新频率。

此外,SRU 团队最近更新了一些政策,希望这可以使获取仅修复错误的软件包更新变得更加简单。

答案4

我将尝试根据我过去在 ubuntu 论坛和 ubuntu planet 的经验来回答您的问题。

我想我只是想知道 apt 存储库是如何更新的,以及由谁更新。

APT 存储库确实会从 Ubuntu 的打包团队那里进行更新。打包团队从开发人员那里获得所有上游软件包,开发人员会进行初始打包测试和其他工作。然后测试团队进行最终测试并发出信号。但打包团队和测试团队对依赖关系及其对稳定系统的影响非常谨慎。

出现延迟是不是因为开发人员尚未将最新版本推送到相关服务器?

如果您看到上游的变更,则有成千上万的开发人员想要推动他们的软件包。但由于各种原因,并非所有软件包都能成功进入主流。假设 Gedit 应用程序,2.2 版本适合并能与 Dbus 2.1 和 Gtk 2.4 等配合使用。而 Gedit 2.4 版本(非常新)需要 Gtk 2.5 和 Dbus2.3 才能工作。现在测试和打包团队(也是发布团队)不接受这一点,因为用新系统更改具有旧 dbus 和 gtk 的现有系统会破坏其他一切。希望您明白依赖地狱的意思。

开发人员是否还需要做很多工作才能将发布版本转换为存储库可以使用的形式?

不是上游渠道。但是是发布渠道 :)。

附言:与上述解释相比,现在规范中的流程可能会有一些变化。但大体相同。

相关内容