目前我正在考虑完全切换到 Linux 发行版。我其实很喜欢 Ubuntu,但我对过时的(用户)应用程序有些担心。
建议使用官方存储库来安装任何类型的软件(我知道还有其他可能性,例如 ppas 等)。据我所知,此存储库中的应用程序不会针对特定的 Ubuntu 版本进行更新(例如,App A Ver 1.6 可在 Ubuntu 12.10 中使用,开发人员创建了版本 1.7(没有安全修复,只有功能更新)并且直到 Ubuntu 13.04 才会在官方存储库中提供)。有一些例外,例如 Firefox,但对于大多数应用程序,在 1 个 Ubuntu 迭代中没有(功能)更新。我还知道,有些发行版遵循滚动发布模型。您可以在发布后很快获得更新。缺点是稳定性。更新可能会破坏您的系统。
我只是想问一下,从技术角度来看,是什么导致了这种情况。据我所知,应该可以更新每种用户应用程序(Chromium、Gimp 等 - 所有不属于操作系统本身的应用程序),而不会破坏任何基本系统功能(就像在 Windows/Mac OS X 中一样,更新某些用户应用程序不太可能破坏您的系统)。
是否因为某些库存在向后兼容性问题?
例如,应用程序 X 需要库 A(版本 1.0)中的一项功能。应用程序 Y 需要库 A(版本 1.1)中的另一项功能。库 A 的开发人员决定删除特定功能,而该功能是应用程序 X 版本 1.1 中所需要的。如果用户安装了需要库 A 版本 1.1 的应用程序 Y,库 A 将从 1.0 更新到 1.1。在这种情况下,您将破坏应用程序 X 的功能。
- 这种情况有可能发生吗?
- Linux 中的库更新机制如何?更新会覆盖库的先前版本吗?
- 系统关键部分是否也使用用户应用程序中使用的库?(因此,如果库根据用户应用程序更新进行更新,是否会破坏系统功能?)
如果这种情况与图书馆无关,您能解释一下哪些可能的问题导致了这种情况吗?
谢谢你!
答案1
Ubuntu 不会在每次上游有更新时更新软件包有几个原因。下面列出了其中一些。
稳定: 许多用户都希望确保他们的系统能够正常工作,但每次更新软件时,都有可能出现问题。有些用户愿意接受这种风险来获得最新功能,而其他用户(比如我自己)则依赖计算机进行业务,因此如果计算机因某个新功能引入的 bug 而停止工作,我会非常沮丧,而我本来就不想使用这个新功能。
为了解决这个问题,Ubuntu 有两种版本:标准版本和长期稳定版 (LTS),我们这些坚持稳定性胜过功能的人只使用 LTS 版本,并且只在下一个 LTS 版本发布几个月后才升级到下一个 LTS 版本,以确保如果有任何问题,它已经经过足够多的人测试,问题将会被发现和修复。LTS 版本也往往比非 LTS 版本更不激进,因为下一个 LTS 版本和上一个 LTS 版本之间的差异很小:新想法在标准版本上进行测试。
对于那些不太关心稳定性的人来说,有普通版本。这可能最初会有更多的问题,但包含更多最新功能。如果你想要更新到最新版本,你可以从官方存储库以外的存储库安装软件,或者从源代码安装代码,但这会增加一些风险。
发布日期:最近发布的 Raring Ringtail 让人们兴奋不已,正如你所看到的Ubuntu 论坛上的这个帖子人们等着一发布就下载。这种活动让人们兴奋不已,有助于推广 Linux,尤其是 Ubuntu。如果软件定期更新,那么在最新版本和完全更新的旧版本之间就没有什么可选择的了。营销机会就会丧失。
图书馆和支持:当某个软件包更新以提供一些新功能时,它可能依赖于更新库中的某些功能。这需要更新库。但是,可能有数十个甚至数百个软件包使用此库,它们都需要与新版本的库一起使用。每个软件包都需要进行测试以确保其正常工作,不仅如此,它们还必须在所有受支持的版本中进行测试。Ubuntu 在很大程度上依赖于社区,但我们中有多少人有时间和技术能力来审查所有受支持版本中的所有更改是有限的。
出于这些原因,我们专注于现有版本的安全补丁和错误修复,并在开发版本中添加新功能。
答案2
除了其他答案哪个好:
通常不建议进行静态构建或使用非发布版本的库。
与 Windows 比较的直接反驳是,用户可能拥有 3 或 4 个不同版本的 msvcrt。用户只是看不到而已。
您可以针对 OSX 上的某些应用程序(可能发生静态构建或捆绑库)提出类似的论点。
例如,其他平台上有多少应用程序和设备附带了不仅是旧版本,而且是真正古老的 libpng 版本?