Ubuntu如何比Debian更新?

我正在阅读Debian vs. Ubuntu vs. Linux Mint: Which Distribution Should You Use?

另一方面,Ubuntu旨在包含新的和稳定的良好组合... 有些软件包可以在两个发行版上使用,而其他软件包则专门针对其中一个

如果Ubuntu基于Debian,它如何更更新?它是否只是使用不同的apt源?

同样,因为它基于Debian,为什么会有软件包兼容性的差异?它是否只是安装了一些不同的东西?

我可以说:

  • 所有Debian软件包都可以在Ubuntu上运行。
  • 所有Ubuntu软件包都可以在基于Ubuntu的Linux Mint上运行。

1我不认为Ubuntu是“更更新的”。在许多情况下,Debian才是更更新的。只是Ubuntu的一些软件包集合的维护方式不同而已。 - xji
@xji Debian 11,目前的稳定版本使用的是 PHP 7.4,该版本在6个月前停止了主动支持,但仍有5个月的安全支持。Ubuntu 20.04,目前的稳定版本使用的是 PHP 8.1,该版本将继续获得1年5个月的主动支持,并且还有2年5个月的安全支持(https://endoflife.date/php)。我怀疑其他非常重要且广泛使用的软件包也会有类似的情况。 - user3425506
2个回答

一个“Debian版本”本身并不是一件事情,通常有不同版本的Debian在野外。
Debian有一个名为“不稳定”的分支,或者叫“sid”,以《玩具总动员》中打破他的玩具的小孩命名。
Debian还有一个“稳定”的版本,当它准备好时发布。这些通常会在较长的时间间隔内发布。
在两者之间有一个称为“测试”的版本,其中包含比稳定版更新但比不稳定版旧的软件版本。最终,“测试”被提升为稳定版本。
通常在其开发周期中,Ubuntu从Debian Unstable(sid)导入软件包。在某个时候,我们停止自动导入,而是手动引入修复程序,然后每6个月将其作为Ubuntu发布。在更注重稳定性的LTS版本中,Ubuntu将从测试版本中获取。
在Ubuntu发布后,会与Debian进行大规模同步,然后该过程重复。

Debian Stable和Ubuntu都是基于Debian Unstable -> Testing的版本进行稳定发布。两个过程的主要区别在于,Ubuntu基于时间进行发布,根据发布计划和目标导入和冻结软件,而Debian则以较慢的速度进行循环,并没有严格的“我们需要定期发布”的目标。Ubuntu有时也会直接获取对其用户重要的内容并打包,有时会将这些内容提交回Debian(如果合适的话)。我在这里稍微讨论了一下:

很久以前,Debian的稳定版本可能需要很长时间,有时长达3年:以致于发布时部分软件已经过时。过去几个版本发布得更快一些,大约每1.5-2年发布一次,与Ubuntu LTS发布的间隔差不多,但由于安排不同,Debian的发布版本可能比最新的Ubuntu LTS版本更新(或反之亦然)。

Debian和Ubuntu的软件包通常是二进制兼容的:在一个发行版上构建的程序可以复制到另一个发行版上并成功运行。但这要求安装了与软件包构建时所需的相同库,而这在Ubuntu版本和Debian版本之间或者同一发行版的连续两个版本之间并不总是成立。此外,发行版集成远不止于拥有正确的库,所以即使软件包中的程序具备了运行所需的一切条件,由于发行版之间的许多差异,软件包可能无法正确安装或运行:例如,Ubuntu的软件包可能在Debian上无法使用,因为它需要upstart。
总的来说,如果您认为Debian和Ubuntu之间的打包应该相同,最简单的方法仍然是使用您的版本的确切工具链重新构建二进制软件包。您可以轻松地导入源代码包并自己或在PPA上构建它。
偶尔,Debian和Ubuntu的发布版本会达到一致,例如共享GCC、libc6或python版本等。当然,这对生态系统非常有益,因为紧密对齐的事物使用户、打包人员和上游开发者更容易。这就是为什么Ubuntu开发者峰会上的工具链讨论通常会考虑到Debian的状态的原因。

我在VirtualBox上尝试了一段时间的Debian,发现它的软件包都很...更糟糕的是,没有PPA?!这让情况变得更糟...为什么PPA在Ubuntu上可以用,但在Debian上却不行呢?据说这会引起问题?是Ubuntu的内核与Debian有很大区别,还是Debian缺少某些东西?抱歉,也许我没有完全理解你的意思。 - Jiew Meng
PPAs是为Ubuntu而不是Debian构建的。不过,你可能可以手动安装这些软件包。至于内核,每个发行版都会单独打包它们。 - Jorge Castro

是的,Ubuntu确实使用了不同的apt源。他们有很多人负责检查软件包的新版本。此外,Ubuntu对apt进行了相当大的修改,这可能解释了为什么它们不兼容(我自己也不太确定,但这可能是其中的一部分原因)。