是否有任何专注于二进制向后兼容性的 Linux 发行版?

Esm*_*irk 4 linux compatibility distribution-choice

如果您构建的可执行文件可在当前版本的 Windows 上运行,则该可执行文件可能会在较新版本的 Windows 上运行多年。微软非常努力地确保这一点。

对于 Linux,人们期望您拥有正在使用的软件的源代码,因此只要您保持源代码兼容性,就可以破坏二进制兼容性。这导致发行版逐步淘汰旧的库版本,并定期破坏曾经可用的东西。

对于使用 Linux 作为游戏平台的人来说,这是一个问题,因为游戏往往仅以二进制形式分发。它使 Linux 端口在损坏时看起来很糟糕,但我感觉通常尝试解决这个问题会更有效率,而不是期望每个人都更新他们的端口。

是否有任何发行版试图保持二进制兼容性,不一定要保留所有旧版本,但至少保留旧的 sonames,以便与版本 n 一起使用的二进制文件也应与版本 n+1 一起使用?

我能找到的最接近的是 Valve 的“Steam Runtime”,这是一个二进制兼容层,仅适用于通过 Steam 分发的程序。

pet*_*rph 5

基本上这归结为:你不能保持二进制兼容性并引入新功能,因为这些东西在大多数方面都是直接对立的。如果您引入了主要的新功能,您最终必须更改 ABI(通常在 API 更改后不久)。现在,您可以使用版本化符号(例如 Glibc 具有的),但这会使库的大小增加(并且在将二进制文件加载到内存时也可能会导致一些性能损失),开发人员当然不想保留它库(遗留代码包含没有人有兴趣修复的错误)。

在分发端解决这个问题的常用方法有两个:

  1. 不要更改版本 - 这对于企业级发行版(按字母顺序)RedHat 和 SUSE 以及其他一些发行版(Debian、Slackware、Ubunty LTS 和可能的克隆)来说是典型的。

  2. 允许同时安装不同版本的库。

在应用程序分发器上,这与在 Windows 上的处理方式相同:将所需的所有内容都放入分发包中。是的,这是在 Windows 上经常使用的方式——这也是典型的 Windows 系统通常比具有相同功能的 Linux 具有高出数倍的磁盘空间要求的原因之一——应用程序只是在它们之间共享很少,并且在某处拥有自己的副本。您可以将其视为带有自己的 GTK/Qt 堆栈的每个 GTK/Qt 应用程序。它可以有一些优点,但缺点也很多。例如,从安全的角度来看,它是 Technicolor TM的噩梦。如果二进制文件是静态链接的,它甚至是全高清的。