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


145

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


2
实际上,这对任何发行版都存在,而不仅仅是Ubuntu。
dr01

8
@ dr01有些发行版的滚动发行版总是获得更新-因此,并非所有发行版都符合此问题或Ubuntu开发周期
Thomas Ward

Answers:


119

Ubuntu版本在实际作为成品发布之前要经历几个阶段:

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

  • 在发行版发布之前,但在程序包冻结之后,通常会进行工作以修复这些程序包中可能存在的所有错误和问题。软件包或功能冻结之后,不再将新的软件包版本导入到存储库中。

  • 发布发布后,对这些软件包的其他更改仅会针对错误修复和安全性问题进行。即使发布了新版本的软件包,也没有对官方存储库中的软件包进行任何升级。

始终从Debian导入新版本的软件包,以用于下一版本的Ubuntu,直到下一次冻结并重复相同的过程为止。

例如,您可以查看12.04发布时间表

您可以看到,即使12.04在4月发布,在1月12日还是发生了Debian Import Freeze

这只是在实际发行之前发生的众多冻结阶段中的第一个,这意味着从Debian测试或不稳定的停止导入软件包,然后开始对其进行定制和修复问题的工作。

此后,许多软件包中没有任何升级,并且该软件包当时的版本是在发行版生命周期中存在并维护的版本。

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

这样做是出于稳定性,安全性和功能性的考虑。一直将新的出血程序包导入到主存储库中将意味着问题,还有很多待解决的问题。冻结软件包版本有助于解决该问题,并使Ubuntu对最终用户更安全,更稳定。

Ubuntu的新版本每6个月发布一次,因此每6个月准备,测试,定制和发布新软件包并附带一个新版本。可以通过PPA或仅通过从网站下载将软件包的将来版本安装在系统中,但是官方存储库中的软件包版本保持不变。

有关从10.04到12.04发行的Ubuntu发生了什么的更多理解和有趣的概述,请查看ReleaseSchedule-从LTS到LTS的稳定发行版和“ 稳定发行更新”页面,以获取有关Ubuntu稳定发行版的完整概述和说明。


2
这项政策似乎有例外,尤其是对于Web浏览器(Firefox,Chromium)。尽管超过95%的软件包可能遵循以下指示,但对于大多数用户而言,Web浏览器可能是最常用的应用程序。
dotpush

如果您需要最新的软件,请使用启动板PPA存储库。
iBug

@iBug或使用Arch LinuxNixOS等其他发行版,或在Ubuntu系统上安装Homebrew
鲍里斯

16

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


3
“当新的上游产品问世时,这需要人工花费时间来更新软件包”,这显然是错误的,一切都可以实现自动化。真正的原因是您提到的第二个原因。
gented '18 -10-20

15

出于发行原因,软件包被冻结,由于多种原因,其后不进行更新。如果新版本发布在后期发行中,则新版本...

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

所有这些,请注意,在某些情况下,Ubuntu 确实会对存储库中的软件版本进行完整更新。例如Firefox。

此外,还有一个ubuntu-backports存储库,用户可以选择使用哪些更新软件包不会导致上面列出的问题。默认情况下未启用此功能,因此用户必须选择启用它,这样做是为了消除您将软件从您的身下更改而带来的意外。另外,它的人员并不多,因此我不确定软件包实际获得更新的频率。

此外,SRU团队最近对策略进行了一些更新,希望这将使获得仅错误修正的软件包更新更加直接。


11

通常,Ubuntu发行版中的更新用于安全性和错误修复,此类错误的示例包括:

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

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

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

  • 对于长期支持版本,我们通常希望启用新硬件。如果我们可以确保不影响现有硬件的升级,则此类更改是适当的。例如,新引入的驱动程序的形式不得与以前提供的驱动程序重叠。-Canonical合作伙伴档案中的新版本的商业软件。

    -FTBFS(无法从源代码构建)也可以考虑。请注意,在主要的发布过程中,请确保没有不是由当前来源生成的二进制文件。通常,这些错误仅应与其他错误修复一起使用。

    -对于提供新功能但不修复严重错误的软件包的新上游版本,应请求反向移植。

摘自出色的Wiki页面StableReleaseUpdates


11

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

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

APT仓库确实从Ubuntu的包装团队获得更新。包装团队从进行初始包装测试等工作的开发人员那里获得所有上游包装。然后,测试团队进行最终测试并发出合格信号。但是包装团队和测试团队对于依赖项非常谨慎,它的副作用会影响系统的稳定性。

出现延迟时,是否是因为开发人员尚未将最新版本发布到相关服务器上?

如果您看到上游的变化,则有成千上万的开发人员希望推送其软件包。但是并不是所有的方法都成功地进入了主流,这是因为各种原因。假设Gedit应用程序是2.2版本,并且适合Dbus 2.1和Gtk 2.4等。Gedit2.4版本(最新)需要Gtk 2.5和Dbus2.3才能工作。现在,测试和包装团队(也有发布团队)不接受这一点,因为将具有旧dbus和gtk的现有系统替换为新的现有系统会破坏其他所有事情。希望您能理解依赖点。

开发人员在将发行版转换为存储库可以使用的表单方面还有很多工作要做吗?

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

PS:与上述内容相比,现在规范中可能会对流程进行一些更改。但它或多或少都一样。


6

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

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

如果某些软件包已成功合并到将来的Ubuntu版本中,并且开发人员认为它们也可以与较早的软件包一起使用,则可能会发现某些软件包已释放到backports存储库中。可以在软件中心(编辑->软件源->更新选项卡->不支持的更新)中激活和禁用反向端口。


1
如其他地方所提到的,后向端口并不常见,并且数量也不多。
托马斯·沃德

-3

答案不完整。

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

示例:conky现在是默认值1.8.x,您可以在那里进行反向1.9.0 (precise-backports)移植。当然,应该先启用反向端口。

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

编辑:如下所述,并非每个软件包都有一个反向端口,但是如果您足够幸运的话,有时您可能会提前访问。


3
并非每个软件包都支持
反向移植
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.