在 Linux 中,为什么会有 libavcodec56、libavcodec57、libavcodec58 等软件包?更清楚一点,为什么没有像许多其他软件包一样有版本 56、57、58 的 libavcodec 软件包?为什么它们是全新的软件包?
答案1
xyz
大多数发行版一次只允许安装一个版本的软件包。如果libxyz
是一个库,同时使用不兼容的版本 1 和 2,它们就不能简单地将软件包命名为libxyz-1
和libxyz-2
,安装后者会删除前者。因此需要其他命名方案,以便您可以同时安装libxyz1-1.5
(upstream 1.5) 和libxyz2-2.1
(upstream 2.1)。这显然需要进一步区分软件包内容的各个文件名,但这是另一回事。
答案2
Linux 有一种版本控制机制,不需要重命名软件包。它用于glibc
,正如您在帖子中看到的那样
更新 glibc 到底会导致系统崩溃吗?。
但这需要开发人员做大量的工作,主要是glibc
必须向后支持其所有功能的所有以前版本。
没有多少开发人员可以保证支持他们所有的软件,包括现在的和过去的,或者投入与 相同的开发时间glibc
。
libavcodec56
等软件包libavcodec57
不保证向后支持,版本可能不完全兼容,因此使用它们的程序在更改版本时可能需要修改。版本名称不同就是最好的指示,这是设计使然。