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

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

一个Ubuntu版本经过几个阶段才真正作为成品向公众发布:

  • 在Ubuntu发布一个版本之前的某个时候,它会在某个时刻冻结它的软件包。

  • 在发布之前但在程序包冻结之后,工作主要是为了解决这些程序包中可能存在的所有错误和问题。 在打包或冻结function后,新的软件包版本不再导入存储库。

  • 一旦发布,对这些软件包的其他更改只会发生在修复错误和安全问题上。 即使发布了新版本的软件包,也不再对官方存储库中的软件包进行升级。

新版本的软件包一直被导入(来自Debian)用于Ubuntu的下一个版本,直到下一个冻结发生并且相同的过程重复进行。

例如,您可以查看12.04的发布计划 。

你可以看到,即使12月4日发布,1月12日发生了一个名为Debian Import Freeze的事情。

这只是在实际发布之前发生的许多冻结阶段中的第一个,这意味着在那时从Debian测试或不稳定的停止和工作中导入包来开始定制和修复它们的问题。

在许多软件包之后,在此之后没有进行升级,并且软件包在那时的版本是存在的版本并且在版本的生命周期内维护。

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

这样做是为了稳定性,安全性和function性。 一直导入到主存储库的新出血包将意味着问题和更多要解决的问题。 软件包版本中的冻结有助于对其进行排序,使最终用户更安全,更稳定。

每6个月发布一个新版本的Ubuntu,因此每6个月新包装的准备,测试,定制和新版本发布。 未来版本的软件包可以通过PPA安装在您的系统中,也可以从网站下载,但官方软件包中的软件包版本保持不变。

有关Ubuntu从10.04到12.04启动时发生的事情的更多理解和有趣的概述,请查看ReleaseSchedule – LTS到LTS和Stable Release Updates页面 ,以获得对Ubuntu稳定版本的完整概述和解释。

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

软件包因发布而被冻结,并且由于多种原因而未随后更新。 如果发布后发布了新版本,那么新版本……

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

所有这一切,请注意,有些情况下Ubuntu 会对存储库中的软件版本进行全面更新。 例如Firefox。

此外,还有一个ubuntu-backports存储库用户可以选择哪些更新软件包不会导致上面列出的问题。 它默认情况下不启用,因此用户必须选择加入它,这样做可以消除让您的软件从您身下更改的意外情况。 此外,它没有大量人员,因此我不确定软件包实际获得更新的频率。

此外,SRU团队最近更新了一些政策,希望能让它更直接地获得仅限bugfix的软件包更新。

通常,Ubuntu发布版本中的更新是为了安全性和错误修复,此类错误的示例包括:

  • 在实际情况下可能直接导致安全漏洞的错误。 这些工作由安全团队完成,并记录在SecurityTeam / UpdateProcedures中。

  • 代表Ubuntu之前版本的严重回归的错误。 这包括完全无法使用的软件包,例如可以在启动时卸载或崩溃。

  • 在实际情况下,可能会直接导致用户数据丢失的错误,这些错误不符合上述类别,但(1)具有明显安全的补丁,(2)影响应用程序而非关键基础架构包(如X.org)或内核)。

  • 对于长期支持版本,我们通常希望启用新硬件。 只要我们能够确保不影响现有硬件的升级,这些更改是适当的。 例如,新引入的驱动程序的modaliases不得与以前发布的驱动程序重叠。 – Canonical合作伙伴档案中的新版商业软件。

    -FTBFS(无法从源构建)也可以考虑。 请注意,在main中,发布过程确保没有不是从当前源构建的二进制文件。 通常这些错误应该只与另一个错误修复一起进行SRU。

    – 对于提供新function的新上游版本的软件包,但不修复关键错误,应该请求反向移植。

取自优秀的维基页面StableReleaseUpdates 。

我会根据我过去ubuntu论坛和ubuntu星球的经验来回答你的问题。

我猜我只是想知道apt资源库是如何更新的,以及由谁来更新。

APT repos确实从Ubuntu的包装团队获得更新。 包装团队从开发人员那里获得所有上游包,他们进行初始包装测试和其他事情。 然后测试团队进行最终测试,发出一个信号。 但是包装团队和测试团队对依赖关系及其对稳定系统的影响非常谨慎。

如果有滞后,是因为开发人员还没有将最新版本推送到相关服务器上?

如果你看到上游的变化,就有成千上万的开发者想要推送他们的软件包。 但并非所有人都成功进入主流,这是因为各种原因。 假设Gedit应用程序,2.2版本适用于Dbus 2.1和Gtk 2.4等.Gedit 2.4版本(非常新)需要Gtk 2.5和Dbus2.3才能工作。 现在测试和打包团队(发布团队也)不接受这一点,因为改变现有系统的旧dbus和gtk与新的dbus打破了其他所有事情。 希望你得到依赖的地狱点。

开发人员是否有更多工作要将版本发布到存储库可以使用的表单中?

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

PS:与上面解释的相比,现在在规范中可能会有一些变化。 但它或多或少相同。

链接fossfreedom中接受的答案作为评论发布是非常好的。

通常,在新版本开发过程的第一部分之后发布的软件包版本不会出现在该版本的主存储库中,因此可以彻底测试可靠的Ubuntu版本。

如果将一些软件包成功地合并到未来的Ubuntu版本中,并且如果开发人员认为它也可以与之前的版本一起使用,那么您可能会发现一些软件包已发布到backports存储库。 可以在软件中心中激活和停用后端端口(编辑 – >软件源 – >更新选项卡 – >不支持的更新)

答案还不完整。

有一些打包,可以安装在Software Center的backport版本中。 在窗口的右侧,在“安装/更改”按钮的左侧,有一个选择框,您可以在其中更改版本。

Exemptigratia:默认conky现在是1.8.x ,你有1.9.0 (precise-backports)作为后端。 当然,应首先启用后向端口。

资料来源: http : //bugs.launchpad.net/ubuntu/+source/conky/+bug/1003727

编辑:如下所述,并非每个包都有一个backport,但如果你足够幸运的话,你可能会有一个早期访问。