在 Ubuntu 发布为最终产品之前,它会经历几个阶段:
Ubuntu 在发布之前的某个时间点会冻结其软件包。
在发布之前但软件包冻结之后,主要进行修复软件包中可能存在的所有错误和问题的工作。不再将新的软件包版本导入到存储库中,因为已经冻结了软件包或功能。
一旦发布完成,对这些软件包的进一步更改只能用于修复错误和安全问题。即使有新版本的软件包发布,官方存储库中的软件包也不再进行升级。
某些软件包有例外情况,例如网络浏览器(需要始终保持更新)或 特定情况。
为下一个 Ubuntu 版本,新版本的软件包会持续被导入(来自 Debian),直到下一次冻结发生并重复相同的过程。
作为一个例子,你可以看一下12.04版本的发布计划。
你会发现尽管12.04是在四月发布的,在一月的时候发生了一个叫做_Debian引入冻结_的事件。
这只是实际发布之前的许多冻结阶段中的第一个阶段,意味着在那个时候,从Debian测试或不稳定版导入软件包的工作停止,并开始对其进行定制和修复问题。
在此之后,很多软件包将不再进行升级,而该软件包在那个时点的版本将在发布的整个生命周期内得到维护。
因此,即使在开发人员的PPAs或Ubuntu+1存储库中有相同软件包的更高版本 ,这些版本只会包含在下一个Ubuntu版本中。
这样做是为了稳定性、安全性和功能性。不断将新的“躁动”软件包导入主要存储库会导致问题,并增加解决问题的复杂度。软件包版本的冻结有助于解决这个问题,使Ubuntu对最终用户更加安全和稳定。
每6个月都会发布一个新版本的Ubuntu,因此每6个月都会准备、测试、定制和发布新版本的软件包。将来版本的软件包可以通过PPA(个人软件包档案)或从网站下载来安装到您的系统中,但官方软件仓库中的软件包版本保持不变。在现实情况下可能直接导致安全漏洞的错误。这些由安全团队完成,并在SecurityTeam/UpdateProcedures中有记录。
与之前版本的Ubuntu相比,表示严重退化的错误。包括完全无法使用的软件包,例如无法卸载或启动时崩溃。
在现实情况下可能直接导致用户数据丢失的错误。 不符合上述类别的错误,但是(1)有明显安全补丁并且(2)影响应用程序而不是关键基础设施软件包(如X.org或内核)。
对于长期支持版本,我们经常希望启用新硬件。只要我们能确保不影响现有硬件的升级,这样的更改就是合适的。例如,新引入的驱动程序的模块别名不能与先前发布的驱动程序重叠。 -在Canonical合作伙伴存档中的商业软件的新版本。
-FTBFS(无法从源代码构建)也可以考虑。请注意,在主要版本中,发布过程确保没有从当前源代码构建的二进制文件。通常,这些错误应该与其他错误修复一起进行SRU。
-对于提供新功能但不修复关键错误的软件包的新上游版本,应该请求进行后移。
我将尝试根据我在Ubuntu论坛和Ubuntu Planet的过去经验来回答您的问题。
我想知道apt存储库是如何更新的,由谁更新。
APT存储库是由Ubuntu的打包团队进行更新的。打包团队从开发人员那里获取所有上游软件包,并进行初始打包测试和其他操作。然后测试团队进行最终测试并发出信号。但是,打包团队和测试团队非常谨慎地处理依赖关系及其对稳定系统的副作用。
当出现滞后时,是因为开发人员没有将最新版本推送到相关服务器吗?
如果你看到上游的变化,会发现有成千上万的开发者想要推送他们的软件包。但并不是所有的软件包都能成功进入主流,这是因为各种原因。以Gedit应用程序为例,2.2版本适用于并且与Dbus 2.1和Gtk 2.4等版本良好兼容。而Gedit 2.4版本(非常新)需要Gtk 2.5和Dbus 2.3才能正常工作。现在测试和打包团队(发布团队也是如此)不接受这个版本,因为将旧的dbus和gtk更换为新的版本会破坏其他一切。希望你明白依赖地狱的问题所在。 开发者在将发布版本整理成仓库可用形式时是否需要做更多的工作? 对于上游渠道来说不需要,但对于发布渠道来说是的 :). 附注:现在在Canonical中可能对该过程进行了一些修改,但基本上还是一样。