在传统的发布模型中,发布中的所有软件包都使用相同版本的编译器针对相同版本的库进行编译,并且发布团队会仔细选择可以很好地协同工作的软件版本,以避免冲突。
在 Gentoo 这样的滚动发布源代码发行版中,您可以根据系统中安装的库版本自行构建每个软件包,如果两个软件包依赖于同一库的不同版本,您可以将这些不同版本安装到不同的位置。因此,您有一个合理的机制来避免冲突。
最近我发现了 ArchLinux,另一个采用滚动发布模式的发行版,它基于二进制包。它似乎也不支持插槽。
现在我很困惑。使用 ArchLinux,如果我尝试安装一个依赖于与我已安装的库版本不同的库的软件包,会发生什么?我是否被迫升级该库?但是,如果两个软件包依赖于库的不同版本,会发生什么?
我查看了有关 pacman 的各种 ArchLinux Wiki 页面,但没有找到任何幕后解释。
答案1
在 Arch 中,具有明确版本的依赖关系很少见;大多数软件包只是希望安装依赖关系的最新版本。(用户不应该执行选择性升级,而是保持全部已安装最新版本的软件包。
在极少数情况下,需要两个具有不同 ABI 的版本,则可以将旧版本提供为不同名称的包 - 例如,libpng
(latest)、libpng14
(1.4)、libpng12
(1.2)。